目录
介绍
GPIO(通用输入输出)引脚可用作输入或输出,并允许树莓派与通用I / O设备连接。
- Raspberry pi B3型号在板上有26个GPIO引脚。
- Raspberry pi可以使用这些GPIO控制许多外部I / O设备。
- 这些引脚是Pi与外界之间的物理接口。
- 我们可以根据需要对这些引脚进行编程,以便与外部设备进行交互。例如,如果我们想要读取物理开关的状态,我们可以将任何可用的GPIO引脚配置为输入,并读取开关状态以做出决定。我们还可以将任何GPIO引脚配置为控制LED开/关的输出。
- Raspberry Pi可以使用板载Wi-Fi或Wi-Fi USB适配器连接到Internet。一旦Raspberry Pi连接到Internet,我们就可以远程控制连接到Raspberry Pi的设备。
Raspberry Pi 3的GPIO引脚如下图所示:
Raspberry Pi B3型号 GPIO针脚
某些GPIO引脚与I2C,SPI,UART等备用功能复用。
我们可以将任何GPIO引脚用于我们的应用。
引脚编号
我们应该定义我们想要用作输出或输入的GPIO引脚。但是Raspberry Pi有两种定义引脚号的方法,如下所示:
- GPIO编号
- 物理编号
在GPIO编号中,引脚编号是指Broadcom SoC(片上系统)上的编号。因此,我们应该始终考虑使用GPIO引脚的引脚映射。
在物理编号中,引脚编号是指Raspberry Pi板上40引脚P1接脚的引脚。上面的物理编号很简单,因为我们可以计算P1标头上的引脚编号并将其指定为GPIO。
但是,我们仍然应该考虑上面所示的引脚配置图,以了解哪些是GPIO引脚,哪些是VCC和GND。
电路连接图
使用Raspberry Pi进行LED控制
使用Raspberry Pi控制LED
例
现在,让我们使用连接到Raspberry Pi的开关来控制LED。在这里,我们使用Python和C(WiringPi)进行LED ON-OFF控制。
使用Python控制LED
现在,让我们在Raspberry Pi上使用Python打开和关闭LED。开关用于控制LED开 – 关。
Python程序
#
#https://www.qutaojiao.com
#
import RPi.GPIO as GPIO #import RPi.GPIO module
LED = 32 #pin no. as per BOARD, GPIO18 as per BCM
Switch_input = 29 #pin no. as per BOARD, GPIO27 as per BCM
GPIO.setwarnings(False) #disable warnings
GPIO.setmode(GPIO.BOARD) #set pin numbering format
GPIO.setup(LED, GPIO.OUT) #set GPIO as output
GPIO.setup(Switch_input, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
if(GPIO.input(Switch_input)):
GPIO.output(LED,GPIO.LOW)else:
GPIO.output(LED,GPIO.HIGH)
使用的功能:
RPi.GPIO
要在Python中使用Raspberry Pi GPIO引脚,我们需要导入类来控制GPIO的RPi.GPIO包。这个RPi.GPIO Python包已经安装在Raspbian OS上。因此,我们不需要在外部安装它。只是,我们应该在我们的程序中包含库,以使用Python进行GPIO访问的函数。这如下给出:
将RPi.GPIO导入为GPIO
GPIO.setmode(引脚编号系统)
此功能用于定义引脚编号系统,即GPIO编号或物理编号。
在RiPi.GPIO中,GPIO编号由BCM识别,而物理编号由BOARD识别
引脚编号系统= BOARD / BCM
例如,如果我们使用P1标头的40号引脚作为GPIO引脚,我们必须将其配置为输出,
在BCM,
GPIO.setmode(GPIO.BCM) GPIO.setup(21,GPIO.OUT)
在BOARD,
GPIO.setup (channel, direction, initial value, pull up/pull down)
该功能用于将GPIO引脚的方向设置为输入/输出。
channel– 按编号系统的GPIO引脚编号。
direction– 将GPIO引脚的方向设置为输入或输出。
initial value– 可以提供初始值
pull up/pull down – 如果需要,启用上拉或下拉
几个例子如下,
- GPIO作为输出
GPIO.setup(channel, GPIO.OUT)
- GPIO作为输入
GPIO.setup(channel, GPIO.IN)
- GPIO作为具有初始值的输出
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
- GPIO作为输入,带有上拉电阻
GPIO.setup(channel, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.output(channel, state)
该功能用于设置GPIO引脚的输出状态。
channel– 按编号系统的GPIO引脚编号。
state– 输出状态,即GPIO引脚的高电平或低电平
例如
GPIO.output(7, GPIO.HIGH)
GPIO.input(channel)
该功能用于读取GPIO引脚的值。
例如
GPIO.input(9)
使用C(WiringPi)控制LED
我们可以使用C访问Raspberry Pi GPIO。这里,我们使用WiringPi库来访问使用C的Raspberry Pi GPIO。
在使用wiringPi实现LED闪烁之前,您可以参考之前的教程学习如何使用WiringPi库。
程序
/*
https://www.qutaojiao.com
*/
#include
#include
int LED = 26; /* GPIO26 as per wiringPi, GPIO12 as per BCM, pin no.32 */*/
int switch_input = 21; /* GPIO21 as per WiringPi, GPIO5 as per BCM, pin no.29 */
int main(){
wiringPiSetup(); /* initialize wiringPi setup */
pinMode(LED,OUTPUT); /* set GPIO as output */
pullUpDnControl(switch_input, PUD_UP);
while (1){
if(digitalRead(switch_input))
digitalWrite(LED,LOW); /* write LOW on GPIO */
else
digitalWrite(LED, HIGH); /* write HIGH on GPIO */
}
}
本教程完整程序下载: