极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21203|回复: 13

【Android开源】发上我的Boxz Android Client求测试,不会Android的就拿去用吧

[复制链接]
发表于 2012-9-8 15:28:38 | 显示全部楼层 |阅读模式
本帖最后由 幻生幻灭 于 2012-9-13 23:24 编辑

新手发帖请多指教。
以前不会写Android程序,直到我找到了这个:  Amarino
http://www.amarino-toolkit.net/index.php/amarino-api.html
就用这个库写成了Android客户端,使用蓝牙通讯。当然这是写给和我一样不会写Android的人用的,高手就不用看了。
该客户端可以发送 上下左右方向指令、控制速度指令、两个动作指令,界面是6个按钮一个滑动条。
文件在这里:(一个Android源码,一个Android安装程序,还有一个Arduino端程序示范)
http://code.google.com/p/arduino-android-boxz/downloads/list

使用起来很简单,下载Android 的apk文件安装,打开后输入你的Arduino蓝牙模块的mac地址,确认,就开始控制了。
Arduino端的程序程序可以参考这个:(你只要把你的控制速度,转向,动作的命令在对应的地方加进去就行了)

  1. /*
  2.   MarioBox (works with Amarino and the MarioBox app)
  3.   
  4.   - based on the Amarino Multicolor Lamp tutorial
  5.   - receives events from Android.
  6.   
  7.   author: Bert Zhang - August 2012
  8. */

  9. #include <MeetAndroid.h>

  10. // declare MeetAndroid so that you can call functions with it
  11. MeetAndroid meetAndroid;

  12. // set the speed of the motor
  13. int speed = 0;
  14. int action;

  15. // currentstate reflects the current direction of the box
  16. int currentstate = 1;
  17. const int forwardstate = 1;
  18. const int leftstate = 2;
  19. const int rightstate = 3;
  20. const int backstate = 9;

  21. void setup()  
  22. {
  23.   // my bluetooth module is configured to this baud
  24.   Serial.begin(9600);
  25.   
  26.   // register callback functions, which will be called when an associated event occurs.
  27.   meetAndroid.registerFunction(changespeed, 'p');
  28.   meetAndroid.registerFunction(goforward, 'w');  
  29.   meetAndroid.registerFunction(turnleft, 'a');
  30.   meetAndroid.registerFunction(turnright, 'd');
  31.   meetAndroid.registerFunction(goback, 's');
  32.   meetAndroid.registerFunction(actionA, 'A');
  33.   meetAndroid.registerFunction(actionB, 'B');

  34.   // set led 13 as an indicator light
  35.   pinMode(13,OUTPUT);
  36. }

  37. void loop()
  38. {
  39.   // you need to keep this in your loop() to receive events
  40.   meetAndroid.receive();
  41. }

  42. /*
  43. * Whenever the MarioBox app changes the speed
  44. * this function will be called
  45. */
  46. void changespeed(byte flag, byte numOfValues)
  47. {
  48.   //get speed value from Anriod
  49.   speed = meetAndroid.getInt();
  50. //indicate
  51. flash();
  52. }

  53. /*
  54. * Whenever the MarioBox app changes the direction
  55. * these functions will be called
  56. */
  57. void goforward(byte flag, byte numOfValues)
  58. {
  59.   action = meetAndroid.getInt();
  60.   switch(action){
  61.     case 1:
  62.     /*
  63.          向前走的命令
  64.     */
  65.        break;
  66.     case 0:
  67.     /*
  68.         停止命令
  69.     */
  70.        break;
  71.     default:break;
  72.   }
  73.   currentstate = forwardstate;
  74.   //indicate
  75.   flash();
  76. }

  77. void turnleft(byte flag, byte numOfValues)
  78. {
  79.   action = meetAndroid.getInt();
  80.   switch(action){
  81.     case 1:
  82.     /*
  83.          向左拐的命令
  84.     */
  85.        break;
  86.     case 0:
  87.     /*
  88.         停止命令
  89.     */
  90.        break;
  91.     default:break;
  92.   }
  93.   //update state
  94.   currentstate = leftstate;
  95.   //indicate
  96.   flash();
  97. }

  98. void turnright(byte flag, byte numOfValues)
  99. {
  100.   action = meetAndroid.getInt();
  101.   switch(action){
  102.     case 1:
  103.     /*
  104.          向右转的命令
  105.     */
  106.        break;
  107.     case 0:
  108.     /*
  109.         停止命令
  110.     */
  111.        break;
  112.     default:break;
  113.   }
  114.   //update state
  115.   currentstate = rightstate;
  116.   //indicate
  117.   flash();
  118. }

  119. void goback(byte flag, byte numOfValues)
  120. {
  121.   action = meetAndroid.getInt();
  122.   switch(action){
  123.     case 1:
  124.     /*
  125.          向后退的命令
  126.     */
  127.        break;
  128.     case 0:
  129.     /*
  130.         停止命令
  131.     */
  132.        break;
  133.     default:break;
  134.   }
  135.   //update state
  136.   currentstate = backstate;
  137.   //indicate
  138.   flash();
  139. }

  140. void actionA(byte flag, byte numOfValues)
  141. {
  142.   /*
  143.   动作1命令
  144.   */
  145.   flash();
  146. }

  147. void actionB(byte flag, byte numOfValues)
  148. {
  149.   /*
  150.   动作2命令
  151.   */
  152.   flash();
  153. }



  154. //LED onboard flashes indicates event received
  155. void flash()
  156. {
  157.   digitalWrite(13,HIGH);
  158.   delay(100);
  159.   digitalWrite(13,LOW);
  160.   delay(100);
  161. }

