我认为树莓派与Arduino等设备的最迷人的地方就是可以让程序与现实世界交互,这种交互有两个方向:一,感知现实世界(从现实世界获取输入信息);二,控制现实世界的设备。
对于树莓派而言,这两种交互方向都可以通过GPIO来实现(当然,通过摄像头、USB什么的也是可以的),这节我们来演示最简单的操作,使用树莓派来控制LED闪烁,这大概是所有和硬件&控制相关的课程的第一课。
说到树莓派的GPIO,在【树莓派真好玩】二:给树莓派4B穿上马甲 & 电源上电中,为了连接风扇的电源和地,我们曾经简单地提及GPIO,这里我们把之前的图片再拿来一下。
这就是树莓派GPIO管脚示意图喽:
可以看到,除了5V电源、3.3V电源、地(Ground),以及标准的GPIO外、有些管脚还兼具其它功能,比如说UART、SPI、I2C等,通过这些管脚我们可以连接各种协议的设备,实现我们想要的获取信息或者输出控制等功能。
小图看着太累,来个大图,这个比较容易对应了:
或者我们可以在树莓派上使用pinout
工具(由 GPIO Zero Python库提供)来查看树莓派上的接口以及针脚对应关系等等:
我们有很多手段控制GPIO,比如说Wiring Pi、RPi.GPIO以及树莓派官网推荐的GPIO Zero Python库。
安装GPIO Zero
如果你的树莓派系统上还没有安装GPIO Zero Python库,并且使用的是Raspberry Pi OS、 Debian、Ubuntu那么可以使用如下指令安装:
sudo apt update
sudo apt install python3-gpiozero
否则可以使用PIP来安装:
sudo pip3 install gpiozero
(注:我个人推荐使用Python3以及Python3版本的GPIO Zero)
硬件连线
为了演示树莓派GPIO控制LED,我们需要准备LED、电阻、面包板、杜邦线之类的材料。
这是连接好的线路:
其实简化一下就是LED正极串接个电阻连接到GPIO 18对应的针脚上,LED负极连接的Ground对应的针脚上。
程序代码
代码也很简单:
from gpiozero import LED
from time import sleep
led = LED(18)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
执行代码
将上述代码保存为blink.py
然后在命令行执行如下命令即可:
python3 blink.py
我们就可以看到LED小灯以1秒种的间隔交替点亮、熄灭,我们可以根据自己的喜好调整sleep的时间间隔,就可以控制小灯点亮或者熄灭的间隔时间啦。
点亮后的效果如图:
(我使用的是一枚双色LED,所以拍照时不是什么颜色哦)
当然了,控制LED只是最简单的操作,下节我们来做一些复杂的操作,不过我要测试&操作成功才会写文章,就好比你看到的这个系列文章,其实都是我失败无数次后才测试成功的呢。
好了,今天就写到这里,再问一遍,你学废了嘛?
好了,这次的分享先到这里,后续内容,敬请期待哦。
(注:本系列文章同步首发于https://hive.blog & 电子产品世界官方论坛)