2012-08-23 47 views
3

我想要做的就是編寫Arduino到Android「hello world」程序,從「Arduino開始Android ADK」開始。如何編譯Arduino ADK的hello世界程序?

下面是代碼

#include <Max3421e.h> 
#include <Usb.h> 
#include <AndroidAccessory.h> 

#define ARRAY_SIZE 12 

AndroidAccessory acc("Manufacturer", "Model", "Description", 
        "Version", "URI", "Serial"); 

char hello[ARRAY_SIZE] = {'h','e','l','l','o',' ', 
          'w','o','r','l','d','!'}; 

void setup() { 
    Serial.begin(115200); 
    acc.powerOn(); 
} 

void loop() { 
    if (acc.isConnected()) { 
    for(int x = 0; x < ARRAY_SIZE; x++) { 
     Serial.print(hello[x]); 
     delay(250); 
    } 
    Serial.println(); 
    delay(250); 
    } 
} 

而且我的錯誤

C:\Users\efossum\arduino-1.0.1\libraries\UsbHost/AndroidAccessory.h: In function 'void setup()': 
C:\Users\efossum\arduino-1.0.1\libraries\UsbHost/AndroidAccessory.h:68: error: 'void AndroidAccessory::powerOn()' is private 
sketch_aug23a:14: error: within this context 

我AndroidAccessory.h看了看,果然是私有的,但我應該怎麼改變,使這項工作?我認爲使功能pulic不是答案。

+0

嗨,Eric。你有沒有設法編譯代碼?我試着在IDE v22和v1.0.2上編譯,使用arduino labs網站http://labs.arduino.cc/ADK/AccessoryMode從步驟1的庫。我在Windows 8和Ubuntu 12.10上嘗試過,像你一樣的錯誤。這真的令人沮喪 – androidu

回答

0

我做到了!我只是在<AndroidAccessory.h>標題公開中提供了read()函數的可見性,並且使用了begin()而不是powerOn(),就像Mickaël所說,現在代碼編譯成功了。

+0

begin和poweron有什麼區別? –

+0

@Eric Fossum - 在最新庫的AndroidAccessory.cpp中,我看到添加了powerOn()以將返回類型從void更改爲boolean(true)。我不明白爲什麼這是必要的,除了打破向後兼容性。 – androidu

+0

另一件要提及的是,我編譯代碼後,我用這個博客的Android部分的代碼http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-與你的手機代碼和解釋/和雖然它一年前對我來說,它不再工作在運行android 2.3.4的Xperia Play上。我很難讀出拋出的異常,因爲手機連接到了arduino而不是PC-eclipse – androidu

0

嘗試將使用Arduino 0.22或0.23 IDE

+0

它說1.0.1,我怎麼知道它是哪個0.xx數字? –

+0

儘管我無法證明這是答案,但我擁有相同的代碼,並且工作正常。 –

+0

我正在運行1.0.2這是最新的,現在它不工作... –

3

看來:

acc.begin(); 
0

答案也可以說是在選擇了錯誤的董事會:

acc.powerOn() 

可以替換編譯。如果你選擇了錯誤的板子,Arduino軟件無法決定你擁有哪個芯片或引腳。

+0

不。它不是 – androidu

相關問題