寻求适用于Ubuntu 23.10系统Raspberry Pi 5的Python GPIO脚本帮助
在Ubuntu系统的Raspberry Pi 5上实现GPIO按钮检测
RPi.GPIO确实不支持Raspberry Pi 5,推荐使用gpiod(Linux GPIO用户空间工具)来实现GPIO操作,以下是在Ubuntu上的可行方案:
1. 安装依赖
首先安装gpiod工具和Python绑定:
sudo apt update && sudo apt install gpiod python3-gpiod
2. 确认GPIO线路信息
运行以下命令确认GPIO 2对应的芯片和线路编号:
gpiodetect
Raspberry Pi 5通常会显示gpiochip0,接着查看该芯片的线路详情:
gpioinfo gpiochip0
找到编号为2的线路(通常标注为GPIO2)。
3. Python检测按钮的示例程序
以下程序会监听GPIO 2的按钮按下事件(假设按钮一端接GPIO2,另一端接GND,按下时引脚电平变低):
import gpiod import time # 定义GPIO芯片和线路编号 CHIP_NAME = "gpiochip0" LINE_NUMBER = 2 # 初始化芯片和线路 chip = gpiod.Chip(CHIP_NAME) line = chip.get_line(LINE_NUMBER) # 设置线路为输入,启用下拉电阻(避免引脚悬空) config = gpiod.LineSettings() config.set_direction(gpiod.LINE_DIRECTION_INPUT) config.set_bias(gpiod.LINE_BIAS_PULL_UP) # 请求线路 line.request(consumer="button_test", settings=config) try: print("等待按钮按下...") while True: # 检测电平变化:按下时电平为低 if not line.get_value(): print("pressed button") # 防抖:等待按钮释放 while not line.get_value(): time.sleep(0.01) time.sleep(0.01) except KeyboardInterrupt: print("\n程序终止") finally: line.release() chip.close()
运行程序
因为访问GPIO需要root权限,执行:
sudo python3 button_test.py
接线说明
- 按钮一端连接Raspberry Pi 5的GPIO2引脚
- 按钮另一端连接GND引脚
如果你的按钮是接3.3V而非GND,只需修改程序中的config.set_bias(gpiod.LINE_BIAS_PULL_DOWN),并将电平检测条件改为if line.get_value():即可。
内容的提问来源于stack exchange,提问作者Jerry Ockwig
相关产品推荐
相关产品推荐

