我在黔驴技穷就在这里。我使用的是2个不同的传感器。当第一传感器被触发,我想闪烁黄色LED每秒钟一次。当第二传感器被触发,我想闪烁红色LED每秒两次。我能做到这一次一个,这是确定的,但我不能使这个过程重复(如,我将触发第一传感器和黄色LED模式会玩,但触发该传感器又没有效果。我不能触发其他传感器或者除非我关闭程序并重新启动。请注意下面的代码是在Micropython上ESP8266-12E。
import uasyncio as asyncio
import machine
import time
import os
# Yellow LED: Pin 15
Y_LED = machine.PWM(machine.Pin(15))
Y_LED.freq(300)
# Red LED: Pin 2
R_LED = machine.PWM(machine.Pin(2))
R_LED.freq(300)
H2_1 = machine.Pin(9, machine.Pin.IN, machine.Pin.PULL_UP)
H2_2 = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)
async def FlashRed():
for i in range (20):
R_LED.duty(1023)
await asyncio.sleep(0.5)
R_LED.duty(0)
await asyncio.sleep(0.5)
async def FlashYellow():
for i in range (10):
Y_LED.duty(1023)
await asyncio.sleep(1)
Y_LED.duty(0)
await asyncio.sleep(1)
loop = asyncio.get_event_loop()
def Check_Button():
while True:
if H2_1.value():
loop.create_task(FlashRed())
loop.run_forever()
if H2_2.value():
loop.create_task(FlashYellow())
loop.run_forever()
time.sleep(0.1)
while True:
Check_Button()
我想为主板显示闪烁的红色LED时销9为高,然后显示闪烁的红色LED直到销9是低的。
我也喜欢板显示一个闪烁的黄色LED时引脚4为高,同样地,显示闪烁的黄色LED,直到销4是低的。
我想能够同时或独立地同时触发销9红色图案和销4黄色LED图案。
目前,我只能做一个或另一个。板等待来自任一销9或4的输入,这是很大的。当销9变高时,电路板正确显示红色LED闪烁图案。模式重复10次,这是很大的。但随后,该模式结束后,我不能再启动它,我也不能启动黄色的LED闪烁模式。如果我开始与黄色的图案,我不能重新启动黄色的图案,我无法启动红色图案。我不得不退出脚本,并重新开始。
循环Check_Button()不是为我工作。
任何帮助都将不胜感激。谢谢!
你不想打电话给run_forever
如果你有更多的事情要做,因为它会从字面上永远运行循环,即使在创建任务完成。
我不能对此进行测试,但你可以尝试这样的事:
async def Check_Button():
while True:
if H2_1.value():
loop.create_task(FlashRed())
if H2_2.value():
loop.create_task(FlashYellow())
await asyncio.sleep(0.1)
loop.run_until_complete(Check_Button())