[软件]ai2 控制 蓝牙小车

新人帖
2014-5-28 13:32:25
64381
本帖最后由 Lee新疆 于 2014-5-28 14:22 编辑

功能介绍
Makeblock 蓝牙小车,安卓手机控制
演示视频

硬件部分
使用 Makeblock 的 入门电子套 + Makeblock 的扩展模块 + 蓝牙模块 + 排线
注:使用 蓝牙模块 前,需要先使用一个 USB蓝牙适配器,在电脑上初始化一下密码(如果机子不自带蓝牙)
1.PNG 2.png 3.png 4.png



软件部分
Arduino IDE 部分
  1. #include <Makeblock.h>
  2. #include <Arduino.h>
  3. #include <SoftwareSerial.h>
  4. #include <Wire.h>

  5. MeBluetooth bluetooth(PORT_6);
  6. MeDCMotor MotorL(M1);  
  7. MeDCMotor MotorR(M2);
  8. MeUltrasonicSensor UltrasonicSensor(PORT_3);

  9. // 缓冲区,我们通常只接受串口的一个字符值,所以不需要缓冲
  10. char buffer[20];
  11. int idx;
  12. void resetBuffer(char* buf, int len){ idx = 0; for(int i = 0; i < len; i++) buf[i] = 0; }

  13. void setup()
  14. {
  15.     Serial.begin(9600);
  16.     bluetooth.begin(9600);
  17.     resetBuffer(buffer, 20);  // 重置缓冲区
  18. }

  19. void loop()
  20. {
  21.   if(bluetooth.available())
  22.   {
  23.     char ch = bluetooth.read();  // 蓝牙端数据格式,如"-123:77|"
  24.     if(ch != '|')
  25.     {
  26.       buffer[idx++] = ch;
  27.     }
  28.     else
  29.     {
  30.       int x, y;
  31.       sscanf(buffer, "%d:%d", &x, &y);  // 格式化输入,神器
  32.       resetBuffer(buffer, 20);
  33.       
  34.       if(-255 <= x && x <= 255 && -255 <= y && y <= 255)  // 极少会数据异常,原因不详,过滤掉就好了
  35.       {
  36.         MotorL.run(y);
  37.         MotorR.run(x);
  38.       }
  39.     }
  40.   }
  41. }
复制以上内容
我自己的总结,蓝牙就是一个移动串口,远程串口,而 Serial 是数据线式串口。
因此个人十分喜欢蓝牙,毕竟和 Serial 编程区别不大。


App Inventor 2 部分
ai2 端不想用按钮式操作,无法动态调速,所以做成了摇杆式,下面我来详细介绍这个程序


主界面,首先选择蓝牙设备,然后拖拽小球,离中心点越远数值越大
5.PNG

当屏幕初始化时,将摇杆小球定位于画布中央
7.png


当选择蓝牙设备时,初始化 BluetoothClient1
6.png


当拖动小球时,移动小球的位置,然后不断发送当前小球的中心点坐标
坐标超过[-255,255]怎么办?别急...

8.png



当手指放开小球后,小球重置到中心位置,并向蓝牙发送中心坐标
9.png


来看一下 convert 函数
首先,set x y 是做一个坐标变换,因为画布的坐标左上角为(0,0),我希望画布中心点为(0,0)
然后,将 x y 坐标从 [-width/2, width/2] 映射到 [-255,255]
然后,发送坐标数据
10.PNG


再来看下映射函数
如果给定 value 超过了 [x1,x2],则直接返回 x1 或 x2
否则转换到映射区间
11.PNG



写在最后
硬件拼接一个晚上,软件部分一天。
快速实现自己的想法,这就是创客的感觉吗?


嘿嘿,最后宣传下自己的网站  科技传播坊http://科.cc/

收藏
1 条回帖
Lee新疆注册会员2014-5-29 20:00:46
沙发硬是给我留了1天半。。
需要登陆后才可进行回复 登录

返回顶部
现在加入我们,注册一个账号 账号登陆 QQ账号登陆 微博账号登陆