news 2026/8/25 14:59:43

python 如何控制gpio

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python 如何控制gpio

控制GPIO的方式涵盖: 运用RPi.GPIO库, 运用GPIO Zero库, 设定引脚模式, 读取与写入引脚状态, 运用中断处理。其中, RPi.GPIO库属较常用的方法之一, 缘由是它给予了对Pi上GPIO引脚的详尽控制。在详尽阐述RPi.GPIO库之前, 让我们先知晓控制GPIO的基础要点。

一、RPi.GPIO 库

一个专门用以在Pi上对GPIO引脚予以控制的库是RPi.GPIO , 其优点涵盖简单具备易使用性、功能有着全面性、社区给予强大支持, 以下属于运用RPi.GPIO库操控GPIO引脚的具体步骤。

1、安装 RPi.GPIO 库

RPi.GPIO库一般是预先安装于操作系统里的。要是并没有预先安装, 能够借助以下命令来进行安装:

sudo apt-get update

sudo apt-get install python3-rpi.gpio

2、设置引脚模式

在将操作 GPIO 引脚予以启动之前, 要对引脚的模式进行设定。这涵盖选用所采用的引脚编号系统, 也就是 BCM 或者 BOARD, 并且对引脚的输入或者输出模式加以设定。

import RPi.GPIO as GPIO

使用 BCM 编号系统

GPIO.setmode(GPIO.BCM)

设置引脚 18 为输出模式

GPIO.setup(18, GPIO.OUT)

3、读取和写入引脚状态

将引脚模式进行设置之后, 能够对输入引脚的状态展开读取, 或者针对输出引脚的状态去实施写入操作。

# 将引脚 18 设置为高电平

GPIO.output(18, GPIO.HIGH)

读取引脚 18 的状态

input_state = GPIO.input(18)

print("引脚 18 的状态:", input_state)

4、使用中断处理

引脚状态一旦产生变化, 就能够自动执行特定的用于回调的函数, 这个执行过程是在中断处理的时候被允许的, 而此种情况对于那些有着实时响应需求的应用而言是极为有用的。

# 定义回调函数

def my_callback(channel):

print("边缘检测到,通道:", channel)

设置引脚 18 的中断处理

GPIO.add_event_detect(18, GPIO.BOTH, callback=my_callback)

5、清理 GPIO 设置

程序结束之际, 需清理 GPIO 设置, 如此方可避免对别的程序造成影响。

GPIO.cleanup()

二、GPIO Zero 库

GPIO Zero是一个高级库, 其目的在于简化对GPIO引脚的控制, 它为常见的硬件设备进行了更高级的抽象, 它适合初学者以及快速开发。

1、安装 GPIO Zero 库

跟RPi.GPIO相类似, GPIO Zero一般是预先安装在操作系统里的。要是没有做预先安装这件事, 那么能够借助以下这般命令来完成安装:

sudo apt-get update

sudo apt-get install python3-gpiozero

2、控制 LED

GPIO Zero给出了针对常见硬件装置的高级抽象, 举例来说, 操控LED仅仅需要几行代码:

from gpiozero import LED

from time import sleep

led = LED(18)

while True:

led.on()

sleep(1)

led.off()

sleep(1)

3、读取按钮输入

读取按钮输入同样简单:

from gpiozero import Button

button = Button(2)

button.wait_for_press()

print("按钮被按下!")

三、项目应用案例

1、智能家居控制系统

利用Pi以及, 能够搭建出一个简易的智能家居控制系统。仿若, 借助 GPIO 引脚操控灯光、风扇等装置的开关。

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18, GPIO.OUT)

try:

while True:

command = input("输入 'on' 打开灯,输入 'off' 关闭灯:")

if command == "on":

GPIO.output(18, GPIO.HIGH)

elif command == "off":

GPIO.output(18, GPIO.LOW)

else:

print("无效指令!")

except KeyboardInterrupt:

pass

finally:

GPIO.cleanup()

2、环境监测系统

在使传感器去连接 Pi 的 GPIO 引脚的过程当中, 那么便能够去建立起一个可进行环境监测的这样的系统。比如说, 采纳 DHT11 传感器来对温度以及湿度予以监测。

import Adafruit_DHT

DHT_SENSOR = Adafruit_DHT.DHT11

DHT_PIN = 4

while True:

humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)

if humidity is not None and temperature is not None:

print("温度={0:0.1f}C 湿度={1:0.1f}%".format(temperature, humidity))

