前一章我們撇開 Arduino 不談,僅談了電位差的概念,用最簡單的手電筒應用來解釋電池、電線、電阻以及 LED ,與電壓、電流以及電阻之間的關係。而 Arduino 在這其中扮演的角色就是產生一個高電位(+),那我們該如何使用 Arduino 來產生出高電位呢?
由上圖所示,我們先將電壓分為數位電壓以及類比電壓。
數位電壓分為高電位(HIGH Level) 5V 以及 低電位(Low level) 0V 兩種, 至於為什麼是 5V ? 這其實是早起大家為了統一規格而訂出來的標準。
類比電壓則是將 0V 到 5V 切割為很多等份,也就是說在類比的世界裡才有如 2.5V 這種中間值的存在。
Arduino 開發版可以實現數位輸入(digitalRead)、數位輸出(digitalWrite)、類比輸入(analogRead)以及類比輸出(analogWrite) 四種應用。
數位輸入: 讀取外部電路中某一個點的電位,並且以數位的形式來呈現。也就是說我們讀到的只會是高電位或者是低電位兩種結果,並且會以 2.4V 來做為分界線( TTL標準 ),大於 2.4V 則判定為高電位(HIGH Level)。
數位輸出: 從 Arduino 產生高電位或者低電位,也就是說產生 5V 或 0V 輸出至外部電路。
由上得知,如果我們想要模擬出手電筒應用,就只要將 Arduino 設定為 "數位輸出模式" ,並且進一步將其設定為 "高電位(HIGH Level)" ,就可以輸出 5V 的高電位讓 LED 點亮了!
接下來講比較特別的部分,由上文得知,數位輸出只能設定為高電位或者低電位,也就是說當我們設定成高電位,則電路中就有 5V 的電壓(水龍頭)存在,以點亮 LED 燈;當設定為低電位時就會有 0V 的電壓存在,而 0V 的電壓就好像水龍頭關起來一樣, LED 燈自然被熄滅了。
那我們如果想要 2.5 V 這種不上不下的電壓值呢? 就需要類比電壓輸出的模式。Arduino 的類比電壓輸出,是將 0V 到 5V 切割為 0 到 255 的數字,也就是說將 0V 到 5V 切割為 256 份(0~255有256個數字),而 2.5V 正好為中間值,故在 Arduino 的眼裡,256 的一半等於 128 就代表著 2.5V 。以此類推就可以得到其它的類比電壓輸出。
最後則是類比電壓輸入,與類比電壓輸出不同的是,輸入切割的更為細緻,將 0V 到 5V 切割成 0 到 1023 共 1024 個數字呈現。這部分的應用就如同常見的三用電錶一樣,可以用來量測外部電路某一點的電壓值(例如可以拿來量測常見的電池電壓)
本章簡單的將數位輸入、數位輸出、類比輸入及類比輸出四種狀況都做了介紹,後續的章節都將圍繞在這四個概念之中,每一個狀況都會用專章介紹,並且都會輔以實際的生活應用來幫助學習。
看了這幾章如果有覺得 "不過就是顆電池配燈泡,我弄的這麼麻煩做什麼? " 的朋友別氣餒,事實上我剛開始接觸微控制器時也有過這樣的想法,但微控器能做的事情遠超越了點亮一顆燈泡這種事,只是做為針對初學者的教學系列,在編排上我必須用最簡單的應用來排除各位可能遇到的困難。所以務必有耐心的接下去看幾章,你就會發現小小的晶片能做的事情遠遠超乎你的想像。