Raspberry Pi Pico H项目中函数内用time.sleep触发语法错误求助
Raspberry Pi Pico H 摩尔斯电码LED程序语法错误解决
我尝试使用Raspberry Pi Pico H开发板制作文本转摩尔斯电码的项目,通过板载LED闪烁表示点和划,需要按特定间隔控制LED熄灭。
首先编写了一段LED无限闪烁的程序,运行符合预期:
from machine import Pin import time onboardLED = Pin(25, Pin.OUT) def LED1(): { onboardLED.value(1) } def LED0(): { onboardLED.value(0) } on = LED1 off = LED0 x = 1 while x < 2: on() time.sleep(0.1) off() time.sleep(0.1)
随后新增点(DOT)和划(DASH)的闪烁逻辑函数时,始终在第21行(DOT函数内的time.sleep(1))收到语法错误,怀疑是函数内使用time.sleep导致的问题:
from machine import Pin import time onboardLED = Pin(25, Pin.OUT) def LED1(): { onboardLED.value(1) } def LED0(): { onboardLED.value(0) } on = LED1 off = LED0 def DOT(): { on() time.sleep(1) off time.sleep(1) } def DASH(): { on() time.sleep(2.5) off() time.sleep(1) } dot = DOT dash = DASH
错误原因及修正方案
语法错误和time.sleep无关,问题出在两处:
- Python函数体不能用大括号
{}:Python依靠缩进划分代码块,大括号是其他编程语言的语法,放在Python函数中会直接触发语法错误。 - DOT函数内的
off未加调用括号:off是指向LED0函数的变量,必须通过off()才能执行关闭LED的操作,仅写off只是引用变量,不会产生任何动作。
修正后的完整代码:
from machine import Pin import time onboardLED = Pin(25, Pin.OUT) def LED1(): onboardLED.value(1) def LED0(): onboardLED.value(0) on = LED1 off = LED0 def DOT(): on() time.sleep(1) off() time.sleep(1) def DASH(): on() time.sleep(2.5) off() time.sleep(1) dot = DOT dash = DASH
如果需要测试功能,可以在代码末尾添加dot()或dash()调用,就能看到LED对应闪烁效果。
内容的提问来源于stack exchange,提问作者SleepyTheSloth
相关产品推荐
相关产品推荐

