树莓派之 RGB LED 跑马灯
很早之前就有写过使用 Arduino 开发板(C++) 和 树莓派的 GPIO(Python) 控制 LED 灯相关示例,只是比较的零碎,完全是个人兴趣驱动,当时过程中遇到的一些问题,也没有很好的记录下来,由于当时比较懒吧(不过,现在仍是依旧)。
最近由于工作需要,于是乎又拾起了兴趣,拼凑了一个相对比较完善的示例,过程中也入了一些坑,由于对 RGB 全彩 LED 特性不是很了解,特别在调试时,用了不少时间,真的是眼睛快被闪瞎了!
之所以能更加完善,完全是因为需要为组内来一场生动的分享(是不是真的生动,我也无从而知了),分享主题为 趣玩 Python,Python 还能玩 LED?嗯,是的,既然是趣玩,当然是拿些大家不太熟悉,但又不太陌生的东东来玩玩吖,于是乎我拿出了百分之一百二精力,一个月的时间里,时常搞到凌晨一二点,第二天又需早早爬起来上班,当然啦,该示例只是其中之一,其实在较早的时候,这样的作息也属于常态,加班几乎成为了程序员的代名词,问我累不累,不,怎么会累呢,一切为工作!哈哈,价值观还可以吧!其实更多的是习惯了这样的生活,也就不觉得怎样了!
好了,回归正题,先了解一下,示例中使用的元件 树莓派、RGB LED、220Ω 电阻、面包板,公母杜邦线,开发语言是 Python (Python 分 2.X 版本 和 3.X 版本,语法上是有区别的,示例使用的 Python3.X 版本),不得不说,这是我做过的 PPT 中最好看和最满意的了。
了解过 树莓派 的同学应该知道,树莓派之所以很畅销,个人认识最大的原因是树莓派集成了 丰富的 GPIO(General Purpose Input-Output),它们是程序与外部世界对话的窗口,增强了趣味性。再有就是强大的开源社区以及第三方对树莓派大力支持,这也是当下最有趣味的板子之一。本示例是使用 Python,树莓派搭载的系统是基于 Debian Stretch 的 Raspbian,Python 和 Linux 有者强大的开源社区。掌握了这两样工具的工具(元工具),网上遍地是趁手的兵器。先让我们了解一下树莓派的 GPIO 引脚。
RGB LED 多元的特性,可以通过程序实现色彩绚丽灯光效果,不过,在使用之前需要先确认一下手中的 RGB LED 是共阴还是共阳,所谓共阴就是公共端接负极 -,而共阳就是公共端接正极 +,一般商品介绍上会有说明,或者如果看到 RGB LED 的引脚有 GND 字样,说明是共阴的,也可以自行测试;这点很重要,这会影响接下来的灯光效果实现及调试。调试时建议串连一个 220Ω 的电阻,防止因电流过大而烧坏了 RGB LED。
首先确保树莓派安装了 Python3.X ,一般系统会自带 Pthon2.7 以及 RPi.GPIO 模块程序包(该包提供了一个在 Raspberry Pi 中控制 GPIO 的类),如果未安装,则执行 sudo apt-get install python3 进行安装 Python3,执行 sudo apt-get install RPi.GPIO 安装 RPi.GPIO 模块程序包(Python 是区分大小写的,你没看错,就是 RPi.GPIO ,i 是小写的,写错了会报错的),必要的软件安装好,就可以愉快的编码了。
开始之前还是需要再了解一下 PWM,PWM 脉冲宽度调制的英文缩写,在一个脉冲循环内,通电时间相对于总时间所占的比例叫占空比,方波的占空比为50%,占空比为0.5,说明正电平所占时间为0.5个周期。是不是似懂非懂,在本示例只需要知道 PWM 可以控制 RGB LED 亮度即可,但真正做一个产品时,对相关知识点不能完全明白的掌握,会遇到不少麻烦,也是会有很大的风险的。
相信很多同学对万能充电器,在熟悉不过了,此时就不得不说那时是 诺基亚 王朝,是否还记得高中时为了给手机充器,不得不像防贼似的防着班主任,话说你的东东有没有被班主任撞见过呢!对,该示例就是实现那迷人的万能充电器里面的跑马灯,嗯,那我们开始吧,执行 sudo nano led.py 创建一个名称为 led.py 文件, 将下面的代码复制到该文件中保存,执行 sudo python led.py 就可以看到效果了,聪明的你对 RGB LED 的接线应该不在话下吧,具体示例代码如下:
参考文档: