Can';似乎无法让uasyncio在PyBoard的micropython脚本中工作
我正在设计一个新的计时/记分器,用于使用PyBoard作为基础的空中曲棍球桌。我的计划是使用TM1627(4x7seg)进行时间显示,旋转编码器(带按钮)设置时间,IR和两个7Seg用于计分,IR反射器传感器用于球门,继电器控制风扇 当我专注于读取传感器时,我正试图将时钟分割成自己的线程,这让我很头疼。我想我可以使用uasyncio很好地分割所有内容,但我不知道在哪里放置指令来为时钟和传感器分离线程 现在执行时,旋转编码器似乎被分配了默认值,没有启动计时器,编码器没有设置时间,并且程序相当快地将控制权返回到REPL 在尝试异步之前,我让旋转编码器和定时器工作得很好。现在,没那么多了Can';似乎无法让uasyncio在PyBoard的micropython脚本中工作,python,python-asyncio,micropython,Python,Python Asyncio,Micropython,我正在设计一个新的计时/记分器,用于使用PyBoard作为基础的空中曲棍球桌。我的计划是使用TM1627(4x7seg)进行时间显示,旋转编码器(带按钮)设置时间,IR和两个7Seg用于计分,IR反射器传感器用于球门,继电器控制风扇 当我专注于读取传感器时,我正试图将时钟分割成自己的线程,这让我很头疼。我想我可以使用uasyncio很好地分割所有内容,但我不知道在哪里放置指令来为时钟和传感器分离线程 现在执行时,旋转编码器似乎被分配了默认值,没有启动计时器,编码器没有设置时间,并且程序相当快地将
from rotary_irq_pyb import RotaryIRQ
from machine import Pin
import tm1637
import utime
import uasyncio
async def countdown(cntr):
# just init min/sec to any int > 0
min = sec = 99
enableColon = True
while True:
# update the 4x7seg with the time remaining
min = abs(int((cntr - utime.time()) / 60))
sec = (cntr - utime.time()) % 60
#print(str(), str(sec), sep=':' )
enableColon = not enableColon # alternately blink the colon
tm.numbers(min, sec, colon = enableColon)
if(min + sec == 0): # once both reach zero, break
break
await uasyncio.sleep(500)
X1 = pyb.Pin.board.X1
X2 = pyb.Pin.board.X2
Y1 = pyb.Pin.board.Y1
Y2 = pyb.Pin.board.Y2
button = pyb.Pin(pyb.Pin.board.X3, pyb.Pin.IN)
r = RotaryIRQ(pin_num_clk=X1,
pin_num_dt=X2,
min_val=3,
max_val=10,
reverse=False,
range_mode=RotaryIRQ.RANGE_BOUNDED)
tm = tm1637.TM1637(clk = Y1, dio = Y2)
val_old = val_new = 0
while True:
val_new = r.value()
if(val_old != val_new):
val_old = val_new
print(str(val_new))
if(button.value()): # save value as minutes
loop = uasyncio.get_event_loop()
endTime = utime.time() + (60 * val_new)
loop.create_task(countdown(endTime))
r.close() # Turn off Rotary Encoder
break
#loop = uasyncio.get_event_loop()
#loop.create_task(countdown(et))
#loop.run_until_complete(countdown(et))
我相信这很简单,但这是我编写的第一个非clipython脚本,所以我肯定会有很多愚蠢的错误。任何帮助都将不胜感激。因为没有人回复,我会问您是否也尝试过