用arduino玩andrid adk 【windows】

来源:互联网 发布:json decode 参数 编辑:程序博客网 时间:2024/05/16 01:37

最后的效果如下

http://v.youku.com/v_show/id_XNDc4NjYxOTQw.html

本文和参考文献中的过程是差不多的。介于参考文献中第一篇文章中有些链接不好用了。这里重新整理一下。


用到的硬件:

1) Arduino Duemilanove 

2) USB Host Shield 2.0

3) Nexus One

4)按钮一个

5)LED一个

6)2组连接线

7)一根USB转串口的线和一根接手机的小口USB线

用到的软件:

1)Android SDK (https://developer.android.com/sdk/index.html#download )

2)Ardinuo IDE (http://arduino.cc/en/Main/Software )

3)USB HOST SHIELD 2.0 ( https://github.com/felis/USB_Host_Shield_2.0 )

4)adk_release_20120606.zip (https://dl-ssl.google.com/android/adk/adk_release_20120606.zip )


过程:


A 先折腾Ardinuo这部分

1)下载Ardinuo IDE并解压。也是解压就能用。

2)下载USB HOST SHIELD 2.0 和adk_release_20120606.zip 并解压

3)把USB_Host_Shiled_2.0改名为USB_Host_Shield 放到Ardinuo IDE的/libraries/下面

4)连接ardinuo开发版和电脑。如果第一次连接需要安装驱动。在aruinuo IDE所在目录的drivers有驱动程序。Tools → Board选好版子类型。Tools->Serial Port选串口。串口号可以在设备管理器里看到。

5)打开Ardinuo IDE,选择File → Examples → USB Host Shield → adk → demokit_20

不知为什么。我发现网上有各种版本的demokit。我这里是简版的。只有一个输入和一个输出。代码如下:

#include <avrpins.h>#include <max3421e.h>#include <usbhost.h>#include <usb_ch9.h>#include <Usb.h>#include <usbhub.h>#include <avr/pgmspace.h>#include <address.h>#include <adk.h>#include <printhex.h>#include <message.h>#include <hexdump.h>#include <parsetools.h>USB Usb;USBHub hub0(&Usb);USBHub hub1(&Usb);ADK adk(&Usb,"Google, Inc.",            "DemoKit",            "DemoKit Arduino Board",            "1.0",            "http://www.android.com",            "0000000012345678");uint8_t  b, b1;#define  LED1_RED       3#define  BUTTON1        2void setup();void loop();void init_buttons(){pinMode(BUTTON1, INPUT);// enable the internal pullupsdigitalWrite(BUTTON1, HIGH);}void init_leds(){digitalWrite(LED1_RED, 0);pinMode(LED1_RED, OUTPUT);}void setup(){Serial.begin(115200);Serial.println("\r\nADK demo start");                if (Usb.Init() == -1) {          Serial.println("OSCOKIRQ failed to assert");        while(1); //halt        }//if (Usb.Init() == -1...init_leds();init_buttons();b1 = digitalRead(BUTTON1);}void loop(){  uint8_t rcode;  uint8_t msg[3] = { 0x00 };   Usb.Task();      if( adk.isReady() == false ) {     analogWrite(LED1_RED, 255);     return;   }   uint16_t len = sizeof(msg);      rcode = adk.RcvData(&len, msg);   if( rcode ) {     USBTRACE2("Data rcv. :", rcode );   }    if(len > 0) {     USBTRACE("\r\nData Packet.");    // assumes only one command per packet    if (msg[0] == 0x2) {      switch( msg[1] ) {        case 0:          analogWrite(LED1_RED, 255 - msg[2]);          break;      }//switch( msg[1]...      }//if (msg[0] == 0x2...   }//if( len > 0...      msg[0] = 0x1;   b = digitalRead(BUTTON1);   if (b != b1) {     USBTRACE("\r\nButton state changed");     msg[1] = 0;     msg[2] = b ? 0 : 1;     rcode = adk.SndData( 3, msg );     if( rcode ) {       USBTRACE2("Button send: ", rcode );     }     b1 = b;    }//if (b != b1...      delay( 10 );       }

6)File->Upload把程序送到版子里. 

B 下面开始折腾Android这头

1)下载Android SDK并解压。现在比以前方便多了,eclipse,sdk.adt全都打包好了。解压就能用。打开里面的eclipse

2) 解压adk_release_20120606.zip 到ADK_release_20120606。打开eclipse-》File->New ->Project...->Android Project from existing code,选择ADK_release_20120606\app

3)出现demokitlaunch工程。如果出现“The import com.android.future cannot be resolved” 的错误,说明你没有用google api。请打开adt-bundle-windows-x86\sdk\tools\android.bat 选择google api下载。

4) 把手机和电脑用USB线连上。最好把其他模拟器和连接的手机拔掉。后面的步骤会简单些。

5)在eclipse里右键demokitlaunch工程,选run as ->android application。demokit在手机上运行。手机可以跟电脑断掉。

C 下面折腾Ardinuo和Android的连接

1)首先当然是把Ardinuo和Android用USB线连起来。这里要用到 USB Host Shield 2.0。把它插在ardinuo Duemilanove上就行了。然后USB线一头接 USB Host Shield 另一头接手机。

2)把LED灯接在3号数字口,按钮接在2号数字口。

3)手机界面上点IN,按按钮可以看到手机上显示按钮按下。手机界面上点OUT,滑动手机上第一条会控制LED亮度。



参考文献:

http://intijk.com/?p=977

https://github.com/felis/USB_Host_Shield_2.0
http://zwz94.blog.163.com/blog/static/32060395201222111254654/
https://developer.android.com/sdk/index.html#download
http://stackoverflow.com/questions/6080147/adk-and-eclipse-woes-com-android-future-and-usbaccessory 
https://dl-ssl.google.com/android/adk/adk_release_20120606.zip
https://developer.android.com/tools/adk/adk.html 

原创粉丝点击