维基少年:树莓派/树莓派乐高®圣诞树LED灯
教程由 Andrew Oakley - 公共领域提供
2017年11月 www.cotswoldjam.org
LEGO® 是乐高公司集团的商标,乐高公司集团不支持、授权或认可本教程或 Cotswold Raspberry Jam。
LED始终需要连接电阻。如果你不连接电阻,它们会烧毁,而且可能无法再次工作。 |
发光二极管 (LED) 有一条短脚和一条长脚。如果你摸一下边缘,你还会发现一个扁平的边缘。短脚和扁平边缘始终连接到负极 (接地)。
- ×1 红色LED
- ×1 蓝色LED
- ×1 黄色LED
电阻可以以任何方式连接。较低值 (较低欧姆) 电阻将允许更多电流通过,并使 LED 更亮;较高的值将允许更少的电流通过,并使 LED 更暗。我们使用的是 270 欧姆电阻,但 220–470 欧姆之间的任何值都可以使用。
- ×3 270 欧姆 (红紫棕) 电阻。
你需要跳线来连接 LED 到电阻,然后连接到树莓派。
- ×6 10厘米母对母跳线
- ×3 20厘米母对母跳线
最后,你需要两个乐高®积木来制作圣诞树。
- ×1 红色 8×4 板 (BrinkLink 商品:3035)
- ×1 小型松树 2×2×4 (BrinkLink 商品:2435)
取两根短 (10厘米) 母对母线,将电阻放在它们之间。
重复三次,这样你就有了三根长线,中间有一个电阻。
接下来,将你刚刚制作的短电阻线连接到每个 LED 的负极 (短) 脚。
最后,将长 (20厘米) 母对母线连接到每个 LED 的正极 (长) 脚。
弯曲 LED 的脚,这样你就可以将它们安装在乐高®松树周围。
将带有电阻的线连接到任何 GND (接地,负极) 引脚。这些引脚在右侧的图中以黑色显示。
接下来,将正极线 (没有电阻的长线) 连接到以下引脚。GPIO 14 (引脚 8) 在树莓派的左上角第四个引脚,当以太网端口位于右侧时。
- 红色LED - GPIO 14 (引脚 8)
- 蓝色LED - GPIO 15 (引脚 10)
- 黄色LED - GPIO 18 (引脚 12)
不要担心线的颜色。关注 LED 的颜色。GPIO 代表通用输入输出。这些引脚有许多用途。
在你的树莓派桌面上,点击树莓派菜单 (右上角),然后选择编程,并点击 Python 3 (IDLE)。
点击文件菜单,打开。双击 python
文件夹 (你可能需要滚动到最右边才能找到它)。双击 lego-xmas 文件夹。选择 lego-xmas1.py
并点击打开。
一个新的窗口将打开。在新窗口中,选择运行菜单,并点击运行模块。红色 LED 应该短暂亮起,然后关闭。让我们看一下这个程序。
from gpiozero import LED
from time import sleep
red=LED(14)
red.on()
sleep(0.5)
from gpiozero import LED
from time import sleep
计算机并不知道如何自己完成所有事情;它需要学习。这两行代码教计算机有关 LED 和等待 (sleep
) 的知识。保存这些知识的地方叫做库。我们从 gpiozero
库导入 LED 命令,从 time
库导入 sleep
命令。
red=LED(14)
red.on()
我们必须告诉计算机红色 LED 连接到哪个 GPIO 引脚,然后我们告诉它打开 LED。
sleep(0.5)
这告诉计算机等待 (sleep
) 半秒钟。
程序结束时,它会自动关闭 LED。此自动关闭功能是 gpiozero
库的一部分。
通过点击 lego-xmas1.py
窗口,然后选择文件菜单,关闭来关闭程序。
从主窗口打开 lego-xmas2.py
程序,然后使用运行菜单,运行模块来运行它。
这个程序依次点亮所有 LED,每个 LED 之间等待半秒钟。
通过按住 CTRL 键并按下 C 来停止程序。
注意我们如何定义红色、蓝色和黄色 LED 的引脚号,以及我们如何按顺序打开和关闭它们。
from gpiozero import LED
from time import sleep
red=LED(14)
blue=LED(15)
yellow=LED(18)
while True:
blue.off()
yellow.off()
red.on()
sleep(0.5)
red.off()
blue.on()
sleep(0.5)
blue.off()
yellow.on()
sleep(0.5)
while
命令重复一个部分。我们说 while True
表示“永远”。
注意 while
命令下面的命令如何从左边缩进几个空格。这叫做块。缩进让计算机知道哪些命令应该作为 while
循环的一部分重复执行。
还要注意 while True:
如何以冒号 :
结尾。
冒号让计算机知道它应该接下来期待一个代码块。
尝试改变顺序。交换一些on()
和off()
命令。
改变睡眠时长,使其更长或更短。尝试为不同的LED添加额外的on()
,off()
和sleep
命令。
创建你自己的惊人的圣诞节灯光序列!
程序lego-xmas3.py
展示了如何使用pulse
命令。注意lego-xmas3.py
如何使用PWMLED
库,而不是仅仅使用简单的LED库。
from gpiozero import PWMLED
pulse
命令更难使用,因为你必须根据你的sleep
时间,精确控制不同颜色LED的脉冲。
red.pulse(0.3,0.3,4,True)
blue.pulse(0.4,0.4,3,True)
yellow.pulse(0.6,0.6,2,True)
sleep(2.4)
程序包含一些注释,解释了脉冲命令的工作原理。
从http://www.cotswoldjam.org/downloads/2017-11下载
要将lego-xmas*.py程序文件添加到Raspbian,请进入终端
cd
mkdir -p python
cd python
curl "http://www.cotswoldjam.org/downloads/2017-11/lego-xmas.zip" -O
unzip lego-xmas.zip
exit
请注意,-O
是大写字母O,而不是零。更多教程请访问http://www.cotswoldjam.org/tutorials
本教程的原始PDF文件在维基共享资源:Cjam-lego-xmas.pdf
from gpiozero import LED
from time import sleep
red=LED(14)
red.on()
sleep(0.5)
from gpiozero import LED
from time import sleep
red=LED(14)
blue=LED(15)
yellow=LED(18)
while True:
blue.off()
yellow.off()
red.on()
sleep(0.5)
red.off()
blue.on()
sleep(0.5)
blue.off()
yellow.on()
sleep(0.5)
from gpiozero import PWMLED
from time import sleep
red=PWMLED(14)
blue=PWMLED(15)
yellow=PWMLED(18)
while True:
red.pulse(0.3,0.3,4,True)
blue.pulse(0.4,0.4,3,True)
yellow.pulse(0.6,0.6,2,True)
sleep(2.4)
# PWMLEDs have a pulse command. The parameters are:
# 1 Fade in time, in seconds
# 2 Fade out time, in seconds
# 3 Number of times to pulse
# 4 Background - True to continue to the next command without waiting
# False to wait until finished
#
# For example:
# red.pulse(0.3,0.3,4,True)
# * Fade in for 0.3 seconds
# * Fade out for 0.3 seconds
# * Repeat 4 times
# * Continue with the next command without waiting
# 4x0.3=1.2 seconds to fade in
# 4x0.3=1.2 seconds to fade out
# 1.2+1.2=2.4 seconds total
#
# Find out more about PWMLED commands
# http://gpiozero.readthedocs.io/en/stable/api_output.html#pwmled
#
# Learn about PWM Pulse Width Modulation
# https://learn.sparkfun.com/tutorials/pulse-width-modulation