☰
Raspberry Pi Pico 硬件开发 —— 第二课:MicroPython 从入门到项目实践(LED篇)
2026/10/7 2:40:31 网站建设 项目流程

大家好,欢迎来到本教程!上节课我们熟悉了 Raspberry Pi Pico H 开发板,学会了搭建 MicroPython 编译环境,也掌握了一些基础程序的编写方法。本章我们将学习如何通过 GPIO 口控制 LED 灯,一起动手实践吧!

文章目录

  • 一、配件功能介绍
    • Pico GPIO 引脚对照
  • 二、项目一:LED闪烁
    • 程序
  • 三、项目二:呼吸灯
    • 学习目标
    • 程序
  • 四、改变呼吸节奏(拓展1)
    • utime.sleep_ms()
    • 程序(1)
  • 五、模拟心跳(拓展2)
    • 模拟心跳效果
    • 程序(2)
  • 六、往期回顾

一、配件功能介绍

这次我们使用的是优信电子的 Pico 基础入门版学习套件,本文章以及后续教程基本会用到以下配件:

色环口诀
棕(1) 红(2) 橙(3) 黄(4) 绿(5) 蓝(6) 紫(7) 灰(8) 白(9) 黑(0)

这里说明一下电阻色环应该怎么看?本次用到的是四环电阻,以 330Ω 电阻举例:

通常:金色、银色是误差环,会与其他色环拉开一点距离,所以要把金色、银色放在最后读。

330Ω 色环电阻的颜色是橙橙棕金,前两位是数字,第三位是倍数,第四位是精度。由此可得,橙橙棕金表示 3 3 ×10,精度为 ±5%,对应上图口诀可得出橙橙棕金是 330Ω±5% 的电阻。

Pico GPIO 引脚对照

注意!
Pico使用3.3V逻辑电平!
不要直接连接5V信号到GPIO引脚,否则可能永久损坏芯片。USB供电为5V,但GPIO引脚仅支持3.3V输入/输出。

二、项目一:LED闪烁

本小节在上一篇文章中已有详细说明,这里只回顾一下基本的闪灯操作,如果有遗忘的可以回顾哦。点击此处:点亮第一个LED——闪烁与流水灯## 程序
上篇文章我们学习了如何在 MicroPython 上编写程序,点击此处 可以回顾。现在来看一下 LED 闪烁代码是怎么写的吧。

程序

from machineimportPin # 从 machine 模块中导入 Pin,用于控制 Pico 的GPIO引脚importutime # 导入 utime 时间模块,用于实现程序延时 led=Pin(15,Pin.OUT)# 将GPIO15设置为输出模式,并将这个GPIO对象保存到变量 ledwhileTrue:# 创建一个无限循环,只要程序不停止,就会一直执行下面的代码 led.value(1)#GPIO15输出高电平,LED点亮 utime.sleep(0.5)# 程序暂停0.5秒,让LED保持点亮状态 led.value(0)#GPIO15输出低电平,LED熄灭 utime.sleep(0.5)# 程序暂停0.5秒,让LED保持熄灭状态

现象

三、项目二:呼吸灯

既然会点亮闪烁了,那是不是就可以让led灯的状态更丰富些?
来到本文章的重点
呼吸灯

这里我们引入一个新的概念PWM。
那么什么是PWM呢?
PWM 是 脉冲宽度调制(Pulse Width Modulation)。
简单理解就是:让一个数字引脚快速地“开—关—开—关”,通过改变“开”的时间比例,来实现不同的输出效果。这个开的时间比例就是叫做占空比。

这里依旧是用GPIO15引脚进行测试。

学习目标

学习PWM脉冲宽度调制。
1、元件清单
Pico + 红色LED×1 + 330Ω电阻 + 面包板 + 跳线×2
2、接线示意图

