树莓派引脚介绍与GPIO的初步认识与应用

article/2025/4/21 20:29:15

树莓派引脚介绍与GPIO的初步认识

  • 一.认识GPIO
  • 二.Python GPIO
  • 三.应用

一.认识GPIO

所谓GPIO,就是“通用输入/输出”接口,树莓派系统中已经编译自带了GPIO的驱动。树莓派的基本外观,最上面的引脚处左下角为1号引脚

树莓派GPIO的编号方式:

1. 功能物理引脚(physical):
从左到右,从上到下。左边为奇数,右边为偶数。共计40个引脚,计数为1-40。
2. BCM:
编号侧重于CPU寄存器,根据BCM2835的GPIO寄存器编号。具体编号参照上图中BCM一栏。
3.wiringPi
编号侧重实现逻辑,把GPIO端口从0开始编号,这种编号方便编程,参考上图wPi一栏。

三种编号的方式均指代的对象相同,只是编码方式不同。

其中
GPIO.**: 通用输入输出接口,GPIO端口,可通过软件分别配置成输入或输出。
3.3V/5.0V(VCC):提供3.3V/5.0V的固定电压
0V(GND):接地
SDA*:SDA 是I2C 数据传输口。
SCL:I2C时钟信号。
RXD:接收数据的引脚。
TXD:发送数据的引脚。
MOSI:为主输出从输入。
MISO:为主输入从输出。
SCLK: 系统时钟,指晶振频率。
CE*:片选(芯片有效)-表示低电平有效

二.Python GPIO

默认的python GPIO均已集成入raspbian系统,不需要另外安装。
如果需要安装,请按以下顺序:
1、先安装python-dev,输入以下指令。
sudo apt-get install python-dev
2、安装RPi.GPIO,依次输入以下指令。
1)下载:wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz
2)解压缩:tar xvzf RPi.GPIO-0.5.3a.tar.gz
3)进入解压之后的目录: cd RPi.GPIO-0.5.3a
4)启动安装 : sudo python setup.py install

三.应用

导入模块

import RPi.GPIO as GPIO

设置引脚引用模式:

GPIO.setmode(GPIO.BOARD)
#or
GPIO.setmode(GPIO.BCM)

检测使用的哪种模式可以使用:

mode=GPIO.getmode()
#mode的取值有GPIO.BOARD, GPIO.BCM, None

以下代码如无特殊说明,均使用GPIO.BOARD引脚映射模式。

设置引脚方向(输入,输出):

如 设置40号引脚为输入方向:

pin = 40
GPIO.setup(pin,GPIO.IN)

输出同理:

GPIO.setup(pin,GPIO.OUT)
#输出还可以加初始电平:
GPIO.setup(pin,GPIO.OUT,initial=GPIO.HIGH)
如果要同时设置多个引脚:
list=[11,12]
GPIO.setup(list,GPIO.OUT)

如果要同时设置多个引脚:

list=[11,12]
GPIO.setup(list,GPIO.OUT)

释放
一般来说,程序到达最后都需要释放资源,这个好习惯可以避免偶然损坏树莓派。释放脚本中的使用的引脚:

GPIO.cleanup()

警告
如果RPi.GRIO检测到一个引脚已经被设置成了非默认值,那么你将看到一个警告信息。你可以通过下列代码禁用警告:

GPIO.setwarnings(False)

注意,GPIO.cleanup()只会释放掉脚本中使用的GPIO引脚,并会清除设置的引脚编号规则。

读取
我们也常常需要读取引脚的输入状态,获取引脚输入状态如下代码:

GPIO.input(channel)
#低电平返回0 / GPIO.LOW / False,高电平返回1 / GPIO.HIGH / True。

如果输入引脚处于悬空状态,引脚的值将是漂动的。
换句话说,读取到的值是未知的,因为它并没有被连接到任何的信号上,直到按下一个按钮或开关。
由于干扰的影响,输入的值可能会反复的变化。
使用如下代码可以解决问题:

GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
# or
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
#需要注意的是,上面的读取代码只是获取当前一瞬间的引脚输入信号。

如果需要实时监控引脚的状态变化,可以有两种办法。
最简单原始的方式是每隔一段时间检查输入的信号值,这种方式被称为轮询。
如果你的程序读取的时机错误,则很可能会丢失输入信号。
轮询是在循环中执行的,这种方式比较占用处理器资源。
轮询方式

while GPIO.input(channel) == GPIO.LOW:time.sleep(0.01)  # wait 10 ms to give CPU chance to do other things

另一种响应GPIO输入的方式是使用中断(边缘检测),这里的边缘是指信号从高到低的变换(下降沿)或从低到高的变换(上升沿)。
边缘检测
边缘是指信号状态的改变,从低到高(上升沿)或从高到低(下降沿)。通常情况下,我们更关心于输入状态的该边而不是输入信号的值。这种状态的该边被称为事件。

