2012年10月10日 星期三

Arduino Eclipse plugin 的使用介紹

上篇說明如何安裝 Arduino Eclipse plugin,這篇將介紹 Arduino Eclipse plugin 的使用方法,我們會討論「如何建立 Arduino Project」、「如何使用 Serial Monitor」以及 Import library。

如何建立 Arduino Project

在 Eclipse 裏,建立 Arduino Project 的步驟如下:

  • 點一下 File > New > Project 叫出 Project Wizard 視窗,選擇 New Arduino sketch 後按 Next

2012-10-10_20h55_48

  • 輸入 Project 名稱後,按下 Next

2012-10-10_21h04_42

  • 選擇 Arduino 板子型號和連接的 COM Port。本例使用 Arduino Uno,連接的 COM Port 是 COM5:

image

你可以展開 Board 欄的下拉選單 (Dropdown list) 以選擇合適的 Arduino 板子:

image

  • 按下 Finish 後,Arduino Eclipse plugin 會建立兩個 projects,一個是 Arduino library 的 project (本例為 Arduino_Uno) ,另一個是你輸入的 project (本例為 Blink):

image

正常情況下,我們不會動到 Arduino library 這個 project 的內容,所以你可以不理會這個 project。

  • 當你寫好程式後,按下工具列的鎯頭按鈕 2012-10-10_21h31_35可以編譯程式,按下 AVR 按鈕 2012-10-10_21h32_38 就可以把程式 upload 到 Arduino 板子上

image

  • 如果你想要更改 Arduino 板子型號或 COM Port,在 Project 上按右鍵選擇 Properties,然後展開 Arduino > Arduino 區塊就可以進行改變:

image

SerialMonitor

Arduino Eclipse plugin 提供了一個 Serial Monitor,為了說明 Serial Monitor 的使用方法,我們先來建立一個新的 project,專案名稱把它取為 AnalogReadSerial:

2012-10-10_21h50_01

接著輸入 AnalogReadSerial.cpp 的內容,你可以點選 Arduino IDE 的 File > Examples > 01.Basics > AnalogReadSerial 把程式碼複製過來比較快:

2012-10-10_21h51_59

編譯這支程式,然後把程式上傳到 Arduino 板子上。接著打開 Serial Monitor,步驟如下:

  • 點一下 Window > Show View > Other … 打開 Show View 視窗
  • 選擇 Arduino > Serial monitor view 後按下 OK

image

  • 如下圖,這時候 Serial Monitor 就會顯示在畫面下方了

image

  • 你可以在 Serial monitor 上點兩下把視窗放大,結果如下圖
  • Serial Monitor 的使用辦法有點 tricky,如下圖所示,你必須先點視窗右上角的 + 號圖示,輸入 Serial port 和 baudrate 後按下 OK

image

  • 然後 Eclipse 就會開啟 Serial Port,並且在 Serial Monitor 視窗裏就會看到讀值了:

image

你可以同時開多個 Serial Monitor 視窗,操作步驟跟上述一樣。

Import library

Arduino Eclipse plugin 另一個特色是可以 import library。Import library 的步驟為:

  • 點一下 File > Import 打開底下這個視窗

2012-10-10_22h15_57

  • 選擇你要 import 的 library,可以是 Arduio IDE 內附的標準 library,或者是你個人額外安裝的 library,本例使用我額外安裝的 HCSR04Ultrasonic library (請參考「HC-SR04 超音波感測器介紹」):

image

  • 最後選擇要 import 到哪一個 Project (可按右手邊的 Browser 鈕挑選):

2012-10-10_22h18_09

  • 然後你就可以在專案裏使用 import 進來的 library 了:

image

參考資料

21 意見:

芭蕉葉上聽雨聲 提到...

請問為什麼Serial.begin()和Serial.println()底線都有一波浪狀的紅線?雖然有紅線, 但還是可以正常UPLOAD到Arduino板子.

芭蕉葉上聽雨聲 提到...

請問可以在這裏製作CUI嗎?
沒有CUI的話很難隨時控制Arduino.

Cooper Maa 提到...

