Fråga om raspberry pi pico och ett micropython problem
Jag försöker lära mig raspberry pi pico och betar igenom boken "Get started with micro python on raspberry pi pico". I ett exempel ska man simulera trafikljus med ett övergångsställe där man kan trycka på en knapp för att det ska slå om till rött ljus. Koden ser ut nedan. Ett problem som uppkommer är att tryckknappen fungerar en gång och summern ger då ljud ifrån sig men samtidigt får jag den här felkoden och sen funkar inte knappen mer.
Unhandled exception in thread started by <function button_reader_thread at 0x200117d0>
Traceback (most recent call last):
File "<stdin>", line 18, in button_reader_thread
NameError: name 'button' isn't defined
Någon som har någon ide om vad som är fel? Koden är direkt kopierad ifrån boken men det är ju möjligt att författarna har missat något.
import machine
import utime
import _thread
led_red = machine.Pin(15, machine.Pin.OUT)
led_amber = machine.Pin(14, machine.Pin.OUT)
led_green = machine.Pin(13, machine.Pin.OUT)
button = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
buzzer = machine.Pin(12, machine.Pin.OUT)
global button_pressed
button_pressed = False
def button_reader_thread():
global button_pressed
while True:
if button.value() == 1:
button_pressed = True
#utime.sleep(1)
_thread.start_new_thread(button_reader_thread, ())
while True:
if button_pressed == True:
led_red.value(1)
for i in range(10):
buzzer.value(1)
utime.sleep(0.2)
buzzer.value(0)
utime.sleep(0.2)
global button_pressed
button_pressed = False
led_red.value(1)
utime.sleep(5)
led_amber.value(1)
utime.sleep(2)
led_red.value(0)
led_amber.value(0)
led_green.value(1)
utime.sleep(5)
led_green.value(0)
led_amber.value(1)
utime.sleep(5)
led_amber.value(0)