2012年2月16日 星期四

如何讓 Arduion 1.0 能夠編譯 ADK 範例韌體 demokit.ino

 

ADK (Android Open Accessory Development Kit)裡面附了一個 Arduino 的範例程式,可以用來與 Android 平台測試連結,但是只能在 Arduino-0023下順利編譯,如果放到Arduino 1.0就會出現錯誤訊息,因此必須修改原始程式才行。修改步驟如下:

1.下載、安裝 Arduino 1.0。

2.下載ADK(http://developer.android.com/guide/topics/usb/adk.html),解壓縮得到兩個子目錄(firmware/arduino_libs/AndroidAccessory 以及 firmware/arduino_libs/USB_Host_Shield)複製到 <arduino_installation_root>/libraries/ 之下。

3.下載位置CapSense (http://www.arduino.cc/playground/Main/CapSense)
解壓縮CapSense得到子資料夾,複製資料夾CapSense 到<arduino_installation_root>/libraries/ 之下

4.修改以下檔案的內容

<arduino_installation_root>\libraries\USB_Host_Shield\Max3421e.h Line37
        #include "WProgram.h" 改成=> #include " Arduino.h "

<arduino_installation_root>\libraries\AndroidAccessory \AndroidAccessory.h Line20
       #include "WProgram.h" 改成=> #include " Arduino.h "

<arduino_installation_root>\libraries\USB_Host_Shield\Max_LCD.cpp Line38
       #include "WProgram.h" 改成=> #include " Arduino.h "

       inline void Max_LCD::write(uint8_t value) { 改成=> inline size_t Max_LCD::write(uint8_t value) {

<arduino_installation_root>\libraries\USB_Host_Shield\Max_LCD.h Line101
      virtual void write(uint8_t); 改成=> virtual size_t write(uint8_t);

PS.如果在測試程式內出現Wire.receive改成=> Wire.read
PS.如果在測試程式內出現Wire.send 改成=> Wire.write

5.啟動Arduino1.0,選擇正確的Serial port 以及 Board代號(Arduino Mega 2560 or Mega ADK)
clip_image002

6. 開啟 demokit.ino ,編譯應該可以成功,若仍然有問題就將程式內有關 joystick 相關的程式碼通通disable,(修改完畢的程式  http://xduino.blogspot.com/2012/02/apk-demokitino-arduion-10.html)

7.接下來下載程式到 Arduino Mega ADK控制板上(我是用 Teemino),就可以成功與Android平台連結了。

image

1 則留言:

  1. 您好,
    想請問您是否發生過Arduino ADK 連接Android手機時,
    手機的ADK Demo程式沒有反應,一直停在等待連接的狀況?

    我已經依照您的教學修改demokit程式可以編譯並Upload至ADK,
    但手機端就是一職沒有反應,
    監控Terminal則會出現Start


    這片Ardunino MEGA ADK R3是剛買的,
    我已經換過許多手機測試,有點懷疑是不是板子有問題,
    冒昧打擾您,請多包涵!

    Alias (aliasli@gmail.com)

    回覆刪除