weixin_50697999 2021-09-06 11:52 采纳率: 73.7%
浏览 31
已结题

esp32+micropython环境 请问如何实现按键切换灯串效果啊?

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
  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-09-08 10:02
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?