相信各位創客肯定都聽過Arduino,而Arduino已經成為創客和電子愛好者的必備工具之一。Arduino的開放原始碼和社群資源,讓使用者可以輕鬆地學習和分享自己的作品。如果你還不知道什麼是Arduino的話,本文將簡單介紹Arduino的基本背景,讓我們一起來看看吧!
什麼是Arduino?
Arduino是一款開放原始碼的平台,它包括硬體和軟體,可以用於建立各種互動式物體和環境。Arduino硬體是搭載微控制器的單晶片電腦,可透過板端的GPIO(General-purpose input/output)接口來接收各種感應器(如光、聲、溫度等)的訊號,並根據訊號來處理和控制。
除此之外,Arduino在軟體部分提供了一個編程環境,可以使用類似C語言的簡單程式碼,輕鬆編寫控制單晶片的程式,並可應用於許多領域,如機器人、物聯網、自動化控制等等。
Arduino的歷史可以追溯到2003年,當時義大利的設計工作室”Interaction Design Institute Ivrea”開始使用單片機控制各種互動裝置[1]。由於市場上缺乏容易使用和價格實惠的單片機平台,因此這個工作室開發一款新的硬體平台,這就是Arduino的前身。
最初的Arduino硬體設計是由Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino和David Mellis等人共同創造[2]。他們的目標是創建一個容易上手的平台,任何人都可以用它來開發自己的專案,而不需要深入了解電子學或程式設計。
到了2005年,第一個Arduino原型機問世。由於Arduino的開放原始碼和簡單易用的特點,它很快就受到了全球創客和電子愛好者的關注。Arduino的社群成員也不斷發佈新的程式庫和項目,這些資源讓使用者更加方便地開發和分享自己的專案。底下我們就來看看構成Arduino的硬體環境與軟體環境。
Arduino的硬體環境
Arduino的硬體結構主要由三部分組成:微控制器、外部電路和擴展連接器。
微控制器
Arduino的核心通常是Atmel AVR系列的單片機。這個微控制器是Arduino硬體的中央處理器,負責讀取和處理各種訊號,並執行使用者編寫的程式碼。
外部電路
Arduino的外部電路用於連接各種電子元件和感應器。這些電路包括電源管理電路、時鐘電路、USB通訊電路、輸入/輸出電路等等,可以為使用者提供更多的功能。
擴展連接器
擴展連接器可以用於連接各種擴展板和模塊。例如,Arduino Uno板子上就有14個數位腳位和6個類比腳位,使用者可以通過這些腳位連接各種電子元件。
此外,Arduino還提供了其他擴展連接器,如I2C、SPI、UART等,可以用於連接各種外部設備,如感應器、顯示螢幕、無線模組等等。
Arduino的軟體環境
軟體開發環境包括Arduino IDE和相關程式庫。Arduino IDE是一個基於Java的跨平台集成開發環境,可以讓使用者編寫、上傳和調試Arduino程式碼。以下是Arduino開發環境的一些特點:
程式編輯器
Arduino IDE內建一個簡單易用的程式編輯器,可以讓使用者輕鬆撰寫和編輯Arduino程式碼。
程式庫
Arduino IDE還內置了許多程式庫,使用者可以輕鬆地將這些程式庫添加到自己的專案,以實現更複雜的功能。
編譯器
可以將使用者編寫的Arduino程式碼轉換為機器語言。使用者可以單擊編譯按鈕來編譯程式碼,並檢查是否有錯誤。
上傳工具
可以將使用者編譯完成的程式碼上傳到Arduino板子上執行。使用者可以單擊上傳按鈕來上傳程式碼,並在Arduino板子上運行。
此外,Arduino還支持第三方程式庫和工具,使用者可以根據自己的需求進行擴展。
Arduino有哪些優點?
前面我們對Arduino的軟體與硬體環境有些基本認識,底下來看看Arduino有哪些優點。我們知道Arduino是個開放平台,旨在讓使用者可以輕鬆開發各種專案,因此在設計和功能上與其他單晶片有較大區別。以下是Arduino與其他單晶片的一些區別:
- 開放平台:Arduino允許使用者用其硬體和軟體來開發專案。使用者可以簡單連接電路和撰寫程式,而不需要複雜的設計和製造。
- 易於學習:Arduino使用類似C語言的編程語言,並提供了許多範例。初學者可以輕鬆開發自己的專案。
- 低成本:硬體價格實惠,而且有很多廠商可以供應,因此成本比其他單晶片低廉得多。
- 模塊化:Arduino硬體可以搭配各種擴展板,使用者能靈活地擴展和升級專案。
說了這麼多,我們直接用範例程式碼來看看Arduino與其他單晶片開發的差異。以下是使用Arduino和其他單晶片來控制一個LED燈的範例程式碼,可以更直觀地比較兩者不同:
Arduino程式碼使用Arduino IDE開發環境,程式碼範例如下:
int ledPin = 13; // 定義LED燈所連接的腳位
void setup() {
pinMode(ledPin, OUTPUT); // 設置LED燈腳位為輸出模式
}
void loop() {
digitalWrite(ledPin, HIGH); // 開啟LED燈
delay(1000); // 延遲1秒
digitalWrite(ledPin, LOW); // 關閉LED燈
delay(1000); // 延遲1秒
}
使用其他單晶片時,程式碼可能會使用C語言或組合語言等低階語言。以下是基於ATmega328P單晶片的控制LED燈程式碼:
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB |= (1 << DDB5); // 設置腳位5為輸出模式
while (1) {
PORTB |= (1 << PORTB5); // 開啟腳位5
_delay_ms(1000); // 延遲1秒
PORTB &= ~(1 << PORTB5); // 關閉腳位5
_delay_ms(1000); // 延遲1秒
}
return 0;
}
從上面這兩段程式碼可知,使用Arduino來控制LED燈的程式碼比使用其他單晶片更簡單易懂,使用者可以更輕鬆地理解和修改程式。
主廚結語
本次為各位簡單介紹Arduino的背景與其開發環境,我們可以看到Arduino是一款非常實用的單片機平台,對於創客、學生、教育工作者和業餘愛好者來說,其豐富的資源和開源特性,讓開發電子相關專案變得更加容易。
隨著物聯網和智能家居等應用不斷增加,Arduino將會扮演重要角色,為人們帶來更多的創新。如果對這類文章有興趣的話,歡迎按讚科技雞湯Facebook,以持續追蹤最新消息!
參考資料
- Arduino傳奇故事:開發秘辛,https://swf.com.tw/?p=865
- 認識Arduino,https://www.x-family.com.tw/index.php/nggallery/image/arduino-uno-r3-s?p=410
- AVR Digital IO,https://baremetalmicro.com/tutorial_avr_digital_io/04-Outputs.html
- Arduino IDE介紹,https://ithelp.ithome.com.tw/articles/10291606