else:

print("传感器故障,请检查连接")

time.sleep(2)

四、注意事项

1、电压和电流限制

Pi的GPIO引脚, 其电压限制较低,是3.3V, 其电流限制也较低, 是16mA。所以, 在连接外部设备的时候, 要注意这些限制, 以免损坏引脚或者设备。

2、使用中间继电器

倘若关乎需对高电压进行把控或是负责大电流的装置设施, 能够运用中间继电器或者光耦合器, 如此这般便可以确保Pi跟高电压设备彼此之间实现隔离, 进而提升系统的安全性。

3、调试和测试

硬件连接以及编程开展之际, 建议最先着手调试与测试。能够运用LED以及按钮等简易硬件予以初步测试, 借此确保GPIO引脚功能正常无误。

五、总结

借助本文给出的介绍, 我们清楚了怎样去利用控制GPIO引脚, 这里涵盖RPi.GPIO库, 还有GPIO Zero库, 并且包括设置引脚模式, 以及读取跟写入引脚状态, 另外还有使用中断处理等情况。在掌握这些基础操作之后, 能够依照实际提出的需求去构建各种各样基于Pi的智能硬件项目。

具体到项目管理范畴内, 推荐选用研发项目管理系统, 还有通用项目管理软件, 它们能够助力于高效地组织以及妥善地操控项目任务, 进而提升开发相关的效率。

经过持续的实践以及学习, 您会具备熟练运用控制 GPIO 引脚的能力, 进而构建出各类有意思且实用的硬件项目。祝愿您在学习与开发历程中收获成功!

相关问答FAQs:

1. 如何在中控制GPIO引脚?

2. 如何将GPIO引脚设置为输入模式?

3. 如何将GPIO引脚设置为输出模式?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 14:59:40

源码编译安装 yosys 在 ubuntu 上

1. 安装依赖 1.1. 安装常用依赖 $ sudo apt-get install gawk git make python3 lld bison clang flex \libffi-dev libfl-dev libreadline-dev pkg-config tcl-dev zlib1g-dev \graphviz xdot1.2. 安装 gtest sudo apt install libgtest-dev libgmock-dev2. 编译 yosys 下…

作者头像 李华
网站建设 2026/8/25 14:54:02

请求绑定 binding(binding/ 包)

1.1 Binding 接口源码位置:binding/binding.go:30-35// Binding describes the interface which needs to be implemented for binding the // data present in the request such as JSON request body, query parameters or // the form POST. type Binding interface {Name()…

作者头像 李华
网站建设 2026/8/25 14:53:36

4GDTU支持哪些协议?

在工业物联网(IIoT)和智能终端设备中,4G DTU(4G Data Terminal Unit)是一种基于4G网络的远程通信设备,广泛应用于工业自动化、智能监控、电力系统、环境监测等领域。4G DTU 通常支持多种通信协议&#xff0…

作者头像 李华
网站建设 2026/8/25 14:51:51

未来展望:CXL、智算网络与RDMA的融合演进

📑 目录 一、前言/背景二、核心原理与硬件架构三、硬件实现深度剖析四、协议/算法的RTL与寄存器级实现五、实战部署与配置六、性能分析与尾延迟评测七、常见问题排查八、总结与最佳实践参考资料 摘要:本文从芯片设计验证视角,深入剖析CXL 3.…

作者头像 李华
网站建设 2026/8/25 14:45:37

070、列表输出与页眉页脚

070、列表输出与页眉页脚 调试老报表时遇到一个邪门问题:同一个程序,在测试环境输出页眉正常,到生产环境页眉就“长”到了第二页,第一页反而是空的。折腾半天发现是有人偷偷改了程序里的LINE-COUNT,把默认行数调大,而页眉输出条件TOP-OF-PAGE触发时机跟着变了。 ABAP的…

作者头像 李华
网站建设 2026/8/25 14:45:24

打卡信奥刷题(3526)用C++实现信奥题 P10957 环路运输

P10957 环路运输 题目描述 在一条环形公路旁均匀地分布着 NNN 座仓库,编号为 1∼N1 \sim N1∼N,编号为 iii 的仓库与编号为 jjj 的仓库之间的距离定义为 dist(i,j)min⁡⁡(∣i−j∣,N−∣i−j∣)dist(i,j)\min⁡(|i-j|,N-|i-j|)dist(i,j)min⁡(∣i−j∣,…

作者头像 李华