树莓派(一)python接口RPi.GPIO介绍

编程入门 行业动态 更新时间:2024-10-12 05:52:55

树莓派(一)python<a href=https://www.elefans.com/category/jswz/34/1771365.html style=接口RPi.GPIO介绍"/>

树莓派(一)python接口RPi.GPIO介绍

目录

导入 RPi.GPIO 模块:

引脚编号

设置channel

设置多个通道

获取输入

设置输出

输出到多个通道

清理

RPi 板信息和 RPi.GPIO 版本


导入 RPi.GPIO 模块:

try:import RPi.GPIO as GPIO
except RuntimeError:print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")

通过这种方式,您可以在脚本的其余部分将其称为 GPIO。

引脚编号

有两种方法可以在 RPi.GPIO 中对 Raspberry Pi 上的 IO 引脚进行编号。首先是使用 BOARD 编号系统。这是指 Raspberry Pi 板的 P1 接头上的引脚编号。使用这种编号系统的优势在于,无论 RPi 的电路板版本如何,您的硬件都将始终工作。您无需更改代码。

第二个编号系统是 BCM 编号。这是一种较低级别的工作方式 - 它指的是 Broadcom SOC 上的通道号。您必须始终使用图表,说明哪个通道号连接到 RPi 板上的哪个引脚。您的脚本可能会在 Raspberry Pi 板的修订之间中断。

 
 

GPIO.setmode(GPIO.BOARD) # 或者 GPIO.setmode(GPIO.BCM)

要检测已设置的引脚编号系统(例如,通过另一个 Python 模块):

模式 = GPIO.getmode() 模式将为 GPIO.BOARD、GPIO.BCM 或无

警告

您的 Raspberry Pi 的 GPIO 上可能有多个脚本/电路。因此,如果 RPi.GPIO 检测到引脚已配置为默认值(输入)以外的内容,则在尝试配置脚本时会收到警告。要禁用这些警告:

GPIO.setwarnings(False)

设置channel

您需要将您使用的每个通道设置为输入或输出。要将通道配置为输入:

GPIO.setup(channel,GPIO.IN)

(其中通道是基于您指定的编号系统(BOARD 或 BCM)的通道号)。

要将通道设置为输出:

GPIO.setup(channel,GPIO.OUT)

(其中通道是基于您指定的编号系统(BOARD 或 BCM)的通道号)。

您还可以为输出通道指定初始值:

GPIO.setup(通道,GPIO.OUT,初始=GPIO.HIGH)

设置多个通道

您可以为每次通话设置多个频道(从 0.5.8 版本开始)。例如:

chan_list = [11,12] # 添加任意数量的频道!

# 你可以用元组代替,即:

# chan_list = (11,12)

GPIO.setup(chan_list, GPIO.OUT)

获取输入

要读取 GPIO 引脚的值:

GPIO.input(channel)

(其中通道是基于您指定的编号系统(BOARD 或 BCM)的通道号)。这将返回 0 / GPIO.LOW / False 或 1 / GPIO.HIGH / True。

设置输出

设置 GPIO 引脚的输出状态:

GPIO.output(channel, state)

(其中通道是基于您指定的编号系统(BOARD 或 BCM)的通道号)。

状态可以是 0 / GPIO.LOW / False 或 1 / GPIO.HIGH / True。

输出到多个通道

您可以在同一个调用中输出到多个通道(从 0.5.8 版本开始)。例如:

chan_list = [11,12] # 也适用于元组

GPIO.output(chan_list, GPIO.LOW) # 将所有设置为 GPIO.LOW

GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW)) # 设置第一个 HIGH 和第二个 LOW

清理

在任何程序的最后,清理您可能使用过的任何资源都是一个好习惯。这与 RPi.GPIO 没有什么不同。通过将您使用过的所有通道返回到输入而不上拉/下拉,您可以通过短接引脚来避免意外损坏您的 RPi。请注意,这只会清理脚本使用的 GPIO 通道。请注意,GPIO.cleanup() 还会清除正在使用的引脚编号系统。

在脚本结束时进行清理:

GPIO.cleanup()

当您的程序退出时,可能不想清理每个通道而留下一些设置。您可以清理单个频道、频道列表或频道元组:

GPIO.cleanup(channel1)

 

GPIO.cleanup((channel1,channel2))

 

GPIO.cleanup([channel1,channel2])

RPi 板信息和 RPi.GPIO 版本

要发现有关您的 RPi 的信息:

GPIO.RPI_INFO

要发现 Raspberry Pi 板修订版:

GPIO.RPI_INFO['P1_REVISION']

一个完整的例子

下面代码控制蜂鸣器发出声音,其中用到的PWM功能会在后面文章讲解


import time
import random
try:import RPi.GPIO as GPIO
except RuntimeError:print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")# GPIO.setwarning(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.OUT)
# use 
p = GPIO.PWM(32, 300)
p.start(1)
# input('Press return to stop:')   # use raw_input for Python 2try:while True:for dc in range(0, 101, 5):p.ChangeFrequency(random.randrange(300, 2000))p.ChangeDutyCycle(dc)time.sleep(0.5 * random.random())
except KeyboardInterrupt:pass
p.stop()
GPIO.cleanup()

更多推荐

树莓派(一)python接口RPi.GPIO介绍

本文发布于:2024-03-09 17:12:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725564.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:接口   python   树莓派   RPi   GPIO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!