0°

(五)树莓派基础:Raspberry Pi(树莓派) GPIO访问

介绍

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(树莓派) 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(树莓派) GPIO访问

使用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 */
		
		}
	}

本教程完整程序下载:

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论