树莓派的 40 Pin GPIO 引脚功能如下图。任何 GPIO 引脚都可以在软件中指定为输入或输出,可适用广泛的用途。
注意:GPIO 引脚的编号不按数字顺序排列,板上存在 GPIO 引脚 0 和 1(物理引脚 27 和 28),但进行了保留,用于高级用途(见下文)。
电压
两个5V引脚、两个3.3V引脚,以及一些不可配置的接地引脚(0V)。意味着输出设置为3.3V,输入为3.3V容差
输出
GPIO作为输出,可以设为高(3.3V) 或者低(0V).
输入
GPIO作为输入,可以读取为高(3.3V) 或者低(0V)。使用上拉或下拉电阻器可以更轻松地实现。GPIO2 和 GPIO3 固定上拉电阻,其他引脚可以在软件中配置。
其他
除了简单的输入和输出设备,GPIO引脚还可以用于各种替代功能,有些可用于所有引脚,有些可用于特定引脚。
- PWM (脉冲宽度调制)
- 软 PWM 适用于所有端口
- 硬 PWM 只适用于 GPIO12, GPIO13, GPIO18, GPIO19
- SPI
- SPI0:MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)
- SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
- I2C
- Data: (GPIO2); Clock (GPIO3)
- EPROM Data: (GPIO0); EEPROM Clock (GPIO1)
- Serial
- TX (GPIO14); RX (GPIO15)
GPIO pinout
可以在终端窗口,运行 pinout 查看参考信息。Raspberry Pi OS 默认已经安装好了 GPIO Zero Python 库。
有关 GPIO 引脚高级功能的更多详细信息,可参考这里。
权限
为了能使用 GPIO 端口,你需要将用户加到 gpio 组。 pi 用户默认是在 gpio 组中,其他用户需要自己加入。
sudo usermod -a -G gpio <username>
GPIO in Python
GPIO Zero 可以很方便使用 Python 控制 GPIO。
LED
使用 GPIO17 控制 led,示例:
from gpiozero import LED from time import sleep led = LED(17) while True: led.on() sleep(1) led.off() sleep(1)
使用 python file 运行示例,Led 将反复闪烁和熄灭。
LED 函数包括:on()、off()、toggle() 和 blink()。
按键
使用 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)
按钮功能包括
属性:is_pressed、is_held
回调函数:when_pressed()、when_released()、when_held()
方法:wait_for_press()、wait_for_release()
按键 + 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
更多关于 GPIO Zero Python 库,可参考这里。
本文转自树莓派开发者公众号
赞,准备拿起以前的树莓派重新玩一下
硬件电路如何连接?需要led需要接电阻吗?
led 串接几百欧电阻即可
树莓派5安装了ubuntu系统,执行以下命令报错:
sudo usermod -a -G gpio fly
usermod:“gpio”组不存在
运行到led = LED(17)这一行代码报错:
发生异常: BadPinFactory
Unable to load any default pin factory!
File “/home/fly/code/python/test/gpio_test.py”, line 4, in
led = LED(17)
^^^^^^^
gpiozero.exc.BadPinFactory: Unable to load any default pin factory!