在〈mBlock & Arduino(2)點亮外接 LED〉中,我們簡介過 LED,依需求而定,你可以連接多個 LED 來達到顯示目的,像是用多個 LED 製作跑馬燈,或者是雙色、三色 LED、四色 LED,甚至七段顯示器等。
雙色、三色、四色 LED
舉例來說,雙色 LED 可以自行連接線路如下:
如果左邊是紅色 LED,而右邊是綠色 LED,那麼上圖的接法會是亮紅燈,如果對調電源與 GND,那麼就會亮綠燈,市面上有現成的、具有兩個接腳的雙色 LED,是直接將兩個 LED 做在同一個塑膠套中,方便想用同一個燈來顯示兩種狀態時使用。三色 LED 是類似的,將三個不同顏色的 LED 做在同一個同一個塑膠套中,通常是 RGB 三色,有多個針腳可用來控制顯示的顏色,例如四個針腳的三色 LED:
不同廠商製作的 LED,可能會有不同的針腳配置,基本上確認一下規格就是了,四色 LED 也是類似,有點像是雙色 LED 再行電路配置一下:
七段顯示器
那麼七段顯示器呢?實際上就是將七個 LED 連接起來,以便顯示數字或字元的元件,有的七段顯示器會多一個顯示小數點的 LED,生活中應該很常看到這類元件,像是電梯樓層顯示、銀行叫號機等都看得到。
從上圖中可以看出,如何控制電壓的方向來令七段顯示器的不同 LED 顯示,以便達到顯示數字或字元,七段顯示器通常有十個腳位,其中有兩個腳位是連通(這是為了電路佈線方便),且與 LED 的陽極或陰極是共用的,例如,上圖中的腳位 3 與 8 與 LED 的陽極是共用的,稱為共陽極(Common anode)七段顯示器,為了讓 LED 點亮,對應的 LED 陰極必須是低電位輸出,如果你的電路輸出訊號至七段顯示器腳位是低電位,就使用共陽極。
若是共陰極(Common cathode)則相反,有兩個腳位與 LED 腳位的陰極是共用的,例如:
因此,為了讓 LED 點亮,對應的 LED 陽極必須是高電位輸出,如果你的電路輸出訊號至七段顯示器腳位是高電位,就使用共陰極。
(有些電路模組會有共陽、共陰兩種選擇,由於共陽極腳位可以接能供應較大電流的電源,可以不用受限於 Arduino 最大電流 40 mA 的限制,若驅動之元件需要較大電流時可以採用。)
常見的七段顯示器通常會有十個腳位,分為兩排各五個腳位,兩排中間的腳位通常就是共陽或共陰腳位,例如前面的圖中,可以看出右排中間腳位與左排中間腳位被細線圖示為連通,實際的腳位,還是要查看規格說明,或者是實際使用電位計或電池進行測試。
當然,單一個七段顯示器會佔用許多輸出腳位,如果要多位數使用時,輸出腳位將會不夠使用,這時可以使用掃描的方式,一次顯示一個七段顯示器,速度很快下,看來就會像是同時顯示,這之後有機會再來看,這邊先看看如何控制單一個七段顯示器。
用七段顯示器說 HELLO
瞭解了七段顯示器的運作,接下來我們來用程式控制 Arduino,令其連接的七段顯示器可以顯示 HELLO 字樣,以下的電路圖是依 Fritzing 中的七段顯示器圖樣,並採用共陰極方式來連接,你可以視實際手邊的七段顯示器來調整:
接下來就是寫程式控制了,基本上,只要令對應的腳位為高腳位就可以了,不過,使用程式逐行設置腳位的話,是很沒有效率的事,若能將腳位對應設置為清單(陣列),然後用跑迴圈的方式,程式會比較簡短而有彈性一些,例如配合上圖,H、E、L、O 的清單可以是:
這樣的話,若要顯示 H,可以如下跑迴圈:
不過,問題在於,mBlock 中自定義的方塊,無法傳遞清單,這表示,你得複製上頭的自訂方塊,然後改為跑 E 清單,再複製上頭的自訂方塊,然後改為跑 o 清單 …. XD
這樣看起來很蠢,因為多一個字元或數字要顯示,就得複製一次,怎麼辦呢?不能傳清單的話,那改傳字串好了,我們定義出 H、E、L、O 需要的字串:
在這邊用 H 表示高電壓,L 表示低電壓,這麼一來,你就可以只用一個「設置七段顯示器」自訂方塊,來顯示想要的字樣:
如果想要更多的數字或字元顯示,那麼只要多定義一個字串就可以了,比逐行設定腳位要來得方便多了。