注:本文翻译自respberry官方介绍文档
GPIO和40针头
Raspberry Pi的一个强大功能是沿着板的顶部边缘有一排GPIO(通用输入/输出)引脚。所有当前的Raspberry Pi板上都有一个40针的GPIO头(Raspberry-Pi-Zero、Raspberri-Pi-Zero-W和Raspber里-Pi-Zere-2 W上未安装)。在Raspberry Pi 1 Model B+(2014年)之前,董事会由一个较短的26针头组成。所有板(包括Raspberry Pi 400)上的GPIO头都有0.1英寸(2.54毫米)的针距。
任何GPIO引脚都可以(在软件中)指定为输入或输出引脚,并用于多种用途。
电压
板上有两个5V引脚和两个3.3V引脚,以及一些不可配置的接地引脚(0V)。其余引脚均为通用3.3V引脚,意味着输出设置为3.3V,输入为3.3V容差。
输入/出
输出:指定为输出引脚的GPIO引脚可以设置为高(3.3V)或低(0V)。
输入:指定为输入引脚的GPIO引脚可以读取为高(3.3V)或低(0V)。通过使用内部上拉或下拉电阻器,这变得更容易。引脚GPIO2和GPIO3具有固定的上拉电阻,但对于其他引脚,可以在软件中进行配置。
更多
除了简单的输入和输出设备外,GPIO引脚还可以与多种替代功能一起使用,其中一些可用于所有引脚,其他可用于特定引脚。
PWM(脉冲宽度调制)
所有引脚上都有软件PWM
GPIO12、GPIO13、GPIO18、GPIO19上提供硬件PWM
SPI公司
SPI0:MOSI(GPIO10);MISO(GPIO9);SCLK(GPIO11);CE0(GPIO8)、CE1(GPIO7)
SPI:MOSI(GPIO20);MISO(GPIO19);SCLK(GPIO21);CE0(GPIO18);CE1(GPIO17);CE2(GPIO16)
I2C型
数据:(GPIO2);时钟(GPIO3)
EEPROM数据:(GPIO0);EEPROM时钟(GPIO1)
序列号
传输(GPIO14);接收(GPIO15)
GPIO引脚
通过打开终端窗口并运行命令,可以在Raspberry Pi上访问一个方便的参考pinput。此工具由GPIO零Python库,默认安装在Raspberry Pi OS中。
有关GPIO引脚高级功能的更多详细信息,请参阅gadgetoid交互式pinout图.
权限
为了使用GPIO端口,您的用户必须是gpio公司组。这个圆周率默认情况下,用户是成员,其他用户需要手动添加。
sudo usermod -a -G gpio <username>
Python中的GPIO
使用GPIO Zero该库使开始使用Python控制GPIO设备变得容易。该库在gpiozero.readthedocs.io.
LED
要控制连接到GPIO17的LED,可以使用以下代码:
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
在类似Thonny的IDE中运行此操作,LED将反复闪烁。
LED方法包括打开(),关闭(),切换()、和闪烁().
按钮
要读取连接到GPIO2的按钮的状态,可以使用以下代码:
from gpiozero import Button
from time import sleep
button = Button(2)
while True:
if button.is_pressed:
print("Pressed")
else:
print("Released")
sleep(1)
按钮功能包括属性按下(_P)和保留(_H); 回调按下时,发布时、和何时暂停; 和方法等待压力()和等待释放.
按钮+LED
要将LED和按钮连接在一起,可以使用以下代码:
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
while True:
if button.is_pressed:
led.on()
else:
led.off()
或者
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
while True:
button.wait_for_press()
led.on()
button.wait_for_release()
led.off()
或
from gpiozero import LED, Button
led = LED(17)
button = Button(2)
button.when_pressed = led.on
button.when_released = led.off