树莓派的GPIO
继续跟着树老师学习树莓派
- 新版的40引脚
- GPIO
GPIO(通用输入输出)是一种数字电子接口标准,用于与其他电子设备进行通信和控制。它允许电路或设备通过数字信号与外部世界进行交互。
GPIO接口通常是微处理器、微控制器或单片机上的引脚,可以用于输入和输出信号。通过配置和控制这些引脚,我们可以读取外部传感器的数据或控制外部设备的操作。
在使用GPIO时,通常需要考虑以下几个方面:
-
输入模式(Input mode):将GPIO引脚配置为输入模式时,可以通过读取引脚的电平来获取外部传感器的数据。
-
输出模式(Output mode):将GPIO引脚配置为输出模式时,可以通过设置引脚的电平来控制外部设备的操作。
-
上拉和下拉电阻(Pull-up and pull-down resistors):在输入模式下,可以通过连接上拉电阻或下拉电阻来确定引脚的默认电平。
-
中断(Interrupts):某些平台支持GPIO中断功能,可以在引脚状态发生变化时触发中断处理程序。
使用GPIO时,需要根据具体的硬件平台和编程语言进行相应的配置和操作。例如,在树莓派上,可以使用Python编程语言的RPi.GPIO库来控制GPIO引脚;在Arduino上,则使用Arduino编程语言来操作引脚。
总之,GPIO提供了一种灵活的接口,使我们能够与外部电子设备进行通信和控制,广泛应用于物联网、嵌入式系统、机器人等领域。
GPIO引脚分类
- 电源引脚:5v,3.3v,GND。
- 控制引脚:可以通过编写程序控制这些引脚输出高低电平。
- 通讯引脚:SPI,IIC,TXD\RXD 串口通信。
查找树莓派的编码
- 板载编码
- BNC编码
- WiringPi编码
板载编码
BCM 编码
- 参考Brordcom SOC的通道编号侧重CPU寄存器。
- 使用Python控制树莓派引脚时,使用的是WiringPi编码
WiringPi编码
- 把扩展GPIO端口从0开始编码。
- 使用C语言控制树莓派引脚时,使用的是WiringPi编码。
终端窗口查看引脚编号
- 1.查看板载编码 pinout
- 2查看全部编码 gpio readall
pinout
gpio readall
编程实现GPIO控制LED
终端控制GPIO
- gpio - g mode 4 out #设置管教为输出模式,-g表示是以BMC编码
# 如果去掉这个参数表示以wiringpi编码方式 - gpio -g read 4 #读取管脚当前状态
- gpio -g write 4 1 #设置管脚为高电平
- gpio -g write 4 0 #设置管脚为低电平
测试
pi@raspberrypi:~ $ gpio -g mode 18 out
pi@raspberrypi:~ $ gpio -g write 18 1
pi@raspberrypi:~ $ gpio -g write 18 0
c语言测试 Geany 新建led.c保存编译
#include <wiringPi.h>
int main( )
{
// 初始化wiringPi
wiringPiSetup();
//设置引脚为输出模式
pinMode(7, OUTPUT);
//延时为500ms的LED闪烁
while(1)
{
digitalWrite(7, HIGH); delay(500);
digitalWrite(7, LOW); delay(500);
}
return 0;
}
python mu新建led.py 保存编译
# 在这里写上你的代码 :-)
import RPi.GPIO as GPIO #导入GPIO包
import time #导入定时器包
GPIO.setmode(GPIO.BCM) #设置编码,使用BCM码
GPIO.setup(4, GPIO.OUT) #设置引脚为输出模式
#低高电平死循环
while True:
GPIO.output(4,False)
time.sleep(3)
GPIO.output(4,1)
time.sleep(3)
GPIO.cleanup() #释放GPIO资源
问题
- 使用终端输出gpio -g mode 4 out 并没有能设置为输出,gpio readall 一直是 IN 状态
- 测试别的引脚能控制输入输出 有知道的大神请帮忙指点