You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:10:50