create account

【树莓派真好玩】八:现实交互(GPIO与控制LED) by oflyhigh

View this thread on: hive.blogpeakd.comecency.com
· @oflyhigh ·
$138.53
【树莓派真好玩】八:现实交互(GPIO与控制LED)
我认为树莓派与Arduino等设备的最迷人的地方就是可以让程序与现实世界交互,这种交互有两个方向:一,感知现实世界(从现实世界获取输入信息);二,控制现实世界的设备。


![20211106_165132.jpg](https://images.hive.blog/DQmRy8cY1vACgWTKmUCkbx2dJcvqFVCBU95d78MHn6qcvAq/20211106_165132.jpg)


对于树莓派而言,这两种交互方向都可以通过GPIO来实现(当然,通过摄像头、USB什么的也是可以的),这节我们来演示最简单的操作,使用树莓派来控制LED闪烁,这大概是所有和硬件&控制相关的课程的第一课。

说到树莓派的GPIO,在[【树莓派真好玩】二:给树莓派4B穿上马甲 & 电源上电](https://hive.blog/hive-105017/@oflyhigh/4b-and)中,为了连接风扇的电源和地,我们曾经简单地提及GPIO,这里我们把之前的图片再拿来一下。

这就是树莓派GPIO管脚示意图喽:
![image.png](https://images.hive.blog/DQmW15Ef19heTVu2Wx9XqsfLawvRC7Ssp2YyonzJiTZaKTf/image.png)

可以看到,除了5V电源、3.3V电源、地(Ground),以及标准的GPIO外、有些管脚还兼具其它功能,比如说UART、SPI、I2C等,通过这些管脚我们可以连接各种协议的设备,实现我们想要的获取信息或者输出控制等功能。

小图看着太累,来个大图,这个比较容易对应了:
![image.png](https://images.hive.blog/DQmSdx6a76ihZGkQpDdAdm4G96rGa7FFGn33Qz4G5CRg55C/image.png)

或者我们可以在树莓派上使用`pinout`工具(由 GPIO Zero Python库提供)来查看树莓派上的接口以及针脚对应关系等等:
>![image.png](https://images.hive.blog/DQmP3xUeBuB4gP4u2yyUsMZ45Df8GHjopzz3wv3jVwKTxdG/image.png)

我们有很多手段控制GPIO,比如说Wiring Pi、RPi.GPIO以及树莓派官网推荐的[GPIO Zero Python库](https://gpiozero.readthedocs.io/)。

# 安装GPIO Zero

如果你的树莓派系统上还没有安装[GPIO Zero Python库](https://gpiozero.readthedocs.io/),并且使用的是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、电阻、面包板、杜邦线之类的材料。

这是连接好的线路:
>![20211106_165125.jpg](https://images.hive.blog/DQmPBsUu3kQhr8Hzf5G4CoB2n3pbhYtNwq62tYHw4WhQgK3/20211106_165125.jpg)

其实简化一下就是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的时间间隔,就可以控制小灯点亮或者熄灭的间隔时间啦。

点亮后的效果如图:
>![20211106_165143.jpg](https://images.hive.blog/DQmXnAPyGpBuY2WFL8K2cFYtDbJCmVZwLNSzwKGCh532CWw/20211106_165143.jpg)

(我使用的是一枚双色LED,所以拍照时不是什么颜色哦)

当然了,控制LED只是最简单的操作,下节我们来做一些复杂的操作,不过我要测试&操作成功才会写文章,就好比你看到的这个系列文章,其实都是我失败无数次后才测试成功的呢。

好了,今天就写到这里,再问一遍,你学废了嘛?

----

好了,这次的分享先到这里,后续内容,敬请期待哦。
(注:本系列文章同步首发于https://hive.blog & [电子产品世界官方论坛](http://forum.eepw.com.cn/))

# 相关链接

* [GPIO and the 40-pin Header](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header)
* [GPIO Zero Python库](https://gpiozero.readthedocs.io/)
* [【树莓派真好玩】一:Raspberry Pi 4B 介绍&开箱](https://hive.blog/hive-105017/@oflyhigh/raspberry-pi-4b-and)
* [【树莓派真好玩】二:给树莓派4B穿上马甲 & 电源上电](https://hive.blog/hive-105017/@oflyhigh/4b-and)
* [【树莓派真好玩】三:给树莓派4B注入灵魂 (安装系统)](https://hive.blog/hive-105017/@oflyhigh/4b)
* [【树莓派真好玩】四:唤醒灵魂 (点亮&连接系统)](https://hive.blog/hive-105017/@oflyhigh/66hpsh-and)
* [【树莓派真好玩】五:基本设置(无线网、静态IP、修改密码、系统更新、raspi-config)](https://hive.blog/hive-105017/@oflyhigh/ip-raspi-config)
* [【树莓派真好玩】六:初次见“面”(使用VNC连接树莓派)](https://hive.blog/hive-105017/@oflyhigh/vnc)
* [【树莓派真好玩】七:有声有色(播放声音、获取图像)](https://hive.blog/hive-105017/@oflyhigh/2vp3xp)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 176 others
properties (23)
authoroflyhigh
permlinkgpio-led
categoryhive-105017
json_metadata{"tags":["cn","life","blog","diy","raspberrypi"],"image":["https://images.hive.blog/DQmRy8cY1vACgWTKmUCkbx2dJcvqFVCBU95d78MHn6qcvAq/20211106_165132.jpg","https://images.hive.blog/DQmW15Ef19heTVu2Wx9XqsfLawvRC7Ssp2YyonzJiTZaKTf/image.png","https://images.hive.blog/DQmSdx6a76ihZGkQpDdAdm4G96rGa7FFGn33Qz4G5CRg55C/image.png","https://images.hive.blog/DQmP3xUeBuB4gP4u2yyUsMZ45Df8GHjopzz3wv3jVwKTxdG/image.png","https://images.hive.blog/DQmPBsUu3kQhr8Hzf5G4CoB2n3pbhYtNwq62tYHw4WhQgK3/20211106_165125.jpg","https://images.hive.blog/DQmXnAPyGpBuY2WFL8K2cFYtDbJCmVZwLNSzwKGCh532CWw/20211106_165143.jpg"],"links":["https://hive.blog/hive-105017/@oflyhigh/4b-and"],"app":"hiveblog/0.1","format":"markdown"}
created2021-11-07 04:23:57
last_update2021-11-07 04:23:57
depth0
children1
last_payout2021-11-14 04:23:57
cashout_time1969-12-31 23:59:59
total_payout_value69.314 HBD
curator_payout_value69.215 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length3,019
author_reputation6,364,504,976,237,683
root_title【树莓派真好玩】八:现实交互(GPIO与控制LED)
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id107,562,221
net_rshares123,417,318,021,057
author_curate_reward""
vote details (240)
@lovelingling ·
我说我学废了,估计都没人相信。因为学废了,好歹是学进去了,只是最后废了😂。
properties (22)
authorlovelingling
permlinkre-oflyhigh-2021117t151410128z
categoryhive-105017
json_metadata{"tags":["hive-105017","cn","life","blog","diy","raspberrypi"],"app":"ecency/3.0.19-mobile","format":"markdown+html"}
created2021-11-07 07:14:09
last_update2021-11-07 07:14:09
depth1
children0
last_payout2021-11-14 07:14:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length37
author_reputation729,430,049,036,331
root_title【树莓派真好玩】八:现实交互(GPIO与控制LED)
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id107,564,090
net_rshares0