Fråga om raspberry pi pico och ett micropython problem

Permalänk
Medlem

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)

Permalänk
Datavetare
Skrivet av Tallrot:

def button_reader_thread(): global button # <-- DENNA RAD SAKNAS global button_pressed while True: if button.value() == 1: button_pressed = True #utime.sleep(1)

Sen ser jag inte riktigt poängen med "global button_pressed" som är precis ovanför raden med "button_pressed = False", den fyller ingen funktion.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer