用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
- 用arduino玩andrid adk 【windows】
- ZC-ADK与Arduino Mega-adk的对比
- 随便玩玩Arduino和ADK开发
- ADK板与Arduino MEGA2560板的硬件设计差异
- andrid
- 玩转Arduino之开篇
- 用MDT 2012为企业部署windows 7(三)--安装MDT 2012,ADK以及安装后情况
- 【笔记】Google ADK与arduino 开发环境搭建(USB HOST SHIELD + ARDUINO ROMEO兼容控制板(mega、uno同样适用))
- Google ADK与arduino 开发环境搭建(USB HOST SHIELD + ARDUINO ROMEO兼容控制板(mega、uno同样适用))
- 控制Arduino的利器-Windows Remote Arduino
- 控制Arduino的利器-Windows Remote Arduino
- 手把手玩转 ESP8266 Arduino系列
- 中秋玩游戏:用Windows XP桌面图标玩贪吃蛇
- 如何使用Windows ADK 制作Windows 10 Preinstallation Environment(Windows 10 PE)
- 用pycharm玩spark | windows平台
- android adk
- android adk
- andorid adk
- 266路:决不让一位旅客滞留
- GET 和 POST 的区别?
- VM虚拟引擎初探
- winform 去掉放大 缩小 按钮 固定大小
- .NET深入解析LINQ框架(二:LINQ优雅的前奏)
- 用arduino玩andrid adk 【windows】
- jquery给页面上的iframe添加click或者是focus事件
- MapR 架构、设计、实现分析
- [C++]数据结构:基于链表结构的Chain类和遍历器ChainIterator类
- sql语句(一)统计跟单位目录关联的人员信息表的多个数据
- C#初入门
- 《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记
- Handler初探
- Project Euler 30