還記得當初接觸 Arduino 類的開發版,書上就會用 LED 燈閃爍來當作第一個範例,如同學程式語言,第一個程式就是「Hello, world!」。開發板換成 ESP32 依然是會用同樣的範例教您,只要執行結果正確,就代表您的電路板接線正確,控制程式碼輸入正確且編譯成功,程式能正常燒入到開發板上。看到 LED 按照程式指示的方式閃爍,心中的成就感油然而生。
不過物聯網的軟硬體越學越多,才發現事情沒這麼簡單。許多問題就從腦袋浮現出來,最常問的大概有下列幾個:
LED 發光原理不是三言兩語可以說明白。除了參考維基百科上「LED 」條目的介紹外,個人建議有興趣的同學可以參考 Youtube 上的「相比白炽灯,效率提升了10几倍!LED的工作原理,发光二极管到底是如何发光的呢?」教學影片。裡面用淺顯易懂的動畫說明,讓您可以逐漸讀懂 Wiki 上的解說。
當您從電子材料行購買LED 材料時,您就會發現一個很驚人的事實。元件種類有夠多,但國中、高中課本裡根本沒介紹這麼多,規格標示讀不懂,要怎麼辦呢?最近筆者找到「LED芯片 | 不同種類的LED有什麼差別?通過測試讓你看清一切」這個教學影片,裡面有介紹市面上找得到的各種發光 LED 元件,非常值得讀者花點時間觀看。如果能做一點筆記,以後去買材料,就不會買錯或是不知道怎麼跟店員溝通。
每一種顏色的LED 工作電壓均有不同:
根據歐姆定律 V = I * R ,我們此時假設要點亮紅色LED,5mm 的LED 需要的電流約為 0.02 安培,要搭配的電阻可這樣計算:
R = (5 – 2.1) / 0.02 = 145 歐姆,我們取整數值,為 150 歐姆。
那如果用 200 歐姆,則流經 LED 的電流是多少呢?
I = (5 – 2.1) / 200 = 0.0145 安培 < 0.02 安培,如果用 200 歐姆的電阻,LED 的亮度會暗一些,但依然可以正常點亮。
找電子零件不一定能剛好找到 150 歐姆的材料,所以就選比較容易找的 200歐姆電阻。
根據技術文件可知,內建的LED 為腳位編號 16 ,因此我們寫程式時,要先設定輸出腳位為16,這樣才能點亮 LED 。
此時您將機器翻至背面,應該會發現內建的 LED 發出藍光。
那要怎麼讓他熄滅呢?請執行 「led.value(1)」,這樣 藍光LED 就會熄滅。
我們可以切換到 「BLOCKS」標籤,照著下圖編寫程式。點選執行後,您應該就會看到LED間隔一秒持續閃爍。
而對應的程式則是:
import machine
import time
while True:
pin = machine.Pin(16, 3).value(1)
time.sleep(1)
pin = machine.Pin(16, 3).value(0)
time.sleep(1)
玩學運算科技有出一個兩位數的七段顯示器套件,可以提供國中技藝班或高職電子類學生實習使用。學生可以從零件焊接開始組裝起,學習七段顯示器的控制電路,最後用程式來讓七段顯示器來顯示指定的數字,未來,更可進階使用四位數的七段顯示器,完成時鐘或是倒數計時器等作品。
兩位數七段顯示器的控制腳位如下圖:
請試著顯示數字88
請試著顯示 bb 字樣,相對應的 Python 程式如下:
import machine
machine.Pin(2,3).value(0)
machine.Pin(5,3).value(0)
machine.Pin(21,3).value(1)
machine.Pin(19,3).value(1)
machine.Pin(22,3).value(1)
machine.Pin(23,3).value(1)
machine.Pin(26,3).value(1)
machine.Pin(18,3).value(0)
machine.Pin(25,3).value(0)
根據線路圖我們得知,兩個數字各段的線路都是相同,唯一不同只有小數點位置,其中 D1 代表左邊的數字,D2代表右邊的數字。例如我們要顯示「24」,就可以按照底下的方式處理。
這麼範例程式會有明顯的閃爍問題,您可以減少暫停的時間,例如0.05 變成 0.005 ,就會看起來同時顯示兩個數字。
講到這裡,我們先告一段落,明天我們將介紹「畫點、畫線、畫圖與秀圖」,明天見。