复制代码

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 新人贴含金量很高

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-9-8 15:36:27 | 显示全部楼层
本帖最后由 幻生幻灭 于 2012-9-13 23:27 编辑

代码已经合并到楼上

预留更新

我做了简单的测试{:soso_e113:}
http://www.geek-workshop.com/for ... =1845&pid=13197
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-8 15:39:46 | 显示全部楼层
后天开学正式上课了,没有时间完成我的Boxz了,大家有需要的拿去测试一下这个能不能用
回复 支持 反对

使用道具 举报

发表于 2012-9-8 16:33:13 | 显示全部楼层
本帖最后由 幻生幻灭 于 2012-9-13 23:37 编辑

补充上传了MeetAndroid_4 Arduino库文件和修改后的Arduino程序

1. 蓝牙连接成功(印象里,用Amarino好像需要改波特率?难道默认的9600也可以了?)
2. 需要输入蓝牙ID比较郁闷。。不是自动搜索
3. 不知道你那个android上的Bar值范围是不是0-255? 电机速度范围是0-255,但是有效范围是150-255
4. 方向按键操作无响应,手臂一直在动作(动作A或者B执行),可能是我的Arduino代码没改好,呵呵


有机会的话,你可以用Arduino直接驱动几个LED来测试下效果。

水平有限,小做测试!
加油{:soso_e179:}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2012-9-9 07:33:30 | 显示全部楼层
很好的分享,不错!
回复 支持 反对

使用道具 举报

发表于 2012-9-9 10:59:04 | 显示全部楼层
Amarino 是个好东西,楼主加油!
回复 支持 反对

使用道具 举报

发表于 2012-9-13 23:38:04 | 显示全部楼层
Amarino 很强大。。。一直没学会哈{:soso_e134:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-18 16:59:49 | 显示全部楼层
幻生幻灭 发表于 2012-9-8 16:33
补充上传了MeetAndroid_4 Arduino库文件和修改后的Arduino程序

1. 蓝牙连接成功(印象里,用Amarino好像 ...

对,我去改进改进……Bar值原来是0-255的,方向键是按住不放有效的。
回复 支持 反对

使用道具 举报

发表于 2012-9-18 19:40:19 | 显示全部楼层
HilbertZ 发表于 2012-9-18 16:59
对,我去改进改进……Bar值原来是0-255的,方向键是按住不放有效的。

额..好像我是点击的,呵呵
回复 支持 反对

使用道具 举报

发表于 2013-2-13 11:32:20 | 显示全部楼层
幻生幻灭 发表于 2012-9-18 19:40
额..好像我是点击的,呵呵

您好 请问 Arduino蓝牙模块的mac地址?
回复 支持 反对

使用道具 举报

发表于 2013-2-15 22:12:03 | 显示全部楼层
chengongp 发表于 2013-2-13 11:32
您好 请问 Arduino蓝牙模块的mac地址?

自己搜一个 蓝牙显示MAC地址的软件吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 03:17 , Processed in 0.043891 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表