You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求适用于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:33:30