树莓派GPIO编程避坑指南:用Python和RPi.GPIO库让LED灯闪起来(附引脚图详解)
第一次接触树莓派GPIO编程时,我盯着那40个金属引脚发呆了半小时——它们看起来都一样,但每个都有不同的功能。更让人困惑的是,网上教程里有人用"GPIO17",有人写"引脚11",还有人提到"wiringPi编码"。这种混乱让我烧坏了两个LED后才明白:点亮LED不是问题,理解背后的规则才是关键。
1. 引脚编码:选择正确的"语言"
树莓派的引脚编号系统就像城市里的地址体系——同一个地点,快递员、出租车司机和本地居民可能用完全不同的描述方式。在GPIO编程中,最常见的三种编码方式会让初学者晕头转向:
- 物理引脚编号:直接对应板子上1-40的物理位置,最直观但缺乏逻辑性
- BCM编码:Broadcom芯片的原始GPIO编号,与硬件寄存器直接对应
- wiringPi编码:由Gordon Henderson的WiringPi库定义的简化编号
提示:RPi.GPIO库默认使用BCM编码,这也是大多数Python项目推荐的方式
下表对比了三种编码方式在常见引脚上的差异:
| 物理引脚 | BCM编码 | wiringPi编码 | 典型功能 |
|---|---|---|---|
| 11 | GPIO17 | 0 | 通用输入/输出 |
| 12 | GPIO18 | 1 | PWM输出 |
| 13 | GPIO27 | 2 | 通用输入/输出 |
| 15 | GPIO22 | 3 | 通用输入/输出 |
python复制# 设置编码模式的正确方式
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) # 推荐使用BCM编码
# GPIO.setmode(GPIO.BOARD) # 使用物理引脚编号
硬件连接时最容易犯的错是混淆电源引脚和GPIO引脚。有次我把LED直接接在了3.3V电源引脚上
