維基少年:樹莓派/樹莓派樂高®聖誕樹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