该项目的供电电源来自USB口,PICO板上标记了数字的引脚都是GND,每个引脚所对应的功能各不相同,具体可看PICO引脚图。
注意:该图的电阻并不是实际的330欧电阻
3、工作原理
PWM通过快速切换高低电平来模拟0~100%的亮度。占空比(duty)越大,LED越亮。
duty_u16()范围0-65535对应0%-100%亮度。

程序

from machineimportPin,PWM# 从 machine 模块导入 Pin(GPIO引脚)和PWM(脉宽调制)功能importutime # 导入 utime 模块,用于实现延时 pwm=PWM(Pin(15))# 将GPIO15设置为PWM输出,并创建PWM对象 pwm.freq(1000)# 设置PWM频率为 1000Hz(即每秒输出1000个PWM周期)whileTrue:# 创建无限循环,让程序持续运行fordutyinrange(0,65535,512):# duty 从0开始,每次增加512,直到接近65535pwm.duty_u16(duty)# 设置PWM占空比,范围是0~65535utime.sleep_ms(10)# 延时10毫秒,让占空比逐渐增加fordutyinrange(65535,0,-512):# duty 从65535开始,每次减少512,直到接近0pwm.duty_u16(duty)# 设置PWM占空比,范围是0~65535utime.sleep_ms(10)# 延时10毫秒,让占空比逐渐减小

现象

我们已经学会利用PWM来控制实现呼吸灯的效果,那么是该上点挑战了!

四、改变呼吸节奏(拓展1)

utime.sleep_ms()

工作原理:
通过修改utime.sleep_ms()的数值,改变呼吸节奏快慢。

utime.sleep_ms()控制的是每次改变亮度后等待多长时间。

规律:
数值越小 → 亮度变化越快 → 呼吸越快
数值越大 → 亮度变化越慢 → 呼吸越慢

程序(1)

from machineimportPin,PWMimportutime pwm=PWM(Pin(15))pwm.freq(1000)whileTrue:fordutyinrange(0,65535,512):pwm.duty_u16(duty)utime.sleep_ms(1)# 延时1毫秒,让占空比逐渐增加fordutyinrange(65535,0,-512):pwm.duty_u16(duty)utime.sleep_ms(1)# 延时1毫秒,让占空比逐渐增加

现象

可以看到呼吸灯变快了,符合上述规律,如果想更慢就修改utime.sleep_ms()的参数。

五、模拟心跳(拓展2)

我们已经掌握了通过修改utime.sleep_ms()的数值,改变呼吸节奏快慢。那就可以来模仿心跳效果了。

模拟心跳效果

快速亮-微暗-再亮-熄灭循环往复

程序(2)

from machineimportPin,PWMimportutime pwm=PWM(Pin(15))pwm.freq(1000)whileTrue:pwm.duty_u16(0)#LED熄灭 utime.sleep_ms(200)# 熄灭 200ms pwm.duty_u16(65535)# 第一次快速亮到最亮 utime.sleep_ms(80)# 保持最亮 80ms pwm.duty_u16(20000)# 第一次跳动后变成微暗 utime.sleep_ms(100)# 微暗保持 100ms pwm.duty_u16(65535)# 第二次快速亮到最亮 utime.sleep_ms(100)# 保持最亮 100ms pwm.duty_u16(0)# 熄灭 utime.sleep_ms(600)# 停顿 600ms,等待下一次心跳

现象

这样就呈现模拟心跳的效果了。

如果想让心跳更明显、更像人体心跳,可以把最后的:

utime.sleep_ms(600)

改成

utime.sleep_ms(400)# 心跳更快

或者

utime.sleep_ms(800)# 心跳更慢

这里和前面的“呼吸灯”不同,不需要连续改变duty,而是直接改变几个亮度等级,所以会产生“砰-砰……砰-砰”的心跳感觉。

六、往期回顾

第一课:Raspberry Pi Pico 硬件开发(入门篇)

如果文章中有不足之处,欢迎大家批评指正,也欢迎在评论区交流讨论。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询