树莓派控制LED灯
树莓派控制LED灯
带你从零开始,使用树莓派实现对LED灯的基础控制(亮、灭、闪烁),涵盖硬件准备、连接、系统配置及代码编写全流程,适合树莓派新手入门实践。
一、准备工作:所需硬件与工具
树莓派控制LED灯的核心是通过GPIO引脚输出电信号,硬件需求简单且成本较低,具体清单如下:
核心设备:树莓派3B+主板(系统推荐预装Raspbian Buster或更新版本,兼容性更佳)、Micro SD卡(≥16GB,建议Class 10高速卡以保障系统流畅运行)、电源适配器(需匹配3B+供电需求,标准为5V 2.5A,避免使用低功率电源导致设备不稳定)
控制组件:LED灯1个(颜色不限)、220Ω限流电阻1个(防止电流过大烧毁LED)、杜邦线3根(2根公对母、1根公对公,或根据连接方式调整)、面包板1个
辅助工具:电脑(用于远程连接树莓派或直接操作)、SSH工具、键盘鼠标(直接操作树莓派时使用)
二、硬件连接:GPIO引脚与LED的正确接线
接线前需先明确树莓派的GPIO引脚编号规则,推荐使用“BCM编号”(树莓派系统默认编号方式)

以下为具体步骤:
1. 树莓派3B+ GPIO管脚特性与编号
树莓派3B+配备40针GPIO扩展接口,其管脚核心特性包括:支持3.3V数字输入/输出、部分管脚具备PWM(脉冲宽度调制)、I2C(串行通信)、SPI(同步串行接口)等扩展功能,满足不同场景的控制需求。
树莓派3B+核心管脚定位(BCM编号):将树莓派主板GPIO接口朝向自己,采用BCM编号规则。
关键管脚:3.3V电源、GND接地、BCM17控制管脚。
2. 具体接线步骤(以BCM17引脚为例)
断电操作:确保树莓派处于断电状态,避免接线时短路烧毁设备。
LED与电阻连接:LED灯有正负极之分,长引脚为正极,短引脚为负极。将220Ω电阻的一端与LED灯的负极连接。
连接树莓派GND:取一根杜邦线,一端连接电阻的另一端,另一端连接树莓派的GND管脚。
连接控制引脚:取另一根杜邦线,一端连接LED灯的正极,另一端连接树莓派的BCM17管脚。
接线核心逻辑:树莓派BCM17引脚输出电信号→LED正极接收信号→电流经LED负极流向电阻(限流保护)→最终通过GND引脚回流树莓派,形成闭合回路。接线完成后,再次检查各组件连接是否与上述示意图一致,确认无误后再为树莓派通电。
三、系统配置:启用GPIO与准备编程环境
树莓派默认支持GPIO控制,需确保系统已启用相关功能,并安装Python编程环境(Raspbian系统已预装Python,无需额外安装)。
1. 启用GPIO权限(可选)
若使用普通用户操作GPIO,需将用户加入gpio用户组,避免权限错误:
打开树莓派终端(直接操作时点击桌面终端图标,远程连接时通过SSH登录)。
执行命令:
sudo usermod -aG gpio pi(pi为默认用户名,若修改过需替换)。重启树莓派使权限生效:
sudo reboot。
2. 安装GPIO控制库(可选)
使用Python控制GPIO最常用的库为RPi.GPIO,系统默认已预装,若未安装可执行以下命令:
在终端输入:sudo apt-get update && sudo apt-get install python3-rpi.gpio -y(适用于Python3,当前主流版本)。
四、代码编写:实现LED灯的基础控制
我们将编写两个基础程序,分别实现LED灯“点亮”,“熄灭”,“循环闪烁”功能,你可通过终端直接编写代码或使用Python编辑器。
1. 基础功能:LED灯点亮与熄灭
打开终端,输入
vi led_on_off.py,创建并编辑Python文件。复制粘贴以下代码,代码中已添加详细注释:
import RPi.GPIO as GPIO # 导入GPIO控制库
import time # 导入时间库,用于延时
# 配置GPIO模式
GPIO.setmode(GPIO.BCM) # 使用BCM引脚编号方式
LED_PIN = 17 # 定义LED连接的BCM引脚(与接线一致)
# 设置引脚为输出模式
GPIO.setup(LED_PIN, GPIO.OUT)
try:
print("LED点亮(按Ctrl+C退出)")
GPIO.output(LED_PIN, GPIO.HIGH) # 引脚输出高电平,LED点亮
while True: # 无限循环保持点亮状态
time.sleep(1)
except KeyboardInterrupt: # 捕获Ctrl+C中断信号
print("程序退出")
finally:
GPIO.cleanup() # 清理GPIO资源,避免引脚状态异常- 运行程序:在终端输入
python3 led_on_off.py,此时LED灯应点亮;按Ctrl+C可停止程序,LED熄灭。
2. 进阶功能:LED灯循环闪烁
创建新文件:
vi led_blink.py。编写闪烁代码,核心逻辑为“高电平点亮→延时→低电平熄灭→延时”循环:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
LED_PIN = 17
GPIO.setup(LED_PIN, GPIO.OUT)
try:
print("LED开始闪烁(按Ctrl+C退出)")
while True:
GPIO.output(LED_PIN, GPIO.HIGH) # 点亮
time.sleep(1) # 保持1秒
GPIO.output(LED_PIN, GPIO.LOW) # 熄灭
time.sleep(1) # 保持1秒
except KeyboardInterrupt:
print("程序退出")
finally:
GPIO.cleanup()- 运行程序:
python3 led_blink.py,LED灯将以1秒为间隔循环闪烁;按Ctrl+C退出。
五、常见问题与排查方法
- 问题1:程序运行无报错,但LED不亮排查接线:确认LED正负极未接反,电阻连接正常,杜邦线未松动,管脚与代码中LED_PIN定义的BCM17一致。
六、拓展方向
掌握基础控制后,可尝试以下进阶功能:
通过按钮控制LED的亮灭(需增加按键和上拉电阻)。
使用手机APP远程控制LED(结合Flask框架或MQTT协议)。
实现LED呼吸灯效果(通过PWM脉冲宽度调制控制亮度渐变)。