Arduino是一款開源軟硬體平臺,被業餘愛好者、DIY愛好者、學生和專業人士廣泛使用。由於其易用性和成本優勢,也成為我個人最喜歡的原型平臺。今天,我會詳細教您下載並安裝Arduino IDE、編寫一個LED閃爍Arduino程式、將程式上傳到Arduino板進行實現,以幫您輕鬆使用Arduino。
估計完成時間:30-45分鐘
所需元件和裝置
目錄
Arduino IDE是Arduino的開源軟體整合式研發環境。該款IDE包含了軟體發展的所有必要工具。要使用Arduino研發板,您需要下載Arduino IDE,使用該IDE編輯您的原始程式碼,然後將代碼上傳至研發板。Windows、Mac和Linux系統都可以安裝Arduino IDE。
您可以在這裡下載最新版的Arduino IDE: https://www.arduino.cc/en/Main/Software
請下載程式,並按照必要的安裝步驟安裝到您的電腦上。
需要搭建的電路非常簡單。我使用麵包板來搭建這個電路。您可以將元件焊接在一起,也可以利用原型板為您的Arduino製作一塊研發板。搭建電路之前,我喜歡先用Fritzing繪製我的電路原理圖(圖1:Fritzing原理圖)。Fritzing是一款開源原理圖設計和PCB佈線軟體。Fritzing的下載位址如下: http://fritzing.org/home/。
LED和電阻應串聯在數位I/O引腳3和接地引腳之間(圖2:Arduino電路板連接)。電阻的作用是限制流過LED的電流,並應根據您的LED進行相應調整,以防止電流過大將LED燒壞。
Arduino IDE安裝成功之後,我們就可以開始編寫代碼了。Arduino的原始程式碼檔稱為Sketch(草擬程式)。Arduino程式設計語言基於C/C++,而且非常相似。打開Arduino IDE,螢幕上會出現一個新的空白程式(圖4:新Arduino程式)。
Arduino程式分為兩個部分:a) 設定和b) 迴圈。我喜歡為我的所有原始程式碼添加一個頭檔,描述代碼的標題、日期、說明和版本(如有必要)(圖5:原始程式碼標頭檔)。
下一步應包含任何必要的程式館,但是我們的代碼不使用任何程式館,因此我們可以跳過這一步。
接下來,我們編寫全域變數定義。這一步並不是必須的。但是,在處理更複雜的代碼時,這種定義可以簡化代碼並使得程式編輯更加容易。定義一個變數時,其實是為變數分配一個值。在本例中,我將Arduino Uno上的數位I/O引腳3定義為LED輸出引腳(圖6:LED引腳定義)。
如果將來我想改變LED的輸出引腳,那麼我只需改變這個定義即可,不必更改任何其他代碼。
代碼的設定部分是進行必要軟硬體配置的地方。這部分代碼只運行一次。我們想驅動LED,因此我們應將LED所連的數位I/O引腳配置為輸出引腳(圖7:引腳配置)。
現在我們已經完成了Arduino的設定,可以編寫代碼的主體了。編寫的代碼應位於迴圈部分中,系統上電後會一直重複執行,除非另有說明或直到Arduino電源斷開後才會停止。
為了每秒閃爍一次LED,我們編寫以下命令(圖8:LED閃爍迴圈):
1) 點亮LED
2) 等待0.5秒(500毫秒)
3) 熄滅LED
4) 等待0.5秒
5) 重複
由於我們編寫的代碼位於迴圈函數中,因此Arduino會自動重複執行這些代碼。
用USB電纜將Arduino研發板連至電腦。連接Arduino後,請按照以下步驟上傳程式:
1) 選擇目標板(圖9:目標板選擇)
2) 選擇電路板連接的串口(圖10:串口連接)
3) 按下“上傳”按鈕將程式上傳到Arduino(圖11:上傳按鈕位置)
祝賀您!現在您的LED應該每秒閃爍一次(圖12:LED熄滅,圖13:LED點亮)。您剛剛安裝了Arduino IDE,並用它成功編寫並上傳了您的第一個Arduino程式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* Project: LED_Blink * Written by:Chris Marella * Date: January 4, 2017 * Description: The following code will flash an LED on and off. */ //Pin Definitions const int LED = 3; //define digital pin 3 as LED output void setup() { //Pin Configurations pinMode(LED, OUTPUT); //configure the LED pin as an Output } void loop() { //Flash a LED on and off every second digitalWrite(LED, HIGH); //Turn LED on for 1/2 a second delay(500); digitalWrite(LED, LOW); //Turn LED off for 1/2 a second delay(500); } |