mBlock & Arduino(2)點亮外接 LED


在〈mBlock & Arduino(1)哈囉!LED!〉中,我們讓 Arduino Uno 板子上標示為 L 的 LED 閃爍,這是為了能立即體驗一下如何控制 Arduino,接下來,我們要外接 LED,這就需要對 Arduino 板子以及相關電子電路元件有多一點的認識。

認識數位輸出/輸入腳位

Arduino Uno 的規格說明,可以在官方網站的 Arduino - ArduinoBoardUno 中找到,一下子完整認識板子上所有腳位沒有意義,因此,我的文件將採用到哪個講哪個的方式。

想要能點亮外接的 LED,可以使用數位輸出/輸入腳位 D0 到 D13,當作為輸出時,這些腳位的直流電流最高可以是 40 mA,高電位相對於 GND 是 5V,低電位是 0V。

GND 是 Ground 的意思,一般中文常稱為共地或接地,不過,「地」這個名稱常引起誤會,以為它真的是接到地面去了,在這邊,Ground 的意思應該是「基準」,電路中有個共同的電位基準時,當我指電路中某點為 5V,就是指相對於共同的電位基準,也就是相對於 GND 的點是 5V。

在 Arduino Uno 板子上,D0 到 D13,以及 GND 接點的位置如下:

Arduino Uno 的 GND 接點

認識 LED

LED 的名稱是發光二極體(Light-Emitting Diode),是一種半導體二極體,具有陽極和陰極兩個端子,一個 LED 元件的兩隻接腳長度不同,長的接腳是接正極,短的接腳是接負極,也可以藉由塑膠外殼上有平面的那邊來識別負極所在:

Arduino Uno 的數位輸出/輸入與 GND 接點

至於半導體二極體的運作方式,最簡單的說法是,當二極體被施以正向電壓(也就是正極電位高於負極),且電位差達某個值,二極體能夠導電(LED 的話會發出亮光),此時二極體正負極電位差幾乎固定,稱之為順向偏壓(Forward Bias),不同的二極體順向偏壓不同,需要查閱規格才能得知(LED 的話,可參考 LED 條目中的資料),當二極體被施以逆向電壓,二極體不會導電。

理想上,希望二極體施於正向電壓而導電時,能擁有無限小的電阻,而施以負向電壓時擁有無限大的電阻而不導電,也就是希望電壓電流曲線可以如下圖:

Arduino Uno 的 GND 接點

實際上半導體二極體的電壓電流曲線,可以參考維基百科 二極體 條目的這張圖:

半導體二極體的電流電壓特性圖

逆向電壓實際上是還有極微小的電流,其中 Vbr 是崩潰電壓,一般約數十伏特,超過的話二極體會崩潰而導致大量電流通過,無論如何,必須對流經二極體的電流做出限制,以免二極體因為電流過高而燒毀。

在銜接 LED 時,基本上會串接電阻以提供壓降、限制電流,LED 一般需要的電流為 20 mA,若 Arduino 輸出腳位為高電位 5V,假設 LED 的順向偏壓為 2V,那電阻壓降則為 3V,根據歐姆定律 R = V / I,至少應提供 3V / 0.02A,也就是 150 Ω 的電阻,保守起見,常見使用的是串接 220 Ω 的電阻,如下圖:

LED 連接概要圖

認識電阻色碼

每個電阻器上環繞著一圈圈的顏色,大多是四環,也有五環甚至六環,環的顏色各對應至一個數字,可參考 四環電阻色碼計算器 中的圖片:

四環電阻色碼

電阻連接時沒有方向之分,環的讀取就如上圖,可用電阻上環分佈較密的一端為左開始判讀,以上圖的四環電阻為例,綠對應至 5,藍對應至 6,黃對應至 10K,這表示電阻值是 560 KΩ,一般都會直接背「黑、棕、紅、澄、黃、綠、藍、紫、灰、白」這個口訣,代表數值 0 到 9,第三個色碼如果是黃就是 4,也就要有四個 0,就是 10K 的意思,第四條色碼則是容忍值;如果是上圖中下方的五環電阻,紅、澄、紫、黑分別對應至 2、3、7 與 1Ω,電阻值就是 237 Ω。

懶得記的話,四環電阻色碼計算器 中可以直接輸入電阻上的色碼,它會幫你計算出電阻值,要不然直接在網路上搜尋「電阻色碼」,也會找到計算方式,或其他線上計算器。

認識麵包板

談到麵包板,就想到以前學校做實驗時的惡夢,沒想到現在竟然要來介紹它!麵包板基本上就是橫向連通、直向連通、上下不通,例如:

LED 連接概要圖

同一個連通方向,表示每個孔間都是導通的,有的麵包板沒有上圖中藍與紅的部份,如果有的話,通常藍那列會拿來接 GND,紅那列會拿來接電源正端。如果要將上面 LED 連接的概要圖,使用麵包板銜接的話,可以像是:

LED 連接概要圖

線路複雜時,紅列接電源正端,藍列接電源負端是比較方便的作法,當然,對於簡單的線路,不一定要這麼做。

Arduino Uno 外接 LED

照按以上的說明,如果想要在 Arduino Uno 上外接 LED,並利用 D3 腳位的輸出來點亮 LED,可以如下:

LED 連接概要圖

程式的撰寫與〈mBlock & Arduino(1)哈囉!LED!〉是相同的,你只要將其中的數位腳位 13 改為 3 就可以了。

點亮外接 LED