wait_for_edge() 函数
wait_for_edge()被用于阻止程序的继续执行,直到检测到一个边缘。

channel = GPIO.wait_for_edge(channel, GPIO_RISING, timeout=5000)

add_event_detect() 函数
该函数对一个引脚进行监听,一旦引脚输入状态发生了改变,调用event_detected()函数会返回true,

GPIO.add_event_detect(channel, GPIO.RISING)
if GPIO.event_detected(channel):print('Button pressed')

RPI.GPIO 模块的脉宽调制(PWM)功能
脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。
创建一个 PWM 实例:

p = GPIO.PWM(channel, frequency)

启用 PWM:

p.start(dc)   # dc 代表占空比(范围:0.0 <= dc <= 100.0)

更改频率:

p.ChangeFrequency(freq)   # freq 为设置的新频率,单位为 Hz

更改占空比:

p.ChangeDutyCycle(dc)  # 范围:0.0 <= dc >= 100.0

停止 PWM:

p.stop()
#注意,如果实例中的变量“p”超出范围,也会导致 PWM 停止。

http://chatgpt.dhexx.cn/article/pgM9KTwW.shtml

相关文章

树莓派:树莓派的各个引脚

由于第一次接触树莓派&#xff0c;&#xff0c;&#xff0c;emmmm&#xff0c;仔细写&#xff0c;奥里给 3.3V、5V&#xff08;VCC&#xff09;&#xff1a;显然是电源正极啦 GND&#xff1a;接地用&#xff0c;负极负极负极 SDA.0、SDA.1&#xff1a;这个是 I2C&#xff08…

Raspberry Pi 引脚说明

