3. 按键控制LED亮灭
任务说明
本案例实现一个按键控制LED亮灭的完整闭环:通过GPIO读取按键输入状态,当按键按下时点亮LED,松开时熄灭LED。代码基于树莓派GPIO库(RPi.GPIO),采用轮询方式检测按键状态,不依赖外部中断,逻辑清晰且易于验证。
硬件连接
代码实现
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
# 引脚定义
BUTTON_PIN = 17 # 按键输入引脚(内部下拉)
LED_PIN = 27 # LED控制引脚
# GPIO初始化
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.output(LED_PIN, GPIO.LOW)
print("按键控制LED已启动,按 Ctrl+C 退出")
try:
while True:
# 读取按键状态
button_state = GPIO.input(BUTTON_PIN)
# 按键按下时点亮LED,松开时熄灭
if button_state == GPIO.HIGH:
GPIO.output(LED_PIN, GPIO.HIGH)
else:
GPIO.output(LED_PIN, GPIO.LOW)
# 短暂延时,避免CPU占用过高
time.sleep(0.05)
except KeyboardInterrupt:
print("\n程序已退出")
finally:
GPIO.cleanup()
运行与验证
运行方法:
sudo python3 button_led.py
验证步骤与判定标准:
- 运行程序后,观察终端无报错输出,程序进入循环等待状态;
- 按下按键(GPIO17与3.3V连通),LED应立即点亮;
- 松开按键,LED应立即熄灭;
- 重复按下/松开多次,LED状态始终跟随按键状态变化,即判定本案例通过。
预期输出:程序启动后终端显示“按键控制LED已启动,按 Ctrl+C 退出”,此后无其他输出,LED状态完全由按键控制。按下按键时LED亮,松开时LED灭。