文档章节

Android ADK USB 控制 Arduino LED 开关

我係人一個
 我係人一個
发布于 2014/07/31 11:40
字数 337
阅读 268
收藏 1

好吧,废话不多,开始吧!

这次用的是Arduino MEGA ADK

Android完整代码:AALed

个人认为较重要的地方:

public void sendLedSwitchCommand(byte target,Boolean isSwitchedOn){

     byte[] buffer = new byte[3];

     buffer[0] = COMMAND_LED;

     buffer[1] = target;

     if (isSwitchedOn) {

         buffer[2] = VALUE_ON;

     }else {

     buffer[2] = VALUE_OFF;

 }

     if(mOutputStream != null){

     try{

         mOutputStream.write(buffer);

     }catch(IOException e){

         Log.e(TAG“write failed", e);

}

}

}

这个是把开灯和关灯的指令传给Arduino

private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

String action = intent.getAction();

if(ACTION_USB_PERMISSION.equals(action)){

synchronized (this) {

UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

if(intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTEDfalse)){

openAccessory(accessory);

}else{

Log.d(TAG“permission denied for accessory" + accessory);

}

mPermissionRequestPending = false;

}

}else if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) {

UsbAccessory accessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

if(accessory != null && accessory.equals(mAccessory)){

closeAccessory();

}

}

}

};

这个就是接收/连接USB

有个地方非常重要:

一.在res档里创建一个xml档(accessory_filter.xml)

二.在AndroidManifest里的</activity>上面 加入

  <intent-filter>

<actionandroid:name=“android.hardware.usb.action.USB_ACCESSORY_ATTACHED"/>

</intent-filter>

<meta-dataandroid:name=“android.hardware.usb.action.USB_ACCESSORY_ATTACHED"

android:resource=“@xml/accessory_filter"/>

在</activity>后加入:

        <uses-libraryandroid:name=“com.android.future.usb.accessory"/>

之后就是Arduino的

#include <Max3421e.h>

#include <Usb.h>

#include <AndroidAccessory.h>

#define COMMAND_LED 0×2

#define TARGET_PIN_2 0×2

#define VALUE_ON 0×1

#define VALUE_OFF 0×0

#define PIN 2

AndroidAccessory acc(“Manufacturer",

“Model",

“Description",

“Version",

“URL",

“Serial");

byte rcvmsg[3];

void setup(){

Serial.begin(9600);

acc.powerOn();

pinMode(PIN, OUTPUT);

}

void loop(){

if(acc.isConnected()){

int len = acc.read(rcvmsg, sizeof(rcvmsg), 1);

if(len > 0){

if(rcvmsg[0] == COMMAND_LED){

if(rcvmsg[1] == TARGET_PIN_2){

byte value = rcvmsg[2];

if(value == VALUE_ON){

digitalWrite(PIN, HIGH);

}else if(value == VALUE_OFF){

digitalWrite(PIN, LOW);

}

}

}

}

}

}

编译前请把board 转成 ArduinoMega2560/Mega ADK

ArduinoADK环境搭配看这:http://cartonsbase.twgg.org/arduino-adk-building/zh-cn/

© 著作权归作者所有

我係人一個
粉丝 0
博文 1
码字总数 337
作品 0
澳门
私信 提问
android开发笔记之2012版辅助开发工具包(ADT)新功能特性介绍及安装使用

原文链接:http://android.eoe.cn/topic/androidsdk 2012年的Android辅助设备开发工具包(ADK)是Android开放设备协议(AOA)设备的最新参考实现,它被用于帮助Android硬件辅助设备开发者 和...

sisuad
2013/07/09
227
0
(原创) alljoyn物联网实验之手机局域网控制设备

AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用。高通已经将该项目捐赠给了一个名...

ai物联网
2014/11/12
0
0
物联网实验4 alljoyn物联网实验之手机局域网控制设备

  AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用。高通已经将该项目捐赠给了一...

ai物联网
2014/11/12
0
0
kiwiboard运行demo_servo

这个例子的代码在 https://github.com/kiwiboard/kiwiboard/tree/master/src/demo_servo 通过arduino实现舵机转动的一个小例子,整个过程挺简单的。就是在装usb驱动上费了些劲。 首先下载adk...

blindcat
2013/05/24
425
1
android与单片机通过USB通信

请教高手个问题:Android与单片机通过USB通信,单片机做主,Android做从。我看官方论坛可以用ADK,但是官方的单片机是Arduino ,是不是只可以用Arduino 那并且官方的IDE也是支持Arduino 的。...

lhbright
2013/06/26
2.7K
3

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
52分钟前
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
8
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
11
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
10
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部