skip to main | skip to sidebar

2011年11月13日 星期日

在 Windows XP 上安裝 Arduino Uno 驅動程式

Arduino Uno 是 2010 年的產品,先前我一直使用 Arduino Duemilanove,最近終於跟 Uno 有了接觸。

因為我還在使用 Windows XP,所以這篇記錄一下怎麼在 Windows XP 上安裝 Arduino Uno 驅動程式。相關資訊請參考「Arduino 筆記 - 準備開發環境」。

當你把 USB Cable 接到電腦上時,會出現「尋找新增硬體精靈」:

image

選擇「從清單或特定位置安裝(進階)(S)」後按「下一步」:

image

選擇「瀏覽」:

image 

把路徑指定 "arduino-00xx\drivers" 這個資料夾:

image

按「下一步」:

image

按「繼續安裝」:

image

驅動程式安裝中:

image

按下「完成」:

image

驅動程式安裝完成之後,在「裝置管理員」會多出一個 "Arduino UNO (COMx)" 的裝置:

image

接著你就可以照著「Arduino 筆記 - 準備開發環境」這篇的步驟載入 "File > Examples > 1.Basics > Blink." 這支範例程式測試 Arduino Uno 的運作,看看板子上的 LED 會不會如預期不斷地閃爍。

參考資料

22 意見:

小黑 提到...

http://arduino.tw/allarticlesindex/noncategory/131
請問這篇用Eclipse寫Arduino語法 裡頭的第16步驟
core.a的檔案是arduino編譯後產生的檔案還是?

2011年11月15日 上午10:21
Cooper Maa 提到...

那個 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。

2011年11月15日 上午10:41
小黑 提到...

嗯嗯 我找到了,非常感謝您^^

2011年11月15日 中午12:07
小黑 提到...

做到後面eclipse 可以Build但卻沒有產生出ArduinoTest.hex檔
這樣就不能將hex檔燒入進arduino了,不知道版主有沒有使用過eclipse來撰寫燒入arduino的經驗 還請版主解惑>"<

2011年11月15日 晚上8:09
Cooper Maa 提到...

我沒用過 eclipse 寫 arduino 程式
你照著做,結果最後沒產生 ArduinoTest.hex 檔嗎?
那 Build 的時候有沒有產生 error ?
我有點懷疑有沒成功通過編譯
因為第 28 步的畫面下方有個 "1 error ..." 的錯誤。

2011年11月15日 晚上10:35
小黑 提到...

的確有3個error
C:\Documents and Settings\YaoCherry\桌面\GPS專題\arduino-0022\hardware\arduino\cores\arduino/main.cpp undefined reference to `loop' ArduinoTest

2011年11月16日 凌晨1:59
Cooper Maa 提到...

你程式裏有 loop() 這個函式嗎?
"undefined reference to `loop'" 是說找不到 loop() 函式。

2011年11月16日 上午9:03
小黑 提到...

有,是用他那篇文章所附上的Blink.cpp"LED閃爍的程式碼"
build後所產生的error

2011年11月16日 上午9:36
Cooper Maa 提到...

如果你有把 loop() 加到 Blink.cpp,卻還會出現 "undefined reference to 'loop'" 錯誤的話,那麼很可能是沒有把 Blink.cpp 加到專案中喔。你檢查一下 Project Explorer,看看 Blink.cpp 有沒在專案中。可以看一下 step 28. 那張圖,在圖左手邊最下方有 Blink.cpp,你的 project explorer 應該也要有才對。

2011年11月16日 上午9:41
小黑 提到...

@@我今天去請教高手,原來是他有些程式有BUG
如果我取得HEX檔後,可以用回arduino022去燒進板子裡嗎?

2011年11月16日 晚上11:09
Cooper Maa 提到...

有 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

2011年11月16日 晚上11:32
小黑 提到...

avrdude-GUI的Programmer、Device下拉式選單都是空白@@"
BUG問題我再詳細問高手變更步驟,再與你分享^^

2011年11月17日 上午11:28
Cooper Maa 提到...

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

2011年11月17日 中午12:37
小黑 提到...

如果寫成功會出現什麼訊息嗎?
avrdude.exe: stk500_getsync(): not in sync: resp=0x00

avrdude.exe done. Thank you.
這是成功燒入的訊息嗎?

2011年11月18日 晚上8:41
Cooper Maa 提到...

正常情況下不會有訊息
avrdude-GUUI 底下的 progress bar 跑完就代表寫成功

如果有跳出一個 Error 小視窗,代表沒寫成功
大部份情況下是 baud rate 沒設正確才會出錯
請問你用哪張 Arduino 板子,你 baud rate 設多少呢?

這部份在「用 avrdude 燒錄 Arduino Sketch」有相關的資訊,提供你參考。

2011年11月19日 下午3:05
小黑 提到...

我使用uno,baud rate設為115200
請問一下,Arduino IDE有沒有語法可以去偵測鍵盤按鍵
例如說:偵測到A鍵被按下,然後我可以將板子的13腳送出訊息

2011年11月20日 凌晨2:08
Cooper Maa 提到...

比較快的方法是用serial通訊,我部落格有幾篇文章有提到
avrdude-gui 還是沒試成功嗎?

2011年11月20日 上午8:25
Cooper Maa 提到...

Seial 通訊相關文章:

Arduino 筆記 – 透過 Serial 通訊控制 LED
Arduino 筆記 – Serial Library 介紹

2011年11月20日 下午2:47
小黑 提到...

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的路徑底下

2011年11月20日 下午2:51
Cooper Maa 提到...

如果你有裝 WinAVR,那要把路徑改成 WinAVR 的路徑底下 (WinAVR 的 avrdude 在哪個子資料夾,可能要查一下)

2011年11月20日 下午2:54
小黑 提到...

小弟我現在再用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;

}
}
}

2011年11月23日 晚上7:06
Cooper Maa 提到...

所謂測試不 OK 是指什麼? 是說 Arduino 收不到 Serial 的資 料嗎? 還是 OUTPUT pin 沒有動作?

建議你先試一下 http://goo.gl/ynPBE 這支程式確認一下 Serial 通訊正不正常。這支程式的說明可以參考下文的「讀資料」這個段落:

http://coopermaa2nd.blogspot.com/2011/02/arduino-serial-library.html

2011年11月23日 晚上8:06

張貼留言

 

AltStyle によって変換されたページ (->オリジナル) /