除了供电针脚(包括 GND&#xff0c;3.3V 和 5V )&#xff0c;所有的GPIO针脚均可被用于数字输入或输出。 标记为 SCL&#xff08;串行时钟&#xff09;和SDA&#xff08;串行数据&#xff09;的针脚可被用于 I2C。 标记为 MOSI&#xff0c;MISO 和SCKL 的针脚可以用于连接高速…

基础篇——树莓派通用引脚定义

背景故事 树莓派主板集成了丰富的IO口&#xff0c;可以用于输入输出&#xff0c;通信等功能&#xff0c;常常用于物联网控制、传感器数据交互等方面&#xff0c;这里我们讲解一下怎么使用IO口作为输入输出&#xff0c;并控制一些简单的电路。 引脚直观图 我在网上找到一张非…

硬盘插上出不显示盘符,提示“硬盘必须经过初始化”

一个2T的Seagate希捷移动硬盘&#xff0c;没有怎么用过&#xff0c;在笔记本上拷贝了几个文件就突然消失了&#xff0c;而且再次拔插USB线后发现仍然看不到硬盘盘符。 但发现插上USB线后&#xff0c;任务栏中出现了USB插入硬盘的提示图标&#xff0c;看到这个我放心多了&#x…

磁盘必须经过初始化,逻辑磁盘管理器才能访问——笔记本硬盘作为移动硬盘使用时遇到的问题...

1. 问题描述 把笔记本电脑的硬盘拆出来&#xff0c;套上一个网上买的移动硬盘盒&#xff0c;就是一个移动硬盘了。 我的新的“移动硬盘”在接上别的电脑的时候&#xff0c;无法被识别&#xff0c;如下图。 显示&#xff1a;磁盘需要经过初始化&#xff0c;逻辑磁盘管理器才能访…

磁盘在磁盘管理中显示没有初始化找回文件方案

磁盘没有初始化是因为0号扇区损坏&#xff0c;导致机械硬盘分区表读取不出来&#xff0c;从而机械硬盘出现磁盘没有初始化。 工具/软件&#xff1a;极限数据恢复软件 步骤1&#xff1a;程序打开后&#xff0c;直接双击需要恢复数据的物理盘。 步骤2&#xff1a;等待程序扫描完…

服务器信息未初始化失败怎么办,初始化服务器失败

初始化服务器失败 内容精选 换一换 云服务器新增磁盘&#xff0c;开机自动执行磁盘初始化脚本后&#xff0c;Oralce、MySQL和SQL Server等数据库系统日志Msg 823错误 。磁盘初始化脚本WinVMDataDiskAutoInitialize.ps1执行过程中会调用diskpart启用virtual disk服务&#xff0c…

计算机管理 没有初始化,win7系统电脑新增的硬盘没有初始化的解决方法

win7系统想必大家都非常熟悉吧&#xff0c;然而有时候可能会碰到win7系统电脑新增的硬盘没有初始化的情况&#xff0c;想必大家都遇到过win7系统电脑新增的硬盘没有初始化的情况吧&#xff0c;那么应该怎么处理win7系统电脑新增的硬盘没有初始化呢&#xff1f;我们依照  1、当…

服务器一直显示初始化,服务器一直初始化内存

服务器一直初始化内存 内容精选 换一换 本文以云服务器的操作系统为“Windows Server 2012 R2 Standard 64bit”、磁盘容量为3 TB举例&#xff0c;提供容量大于2 TB的Windows数据盘的初始化操作指导。MBR格式分区支持的磁盘最大容量为2 TB&#xff0c;GPT分区表最大支持的磁盘容…

windows下初始化格式化磁盘

新买来的硬盘是未初始化的&#xff0c;以我的理解就是没有引导扇区的&#xff0c;通常是没有MBR&#xff0c;如下图磁盘1&#xff0c;右边有大小&#xff0c;但显示“未分配”&#xff0c; 左边显示“没有初始化”&#xff0c; 点鼠标右键就可以【初始化磁盘】。 初始化时可以…

RAID初始化过程

RAID系统是用来对存储数据进行数据保护的有效手段。 在RAID创建过程中往往会存在一个时间极长的系统初始化过程&#xff0c; 为什么RAID初始化过程中会存在这样的一个操作呢&#xff1f; 这个操作对SSD会导致什么方面的影响呢&#xff1f; 传统RAID的基本组织结构如下图所示…

计算机中磁盘管理恢复分区,电脑磁盘修复

硬盘驱动器(Hard-Disk Drive)简称硬盘&#xff0c;是一种主要的电脑存储媒介&#xff0c;由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。绝大多数硬盘都是固定硬盘&#xff0c;被永久性地密封固定在硬盘驱动器中。现在可移动硬盘越来越普及&#xff0c…

【计算机考研408】磁盘的初始化过程

该图是磁盘物理图 关于磁盘存储器&#xff0c;[柱面号盘面号扇区号]⇔外存块号 注&#xff1a;柱面是相对位置相同的磁道所构成的面 磁盘初始化 低级初始化&#xff08;也称物理格式化&#xff09; &#xff08;1&#xff09;分扇区 &#xff08;2&#xff09;用特殊数据结构…

磁盘显示没有初始化找到数据法子

没有初始化是因为分区表损坏了&#xff0c;导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子 没有初始化是因为分区表损坏了&#xff0c;导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子 工具/软件&#xff1a;光明数据恢复软件 步骤1&#xff1a;…

盘符没有显示,磁盘管理器提示磁盘没有初始化(已解决)

一、问题 插入移动硬盘&#xff0c;文件资源管理器未显示对应的磁盘&#xff0c;拔出硬盘重新插入也没有用。打开磁盘管理&#xff0c;提示磁盘没有初始化&#xff1a; 二、解决方法 右击window图标&#xff0c;打开磁盘管理或者计算机管理&#xff1a; 右击磁盘名称&#xf…

磁盘显示没有初始化恢复数据办法

没有初始化是因为分区表损坏了&#xff0c;导致硬盘出现没有初始化。磁盘显示没有初始化恢复数据办法 工具/软件&#xff1a;光明数据恢复软件 步骤1&#xff1a;软件运行后&#xff0c;直接双击需要恢复文件的磁盘。 步骤2&#xff1a;坐等软件扫描完毕大概需要几分钟到半个…

移动硬盘插上出不显示盘符,提示“硬盘必须经过初始化”

一个2T的Seagate希捷移动硬盘&#xff0c;没有怎么用过&#xff0c;在笔记本上拷贝了几个文件就突然消失了&#xff0c;而且再次拔插USB线后发现仍然看不到硬盘盘符。 但发现插上USB线后&#xff0c;任务栏中出现了USB插入硬盘的提示图标&#xff0c;看到这个我放心多了&#x…

硬盘提示初始化是什么意思?数据会丢失吗?

硬盘提示初始化&#xff1f;有些朋友看到初始化都会以为和格式化差不多意思&#xff0c;其实这是两个完全不同的概念&#xff0c;初始化一般是导入或者激活硬盘&#xff0c;而格式化是对硬盘的某个分区格式化后&#xff0c;数据将会被删除。 一般而言&#xff0c;新的硬盘要在初…

在Cadence中使用ADE进行蒙特卡洛仿真

蒙特卡洛分析简介 错误1: 做蒙特卡洛分析需要调用带有统计分布参数的器件模型&#xff0c;如果找不到统计分析需要的参数&#xff0c;仿真就会报这样的错。如果是tsmc的工艺的话&#xff0c;建议在schematic中改用带有MC参数的器件&#xff0c;然后重新产生netlist.

基于蒙特卡洛概率潮流计算 进行电力系统潮流计算和蒙特卡洛仿真

基于蒙特卡洛概率潮流计算 在IEEE33节点系统中&#xff0c;由于风光出力的不确定性&#xff0c;利用蒙特卡洛生成风速和光照强度得到出力&#xff0c;可得到每个节点的电压和支路功率变化&#xff0c;网损和光照强度。 这段程序主要是进行电力系统潮流计算和蒙特卡洛仿真。下面…