Arduino 是一塊基於開放原始代碼的 Simple i/o 平台,並且具有開放語言和開放環境都很簡單、易理解的特點,配合上一些電子元件使用,例如 LED 燈、蜂鳴器、按鍵、感測器、制動器等等,就可以讓我們快速地做出有趣的專案。Arduino 基於開放原始碼的原則,可以免費下載使用,減少開發的成本,令開發者可以創造出更多令人驚奇的互動作品。有興趣的可以到 Arduino 官方網站 進一步了解 Arduino 的美好之處。
Arduino 有很多種開發版,像是 Arduino UNO、Arduino Mini 等等,每一種開發版都有自己的特色。
在這裡我們以 Arduino Mega 為例 :
那要如何開發 Arduino 板呢? 我們可以利用程式碼,經過編譯並燒錄進 Arduino 後,就可以隨心所欲的控制 Arduino 了!要同時滿足這些需求,一個最普遍的方法就是使用 Arduiono IDE,現在已經出到第二代。它提供編輯、解讀程式碼、檢查語法錯誤、燒錄程式碼等等的功能,讓你的開發流程便利不少。
一台 Arduino 看起來功能非常齊全,似乎可以完成很多事,為什麼我們需要通訊? 它是拿做什麼的?
有不同原因會需要使用到通訊,有可能是因為一台設備的記憶體不足,需要兩台設備的記憶體才能應付所需。但更常見的原因是為了讓多台 Arduino 能夠互相溝通。例如一個機器人有多個部件,而不同部件使用一個單獨的 Arduino 來控制,此時就會需要使用通訊來將他們串接起來,連接到一個控制中心,負責指揮各個部件現在該做些什麼。
其中一種通訊方式便是 UART,它的全名是 Universal Asynchronous Receiver / Transmitter。其中它的兩個腳位分別叫 Receiver, Transmitter,簡稱RX, TX。從名字來看,一個腳位負責接收,一個腳位負責傳送。也因此,兩台機器在使用 UART 通訊時,必須 RX-TX 交錯連接,訊號才能正確傳遞。
一般來說訊號分為 數位、類比 兩種訊號。
Pulse Width Modulation (脈衝寬度調變) 是一種利用數位訊號模擬類比訊號的方式。以極快的速度在 1 與 0 之間做開關切換,藉由這種數位訊號高頻率的切換,並調整開關的時間比例,就可以模擬出我們需要的類比訊號。
這個開與關的比例有個專有名詞來描述它:工作週期( Duty Cycle )。其計算方式為高電位持續時長/週期時長。舉例來說,下面那張圖的 Duty Cycle 為 3/4 = 75%