Pyboard:按下USR按钮时更改LED颜色

时间:2019-12-15 11:53:24

标签: python callback switch-statement iot led

我得到了这个板Pyboard D-series,该板具有内部LED二极管,具有三种不同的颜色。 我的目标是让它改变按钮按下时的LED颜色,因此基本上是,如果您第一次按下,红色变成红色,第二次指示灯变成绿色,第三次指示灯变成蓝色,而第四次我希望它(重置”),然后变回红色。

我尝试根据我在网上找到的东西来制作此功能,但是它似乎没有用。

我是IoT和micropython的新手,所以我可能缺少一些重要的东西,但不知道是什么。

谢谢您的建议

from pyb import Switch
from pyb import LED


led_R = LED(1)
led_G = LED(2)
led_B = LED(3)
# 1=red, 2=green, 3=blue

sw = pyb.Switch()

def cycle():
    counter = 0
    buttonState = ''
    buttonState = sw.value()
    print(buttonState)
    if buttonState == True:
        counter = counter + 1
        print(counter)

    elif counter == 0:
        led_R.off() 
        led_G.off() 
        led_B.off() 

    elif counter == 1:
        led_R.on() 
        led_G.off() 
        led_B.off()

    elif counter == 2:
        led_R.off() 
        led_G.on() 
        led_B.off() 

    elif counter == 3:
        led_R.off() 
        led_G.off() 
        led_B.on()

    else:
        counter = 0

sw.callback(cycle())

1 个答案:

答案 0 :(得分:0)

当按钮状态从关闭转变为打开时,将调用您的回调周期

在回调中sw.value()始终会评估为true,因此对其进行检查没有任何意义。

您的计数器应在回调之外初始化

from pyb import Switch
from pyb import LED


led_R = LED(1)
led_G = LED(2)
led_B = LED(3)
# 1=red, 2=green, 3=blue

sw = pyb.Switch()
counter = 0

def cycle():
    counter = counter + 1
    if counter == 4:
        counter = 0
    print(counter)

    if counter == 0:
        led_R.off() 
        led_G.off() 
        led_B.off() 

    elif counter == 1:
        led_R.on() 
        led_G.off() 
        led_B.off()

    elif counter == 2:
        led_R.off() 
        led_G.on() 
        led_B.off() 

    elif counter == 3:
        led_R.off() 
        led_G.off() 
        led_B.on()


sw.callback(cycle())