转载需注明出处:https://www.codelast.com/

要查看更多树莓派相关文章,请点击这里

很多年前我刚开始玩树莓派的时候,Python还是个“很不火”的编程语言,而如今Python借着深度学习(Deep Learning)的东风,已经毫无疑问地成了世界上最耀眼的明日之星;想当年我刚开始玩树莓派的时候,使用WiringPi开发库、在C++下开发GPIO应用是一个比较明智的选择,而如今树莓派上的Pyhton GPIO库已经百花齐放,并且多个树莓派的OS都已经内置了一或多个Python GPIO开发包,真正做到了:你只要装好系统,就马上能用Python写程序操作GPIO,立等可用。

C++编译一个简单的GPIO程序都要写Makefile,修改一点东西也得重新编译;而Python直接在交互模式下就可以测试GPIO,方便得让你想哭。相比之下,对一般的GPIO应用而言,我真的找不到什么理由再去用C++ & WiringPi来做。此外还有最重要的一点:树莓派在教育领域的广泛应用,使得Python成为了最合适的教育工具。儿童是祖国的花朵,如果让小孩子们在树莓派上用C++,这花朵还能好好成长吗?
文章来源:https://www.codelast.com/
下面就来看看,在Ubuntu MATE 18.04 系统下,用Python来开发一个GPIO应用有多么简单。

▶▶ 选择哪个GPIO库
之前我已经装好了Miniconda环境,而知名Python GPIO库 RPi.GPIO 在Anaconda上没有Python 3.6的版本,因此我安装了另一个pigpio库:

conda install -c cbetters pigpio
如果你装的是Raspbian系统,那么它已经自带了 RPi.GPIO,你啥都不需要做就可以开始上台表演了。
文章来源:https://www.codelast.com/
▶▶ 启动 pigpio 的daemon进程
这是基于 pigpio 的Python程序能work的必要条件:
sudo pigpiod
如果没有启动它,那么调用了 pigpio 的Python程序运行的时候会报错:

Can't connect to pigpio at localhost(8888)
 
Did you start the pigpio daemon? E.g. sudo pigpiod
 
Did you specify the correct Pi host/port in the environment
variables PIGPIO_ADDR/PIGPIO_PORT?
E.g. export PIGPIO_ADDR=soft, export PIGPIO_PORT=8888
 
Did you specify the correct Pi host/port in the
pigpio.pi() function? E.g. pigpio.pi('soft', 8888)

文章来源:https://www.codelast.com/
▶▶ 树莓派硬件接线
这里做一个最简单的实验:用树莓派的GPIO口点亮LED。

https://pinout.xyz 这个网站上有树莓派的引脚分配图。这里我使用树莓派的物理编号为 11 的GPIO口,也就是Broadcom命名方式下的 GPIO 17 口。
raspberry pi gpio 17
文章来源:https://www.codelast.com/
▶▶ Python程序
程序这么简单我还能说什么:

import pigpio

pi = pigpio.pi()
pi.set_mode(17, pigpio.OUTPUT)  # 把GPIO 17设置成输出模式
pi.write(171)  # 把GPIO 17设置成高电平

这代码完全不用做任何解释。
文章来源:https://www.codelast.com/
▶▶ 效果实拍
为了兼容性,MP4视频被我转成了体积巨大的gif(我容易吗我),且看且珍惜:
pigpio control led
文章来源:https://www.codelast.com/
▶▶ 总结
对树莓派来说:
人生苦短,请你用Python!
 在树莓派上折腾GPIO,用Python!
 For kids,毫无疑问地选Python!
 这个世界是你们的,是我们的,但终究是Python的!

[原创] 树莓派:这个世界是你们的,是我们的,但终究是Python的!
Tagged on:                 

发表评论

电子邮件地址不会被公开。 必填项已用*标注