3. GPIO控制LED实现本地逻辑
任务目标
在本案例中,你将通过GPIO(通用输入输出)引脚控制一个LED以固定频率闪烁,从而理解边缘AI设备最基本的数字输出操作。该操作是后续驱动传感器(输入)和执行器(输出)的基础。
硬件与依赖
- 硬件:树莓派(Raspberry Pi 3B/4B/Zero 2W 均可)、1个LED、1个220Ω限流电阻、面包板及跳线。
- 接线:LED阳极(长脚)串联电阻后连接至树莓派BCM编号的GPIO 17(物理引脚11);LED阴极(短脚)连接GND(物理引脚6)。
- 软件依赖:Python 3 +
RPi.GPIO库(树莓派系统通常预装,若未安装执行sudo pip3 install RPi.GPIO)。
关键完整代码
以下代码实现了LED以1秒间隔(0.5秒亮,0.5秒灭)连续闪烁,并在收到键盘中断时清理GPIO状态后退出。
import RPi.GPIO as GPIO
import time
LED_PIN = 17 # BCM编号
# 初始化GPIO模式与引脚
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.LOW)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH) # LED点亮
time.sleep(0.5)
GPIO.output(LED_PIN, GPIO.LOW) # LED熄灭
time.sleep(0.5)
except KeyboardInterrupt:
pass # 捕获Ctrl+C,进入清理流程
finally:
GPIO.cleanup() # 释放引脚,恢复默认状态
运行与验证
- 将上述代码保存为
led_blink.py。 - 在树莓派终端中运行:
python3 led_blink.py - 通过条件:观察LED以约0.5秒间隔稳定闪烁;按
Ctrl+C终止程序后,LED立即熄灭(说明GPIO已被正确清理)。
常见问题
- 引脚编号错误:确认代码中使用的是BCM 17,而非物理引脚17(物理引脚17为3.3V电源)。
- LED不亮:检查LED极性是否接反(长脚接GPIO侧),以及电阻是否串联在回路中。
- 权限错误:若提示无法访问GPIO,尝试
sudo python3 led_blink.py。
上图展示了GPIO 17经限流电阻驱动LED、再返回GND的完整回路。程序通过交替将引脚置为高电平(3.3V)和低电平(0V),即可控制LED亮灭,实现本地逻辑输出。