树莓派上点亮LED灯的简单详细方法揭秘
文章目录
树莓派开发与STM32开发的比较
树莓派和STM32都是常用的嵌入式设备,都可以使用GPIO来控制LED灯。它们的点灯方式和使用的编程语言以及开发环境略有不同:
相同点:
GPIO.setup(led_pin, GPIO.OUT)
这样的设置。差异:
原理图以及树莓派引脚展示
(注:本表格适用于各版本,并且兼容26Pin的树莓派B,树莓派B为26Pin,其引脚对应于上表的前26Pin。)
这里小编给个建议:开发前最好去看看这个表,因为树莓派在不同编码方式下拥有不用的引脚分配方式。
通过引脚对照表知:不同的编码方式所对应的引脚是不一样的,例如:在wPi编码格式下引脚8,而BCM编码格式下引脚就改成2,实际的物理引脚就变成4。
如果大家不能够确定上述两图是否与自己的树莓派引脚是否匹配,也可在命令行中输入gpio readall
。若大家第一次使用gpio
命令可能会报错bash: gpio: command not found
,这个是因为树莓派4自带的wiringPi 库默认是 2.50 ,无法映射到 gpio ,所以需要更新到 2.52 才能与树莓派映射。zero2w 则需要 2.60 。我们可以在命令行中输入下面两台命令解决这个问题:
# 下载 2.52 版本的 wiringPi
wget https://project-downloads.drogon.net/wiringpi-latest.deb
# 安装
sudo dpkg -i wiringpi-latest.deb
然后再输入命令gpio readall
即可获得下面结果:
通过上述三图,不难看出,当树莓派的物理引脚为16时,,BCM编码方式下该引脚为23,wPi编码方式下期引脚为4。
点灯步骤
import RPi.GPI0 as GPIO
pip3 install RPi.GPIO
GPIO.setmode(GPIO.BOARD)
如果大家想要换一种编码方式,那么只需要将GPIO.setup
前两句换成下面两句即可实现相同的功能:
# 设置编码方式
GPIO.setmode(GPIO.BOARD)
# 设置引脚
GPIO_Pin = 16
(注:使用该编码方式的好处是:树莓派各版本的BOARD编码方式是相同的,所以就算更换了树莓派版本,我们也无需修改代码。)
#将引脚设置为输入模式
GPIO.setup (GPIO_Pin,GPIO.IN)
#将引脚设置为输出模式
GPI0.setup (GPIO_Pin,GPIO.OUT)
#通过GPIO.input方法来判断接收的是高电平还是低电平
if GPIO.input(num) == GPIO.HIGH:
print(1)
else:
print(0)
#通过GPI0.output方法来发送高低电平
GPI0.output(num,GPIO.HIGH)
GPI0.output(num,GPIO.LOw)
#释放GPIO引脚资源
GPIo.cleanup ()
函数ledTest
实现LED间隔1s闪烁。
def ledTest():
""" 在树莓派上制作LED闪烁 时间间隔为1s """
# 设置编码方式
GPIO.setmode(GPIO.BCM)
# 设置引脚
GPIO_Pin = 23
# 设置GPIO引脚
GPIO.setup(GPIO_Pin, GPIO.OUT)
while True:
# 用16号引脚输出一个高电平,灯亮
GPIO.output(GPIO_Pin, GPIO.HIGH)
# 等1秒
time.sleep(1)
# 用16号引脚输出一个低电平,灯灭
GPIO.output(GPIO_Pin, GPIO.LOW)
# 等1秒
time.sleep(1)
# 使用结束,释放引脚
GPIO.cleanup()
读取树莓派布局
如果大家想要获取树莓派更多布局信息可以输入命令pinout
,其会给出结果:
