esp32+micropython环境
请问如何实现按键切换灯串效果啊?
一个gpio引脚做按键 一个gpio引脚做灯
几个效果的方法已经写好了
效果:按一下按键,响应一个效果,再按一下切换下一个效果如此循环。
问题:其中有三个效果使用循环语句写的,没办法跳出循环,就没办法切换效果。请问判断按键按下的语句要写在哪里才能实现切换?
下面是我的代码:请大神看下问题所在!
from machine import Pin,PWM,Timer
import time
def led_on():
print('led_on')
led.value(1)
def led_off():
print('led_off')
led.value(0)
def led_huxi():
print('led_huxi')
pwm = PWM(led)
pwm.freq(1000)
for duty in range(0,800,10):
pwm.duty(duty)
time.sleep_ms(10 )
for duty in range(800,0,-10):
pwm.duty(duty)
time.sleep_ms(10)
def led_shan():
print('led_shan')
led.value(1)
time.sleep_ms(1000)
led.value(0)
def led_sos():
print('led_sos')
for i in range(3):
led.value(1)
time.sleep_ms(100)
led.value(0)
time.sleep_ms(100)
for i in range(3):
led.value(1)
time.sleep_ms(500)
led.value(0)
time.sleep_ms(500)
for i in range(3):
led.value(1)
time.sleep_ms(100)
led.value(0)
time.sleep_ms(100)
def key_control(key):
global state
time.sleep_ms(10)
if key.value() == 1:
return
while key.value() == 0:
pass
state += 1
if state == 1:
led_on()
elif state == 2:
led_huxi()
elif state == 3:
led_shan()
elif state == 4:
led_sos()
elif state == 5:
led_off()
elif state == 6:
state = 0
led = Pin(5,Pin.OUT)
led.value(0)
key = Pin(18,Pin.IN,Pin.PULL_UP)
state = 0
key.irq(key_control,Pin.IRQ_FALLING