Arduino Uno 是 2010 年的產品,先前我一直使用 Arduino Duemilanove,最近終於跟 Uno 有了接觸。
因為我還在使用 Windows XP,所以這篇記錄一下怎麼在 Windows XP 上安裝 Arduino Uno 驅動程式。相關資訊請參考「Arduino 筆記 - 準備開發環境」。
當你把 USB Cable 接到電腦上時,會出現「尋找新增硬體精靈」:
選擇「從清單或特定位置安裝(進階)(S)」後按「下一步」:
選擇「瀏覽」:
把路徑指定 "arduino-00xx\drivers" 這個資料夾:
按「下一步」:
按「繼續安裝」:
驅動程式安裝中:
按下「完成」:
驅動程式安裝完成之後,在「裝置管理員」會多出一個 "Arduino UNO (COMx)" 的裝置:
接著你就可以照著「Arduino 筆記 - 準備開發環境」這篇的步驟載入 "File > Examples > 1.Basics > Blink." 這支範例程式測試 Arduino Uno 的運作,看看板子上的 LED 會不會如預期不斷地閃爍。
http://arduino.tw/allarticlesindex/noncategory/131
回覆刪除請問這篇用Eclipse寫Arduino語法 裡頭的第16步驟
core.a的檔案是arduino編譯後產生的檔案還是?
那個 core.a 是 Arduino IDE 編譯 Sketch 時產生的檔案,不管編譯哪一個 Sketch 都會產生 core.a。你可以載入 "File > Examples > 1.Basics > Blink." 這支範例程式,然後按下 Shift + Verify 編譯程式,找出 Blink.cpp.hex 所在的資料夾(參考這篇 http://coopermaa2nd.blogspot.com/2011/05/arduino-ide-hex.html),應該就會看到 core.a。
回覆刪除嗯嗯 我找到了,非常感謝您^^
回覆刪除做到後面eclipse 可以Build但卻沒有產生出ArduinoTest.hex檔
回覆刪除這樣就不能將hex檔燒入進arduino了,不知道版主有沒有使用過eclipse來撰寫燒入arduino的經驗 還請版主解惑>"<
我沒用過 eclipse 寫 arduino 程式
回覆刪除你照著做,結果最後沒產生 ArduinoTest.hex 檔嗎?
那 Build 的時候有沒有產生 error ?
我有點懷疑有沒成功通過編譯
因為第 28 步的畫面下方有個 "1 error ..." 的錯誤。
的確有3個error
回覆刪除C:\Documents and Settings\YaoCherry\桌面\GPS專題\arduino-0022\hardware\arduino\cores\arduino/main.cpp undefined reference to `loop' ArduinoTest
你程式裏有 loop() 這個函式嗎?
回覆刪除"undefined reference to `loop'" 是說找不到 loop() 函式。
有,是用他那篇文章所附上的Blink.cpp"LED閃爍的程式碼"
回覆刪除build後所產生的error
如果你有把 loop() 加到 Blink.cpp,卻還會出現 "undefined reference to 'loop'" 錯誤的話,那麼很可能是沒有把 Blink.cpp 加到專案中喔。你檢查一下 Project Explorer,看看 Blink.cpp 有沒在專案中。可以看一下 step 28. 那張圖,在圖左手邊最下方有 Blink.cpp,你的 project explorer 應該也要有才對。
回覆刪除@@我今天去請教高手,原來是他有些程式有BUG
回覆刪除如果我取得HEX檔後,可以用回arduino022去燒進板子裡嗎?
有 Bug? 願聞其詳。
回覆刪除取得 HEX 檔後,要用 Arduino IDE 把 HEX 檔燒進板子可能沒辦法喔!
得用 avrdude 以下指令的方式,或是用 avrdude-GUI 才行。
哈,剛好我之前有整理筆記,提供你參考:
http://coopermaa2nd.blogspot.com/2011/06/avrdude-arduino-sketch.html
http://coopermaa2nd.blogspot.com/2011/06/avrdude-gui-yuki-labjp-version.html
avrdude-GUI的Programmer、Device下拉式選單都是空白@@"
回覆刪除BUG問題我再詳細問高手變更步驟,再與你分享^^
avrdude-GUI的Programmer、Device下拉式選單都是空白?
回覆刪除我看了一下,應該是 PATH 變數沒有設定的關係。你把底下幾個路徑加到 PATH 環境變數裏就可以了:
C:\arduino-00xx\hardware\tools\avr\bin;
C:\arduino-00xx\hardware\tools\avr\utils\bin;
C:\arduino-00xx\hardware\tools\avr\etc
我把這段說明補充到這篇,謝謝你的反應:
http://coopermaa2nd.blogspot.com/2011/06/avrdude-gui-yuki-labjp-version.html
如果寫成功會出現什麼訊息嗎?
回覆刪除avrdude.exe: stk500_getsync(): not in sync: resp=0x00
avrdude.exe done. Thank you.
這是成功燒入的訊息嗎?
正常情況下不會有訊息
回覆刪除avrdude-GUUI 底下的 progress bar 跑完就代表寫成功
如果有跳出一個 Error 小視窗,代表沒寫成功
大部份情況下是 baud rate 沒設正確才會出錯
請問你用哪張 Arduino 板子,你 baud rate 設多少呢?
這部份在「用 avrdude 燒錄 Arduino Sketch」有相關的資訊,提供你參考。
我使用uno,baud rate設為115200
回覆刪除請問一下,Arduino IDE有沒有語法可以去偵測鍵盤按鍵
例如說:偵測到A鍵被按下,然後我可以將板子的13腳送出訊息
比較快的方法是用serial通訊,我部落格有幾篇文章有提到
回覆刪除avrdude-gui 還是沒試成功嗎?
Seial 通訊相關文章:
回覆刪除Arduino 筆記 – 透過 Serial 通訊控制 LED
Arduino 筆記 – Serial Library 介紹
avrdude-gui還是沒成功...用範例產生的HEX檔燒入還是不行
回覆刪除C:\arduino-00xx\hardware\tools\avr\bin;
C:\arduino-00xx\hardware\tools\avr\utils\bin;
C:\arduino-00xx\hardware\tools\avr\etc
因為我有安裝WinAVR所以路徑是改成AVR的路徑底下
如果你有裝 WinAVR,那要把路徑改成 WinAVR 的路徑底下 (WinAVR 的 avrdude 在哪個子資料夾,可能要查一下)
回覆刪除小弟我現在再用ide撰寫,若偵測到鍵盤WSAD(上下左右)被按下則控制玩具車行進上下左右
回覆刪除直至WSAD(上下左右)從按下回復到未按下,則控制玩具車不繼續行進
我今天測試都不OK! 所以想請您指點一下迷津>"<
以下是我撰寫的程式
const int APin = 12; // the pin that the A is attached to
const int DPin = 13; // the pin that the D is attached to
const int SPin = 11; // the pin that the S is attached to
const int WPin = 10; // the pin that the W is attached to
int incomingByte; // a variable to read incoming serial data into
void setup() {
// initialize serial communication:
Serial.begin(9600);
// initialize the pin as an output:
pinMode(APin, OUTPUT);
pinMode(DPin, OUTPUT);
pinMode(SPin, OUTPUT);
pinMode(WPin, OUTPUT);
}
void loop() {
/* digitalWrite(APin, HIGH);
digitalWrite(DPin, HIGH);
digitalWrite(SPin, HIGH);
digitalWrite(WPin, HIGH);
*/
// see if there's incoming serial data:
if (Serial.available() > 0) {
// read the oldest byte in the serial buffer:
incomingByte = Serial.read();
switch (incomingByte) {
case 'A':
digitalWrite(APin, HIGH);
break;
case 'D':
digitalWrite(DPin, HIGH);
break;
case 'S':
digitalWrite(SPin, HIGH);
break;
case 'W':
digitalWrite(WPin, HIGH);
break;
case 'E':
digitalWrite(WPin, HIGH);
digitalWrite(DPin, HIGH);
break;
case 'Q':
digitalWrite(WPin, HIGH);
digitalWrite(APin, HIGH);
break;
case 'Z':
digitalWrite(APin, HIGH);
digitalWrite(SPin, HIGH);
break;
case 'C':
digitalWrite(DPin, HIGH);
digitalWrite(SPin, HIGH);
break;
}
}
else {
incomingByte = Serial.read();
switch (incomingByte) {
case 'A':
digitalWrite(APin, LOW);
break;
case 'D':
digitalWrite(DPin, LOW);
break;
case 'S':
digitalWrite(SPin, LOW);
break;
case 'W':
digitalWrite(WPin, LOW);
break;
case 'E':
digitalWrite(WPin, LOW);
digitalWrite(DPin, LOW);
break;
case 'Q':
digitalWrite(WPin, LOW);
digitalWrite(APin, LOW);
break;
case 'Z':
digitalWrite(APin, LOW);
digitalWrite(SPin, LOW);
break;
case 'C':
digitalWrite(DPin, LOW);
digitalWrite(SPin, LOW);
break;
}
}
}
所謂測試不 OK 是指什麼? 是說 Arduino 收不到 Serial 的資 料嗎? 還是 OUTPUT pin 沒有動作?
回覆刪除建議你先試一下 http://goo.gl/ynPBE 這支程式確認一下 Serial 通訊正不正常。這支程式的說明可以參考下文的「讀資料」這個段落:
http://coopermaa2nd.blogspot.com/2011/02/arduino-serial-library.html