Can';似乎无法让uasyncio在PyBoard的micropython脚本中工作

Can';似乎无法让uasyncio在PyBoard的micropython脚本中工作,python,python-asyncio,micropython,Python,Python Asyncio,Micropython,我正在设计一个新的计时/记分器,用于使用PyBoard作为基础的空中曲棍球桌。我的计划是使用TM1627(4x7seg)进行时间显示,旋转编码器(带按钮)设置时间,IR和两个7Seg用于计分,IR反射器传感器用于球门,继电器控制风扇 当我专注于读取传感器时,我正试图将时钟分割成自己的线程,这让我很头疼。我想我可以使用uasyncio很好地分割所有内容,但我不知道在哪里放置指令来为时钟和传感器分离线程 现在执行时,旋转编码器似乎被分配了默认值,没有启动计时器,编码器没有设置时间,并且程序相当快地将

我正在设计一个新的计时/记分器,用于使用PyBoard作为基础的空中曲棍球桌。我的计划是使用TM1627(4x7seg)进行时间显示,旋转编码器(带按钮)设置时间,IR和两个7Seg用于计分,IR反射器传感器用于球门,继电器控制风扇

当我专注于读取传感器时,我正试图将时钟分割成自己的线程,这让我很头疼。我想我可以使用uasyncio很好地分割所有内容,但我不知道在哪里放置指令来为时钟和传感器分离线程

现在执行时,旋转编码器似乎被分配了默认值,没有启动计时器,编码器没有设置时间,并且程序相当快地将控制权返回到REPL

在尝试异步之前,我让旋转编码器和定时器工作得很好。现在,没那么多了

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脚本,所以我肯定会有很多愚蠢的错误。任何帮助都将不胜感激。

因为没有人回复,我会问您是否也尝试过