Q: 「為什麼Serial.begin()和Serial.println()底線都有一波浪狀的紅線?」
A: 在前一篇 (http://coopermaa2nd.blogspot.tw/2012/10/arduino-eclipse-plugin.html) 第 4 步驟「設定 Plugin」這段,記得要勾選 "Index unused headers" 與 "Index source and header files opened in editor"。好像是因為這兩個選項沒有勾選的關係。你試試看

Cooper Maa 提到...

請問你說的 CUI 是指什麼? Commandline User Interface or? 如果是 Commandline User Interface 具體的東西是指什麼?

芭蕉葉上聽雨聲 提到...

CUI 自訂使用者操作介面
這個就是我要的>>>
Processing + Eclipse + Android = Proclipsoid http://niltoid.blogspot.tw/2012/02/processing-eclipse-android-proclipsoid.html#!/2012/02/processing-eclipse-android-proclipsoid.html
好像還缺少一個Arduino!!
按照他的方法做, 可惜我RUN不出來.
可否麻煩您看一下這篇文章.

Cooper Maa 提到...
作者已經移除這則留言。
Cooper Maa 提到...

Processing 在 Android mode 底下有個功能,可點 File > Export Android project 匯出成 Android Project

這個功能比上面網頁的方法簡單耶! 而且匯出 Android Project 後,用 Eclipse 開啟,程式可以動!

2012年10月26日上午12:23

芭蕉葉上聽雨聲 提到...

呵~~這是個好消息, 不過要怎麼用 Eclipse 開啟呢? open file時要選哪一個檔?
另外, 在eclipse裏要如何把它做成.apk?

Cooper Maa 提到...

Processing 匯出 Android Project 後,還要在 Eclipse 建立一個 Android Project,然後用匯入的方式加到 workspace 裏就可以了。

eclipse 會自動產生 apk 啊
如果沒產生,只要選 Project > Run As Application 就會產生了

芭蕉葉上聽雨聲 提到...

感謝您, 成功!!
產生的.apk放在什麼地方?

Cooper Maa 提到...

apk 檔會輸出到 bin 資料夾底下

不知道是不是 ADT plugin 版本問題,之前我裝的 ADT plugin 是 rev 16,上禮拜升級成 rev 20 後,現在 Eclipse 一啟動就整個卡住.... 弄了半個小時還是找不出原因,看來我得重裝 Eclipse 了...很晚了,我過兩天再來重裝...

芭蕉葉上聽雨聲 提到...

在bin裏面找到了.

j_lo2005 提到...

請問一下,我試著使用eclipse來撰寫程式碼,但在loop(), 只會run一次,就停下來了。不知您有沒有碰過這個問題
謝謝!

j_lo2005 提到...

對不起,我太急著找答案了。我試了一下,發現是因為我使用了digital pin0, 所造成的,如果不用的話,就沒問題了。
不太了解為什麼使用了pin0, 就只會loop()1次。
謝謝!

Cooper Maa 提到...

只 run 一次? 應該是不致於,我晚上回去試試。

BTW, 你可以把你的程式碼貼上來嗎?

Cooper Maa 提到...

@j_lo2005,
Can you post your code here?

j_lo2005 提到...

我有試著用arduino跟eclipse比較,二者都會出錯。但把digital pin0拿掉,就正常了。
---------------------------
#include "blink.h"

int ledPin0=0;
int ledPin1=1;
int ledPin2=2;
int ledPin3=3;
int ledPin4=4;
int ledPin5=5;
int ledPin6=6;

void style(void);

void setup()
{
for(unsigned char i=0;i<=6;i++)
pinMode(i,OUTPUT);
}

void loop()
{
style();
}

void style(void)
{
unsigned char j;
for(j=0;j<=6;j++)
{
digitalWrite(j,HIGH);
delay(2000);
}

for(j=6;j>=0;j--)
{
digitalWrite(j,LOW);
delay(2000);

}
}

Cooper Maa 提到...

unsigned char 值域是 0 到 255

假若 j = 0, 0 減 1 之後應該是 255 喔
這樣 for loop 可能就出不來了

你要不要把 unsigned char 換成 int 試試看

j_lo2005 提到...

改成int之後,d0就正常了。
謝謝!

Unknown 提到...

請問出現serial 和 println 的錯誤,這是哪裡的設定沒有做好,另外,我要upload到板子上,他會跳出視窗顯示,No AVR project selected。

我根據Arduino eclipse plugin的安裝與使用介紹操作,是我還有哪些地方設定錯誤還是還有缺少軟體安裝呢?

謝謝

Cooper Maa 提到...

serial 和 println 的錯誤是指? Eclipse 有沒有顯示什麼錯誤訊息?

Upload 時出現 "No AVR project selected" 錯誤,是因為沒有選擇 Project,只要在專案視窗先點一下你的 project,再試一次應該就可以囉