本文介绍树莓派上GPIO引脚的三种编号方式,同时介绍控制引脚的方式。并以BCM-17引脚为例,动手点亮led灯并使其闪烁。
GPIO是通用输入输出接口。树莓派上有40个引脚,对这40个引脚主要有两种编号方式。
- BOARD 和引脚物理顺序一致
- BCM
- wiringpi编号
wiringPi是一个用来控制GPIO的库,它对40个引脚的编号方式如下:
详细信息参考此网址
wiringPi 安装方式
- 应用于C语言和shell
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build
# 测试安装成功
gpio -vmake
gpio readall
- 应用于Python
sudo pip install wiringpi2
测试example程序
-
将发光二极管的阳极连接BOARD的pin11,也就是BCM17,wiringPi 0,中间需要串一个100-500欧姆的限流电阻。阴极连接到GND引脚(BOARD 9)。 命令行输入:
gpio write 0 1
可观察到发光二极管被点亮
gpio函数其他用法参见文档
-
编译示例C语言程序程序,使led闪烁
cd wiringPi/examples/
./blink.sh
# 或者
make blink
./blink
使用Python控制GPIO
树莓派原生系统内置的python已经安装了RPi.GPIO库,通过它可以方便的控制GPIO
可以参考以下两份文档:
Python实现LED闪烁,引脚依然是BCM-17
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17,GPIO.OUT)
print("All set in Python! Let's blink the LCD on BCM-17")
for i in range(1,10):
GPIO.output(17,GPIO.HIGH)
sleep(1)
GPIO.output(17,GPIO.LOW)
sleep(1)
GPIO.cleanup()
使用wiringpi库来控制连接BCM-17的led灯闪烁,具体使用说明参看: python-wiringpi使用教程
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import wiringpi
from time import sleep
# 设置wiringpi编号0引脚为输出模式
wiringpi.wiringPiSetup()
wiringpi.pinMode(0,1)
while True:
wiringpi.digitalWrite(0,True)
sleep(1)
wiringpi.digitalWrite(0,False)
sleep(1)
以下为wiringpi的三种引脚编号:
- BCM
- BOARD
- wiringpi
三种控制模式:
- input
- output
- pwm
设置示范如下:
# GPIO 引脚号就是BCM编号
import wiringpi
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(25, 0) # sets GPIO 25 to input
wiringpi.pinMode(24, 1) # sets GPIO 24 to output
wiringpi.pinMode(18, 2) # sets GPIO 18 to PWM mode
# wiringpi 编号
import wiringpi
wiringpi.wiringPiSetup()
wiringpi.pinMode(6, 0) # sets WP pin 6 to input
wiringpi.pinMode(5, 1) # sets WP pin 5 to output
wiringpi.pinMode(1, 2) # sets WP pin 1 to PWM mode
# 物理编号 BOARD编号
import wiringpi
wiringPiSetupPhys()
wiringpi.pinMode(22, 0) # sets P1 pin 22 to input
wiringpi.pinMode(18, 1) # sets P1 pin 18 to output
wiringpi.pinMode(12, 2) # sets P1 pin 12 to PWM mode