设为首页收藏本站

极客工坊

 找回密码
 注册

只需一步,快速开始

查看: 2223|回复: 16

《博哥玩Arduino》-蓝牙小车-实操篇

[复制链接]
发表于 2016-11-5 22:33:27 | 显示全部楼层 |阅读模式
本帖最后由 单片机菜鸟 于 2017-7-11 16:04 编辑

app下载地址:
http://shouji.baidu.com/software/11629425.html
http://android.myapp.com/myapp/d ... ty.app.bluetoothcar

元器件昨天就拿到手,但是既然周五了,谁还会在家里,肯定去浪(其实就是说偷懒)。然后今天吃完晚饭就把剩下的东西做完。如果有疑问的话,可以先看基础篇《博哥玩Arduino》-蓝牙小车-基础篇
http://www.geek-workshop.com/thread-27767-1-1.html
(出处: 极客工坊)
  废话少说,上个视频:



再上几个图片:
1.png

2.png

3.png

4.png

5.png

6.png

7.png

先说一下具体电路连接:
第一步:12V 18650充电电池 接到 L298N 电机驱动模块的 +12V 以及 GND,+5V 电源输出给Arduino UNO R3板子供电。有些人可能说如果电机供电以及板子供电是同一个电源,可能电机转动会影响到板子供电。目前我测试是没有发现问题。可能原因是本来板子耗电量也不是很大,并且12V电池本身电量还是足够,不会出现供电不足问题。

第二步:左电机连接到OUT3和OUT4,右电机连接到OUT1和OUT2
第三步:就是L298N的IN控制引脚和Arduino板子的连接。IN1连接到引脚6,IN2连接到引脚7,IN3连接到引脚4,IN4连接到引脚5.

接下来就是测试工作了:

1.测试电机是否可以工作,方法:硬件测试,IN1连接到Arduino板子 +5V  IN2连接到GND,可以顺便观察转向,反了就把接线调转过来。

2.重头戏,该上硬菜,上最终代码:

  1. /*
  2. 日期:2016/11/05
  3. 功能:蓝牙小车程序
  4. 作者:单片机菜鸟
  5. */

  6. #define IN1 6 // 7 6 右轮
  7. #define IN2 7
  8. #define IN3 4 // 5 4 左轮
  9. #define IN4 5

  10. #define LEFT '3' //左转编码
  11. #define RIGHT '4'//右转编码
  12. #define GO '1'//前进编码
  13. #define BACK '2'//后退编码
  14. #define STOP '0'//停止编码

  15. void setup() {
  16.   // put your setup code here, to run once:
  17.   Serial.begin(9600);
  18.   pinMode(IN1,OUTPUT);
  19.   pinMode(IN2,OUTPUT);
  20.   pinMode(IN3,OUTPUT);
  21.   pinMode(IN4,OUTPUT);
  22.   initCar();
  23. }

  24. void loop() {
  25.   // put your main code here, to run repeatedly:
  26.   if(Serial.available()>0){
  27.       char ch = Serial.read();
  28.       if(ch == GO){
  29.          //前进
  30.          go();
  31.       }else if(ch == BACK){
  32.          //后退
  33.          back();
  34.       }else if(ch == LEFT){
  35.          //左转
  36.          turnLeft();
  37.       }else if(ch == RIGHT){
  38.         //右转
  39.         turnRight();
  40.       }else if(ch=='0'){
  41.         //停车
  42.         stopCar();
  43.       }
  44.     }
  45. }

  46. void initCar(){
  47.   //默认全是低电平 停止状态
  48.   digitalWrite(IN1,LOW);      
  49.   digitalWrite(IN2,LOW);
  50.   digitalWrite(IN3,LOW);   
  51.   digitalWrite(IN4,LOW);
  52. }

  53. /**
  54. * 左转
  55. */
  56. void turnLeft(){
  57.   digitalWrite(IN1,HIGH);      
  58.   digitalWrite(IN2,LOW);         //右轮前进
  59.   digitalWrite(IN3,LOW);      
  60.   digitalWrite(IN4,LOW);         //左轮不动
  61. }

  62. /**
  63. * 右转
  64. */
  65. void turnRight(){
  66.   digitalWrite(IN1,LOW);      
  67.   digitalWrite(IN2,LOW);         //右轮不动
  68.   digitalWrite(IN3,HIGH);      
  69.   digitalWrite(IN4,LOW);         //左轮前进
  70. }

  71. /**
  72. * 前进
  73. */
  74. void go(){
  75.   digitalWrite(IN1,HIGH);      
  76.   digitalWrite(IN2,LOW);         //右轮前进
  77.   digitalWrite(IN3,HIGH);      
  78.   digitalWrite(IN4,LOW);         //左轮前进
  79. }

  80. /**
  81. * 倒车
  82. */
  83. void back(){
  84.   digitalWrite(IN1,LOW);      
  85.   digitalWrite(IN2,HIGH);        //右轮后退
  86.   digitalWrite(IN3,LOW);      
  87.   digitalWrite(IN4,HIGH);        //左轮后退
  88. }

  89. /**
  90. * 停车
  91. */
  92. void stopCar(){
  93.   initCar();
  94. }
复制代码



这里比较重要的是编码,一定要跟app端设置的编码一致。如果你没有使用自定义编码的话,可以忽略,直接拷贝代码使用。

最终总结一下:

蓝牙小车前后制作以及编程花了大概1天半,其实可以在这个基础上扩展开来,从Arduino+传感器+蓝牙+app这个角度去考虑,DIY一些比较好玩的东西。当然,小车还是有些地方可以继续改进,可以加入避障,也可以寻迹,也可以改造成什么圆盘清洁机器人之类的。好了,该洗洗睡了。

博哥系列文章:
《博哥玩Arduino》-蓝牙小车-基础篇
     http://www.geek-workshop.com/thread-27767-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-蓝牙小车-实操篇
     http://www.geek-workshop.com/thread-27777-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-Arduino语法手册
     http://www.geek-workshop.com/thread-27843-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-WIFI小车-基础篇
     http://www.geek-workshop.com/thread-27850-1-1.html (出处: 极客工坊)
《博哥玩Arduino》-WIFI小车-调试实操篇
     http://www.geek-workshop.com/thread-27853-1-1.html (出处: 极客工坊)
《博哥玩Arduino》- 蓝牙模块HC06 重命名
     http://www.geek-workshop.com/thread-27897-1-1.html (出处: 极客工坊)
《博哥玩Arduino》- 蓝牙RGB灯
    http://www.geek-workshop.com/thread-27892-1-1.html  (出处: 极客工坊)
回复

使用道具 举报

发表于 2016-11-8 19:37:43 | 显示全部楼层
很强大,可以跑了。学习中。就是功率的控制还需要想办法解决哦。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-8 19:50:44 | 显示全部楼层
catnull 发表于 2016-11-8 19:37
很强大,可以跑了。学习中。就是功率的控制还需要想办法解决哦。

电机功率很难控制  消耗都在电机那里
回复 支持 反对

使用道具 举报

发表于 2016-11-13 11:11:03 | 显示全部楼层
为什么我用你的程序会编译出错呢 大神
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-13 14:30:38 | 显示全部楼层
冰棱下 发表于 2016-11-13 11:11
为什么我用你的程序会编译出错呢 大神

代码量不多  怎么会出错了  提示什么错误信息呢
回复 支持 反对

使用道具 举报

发表于 2016-11-13 19:34:13 | 显示全部楼层
单片机菜鸟 发表于 2016-11-13 14:30
代码量不多  怎么会出错了  提示什么错误信息呢

initCar(); 未定义
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-13 20:32:22 | 显示全部楼层

程序里面已经有定义这个了
回复 支持 反对

使用道具 举报

发表于 2016-11-19 21:36:35 | 显示全部楼层
楼主大神,请问我按照你的程序,APP设置也没错,为什么APP中按 右 没反应(前左后都是好的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-19 21:59:15 | 显示全部楼层
湛南北望 发表于 2016-11-19 21:36
楼主大神,请问我按照你的程序,APP设置也没错,为什么APP中按 右 没反应(前左后都是好的

你的右编码是什么?你得跟你arduino上的编码对上额
回复 支持 反对

使用道具 举报

发表于 2016-11-20 16:18:09 | 显示全部楼层
楼主大神,请问我按照你的程序和APP,但是APP按键中右没有反应,这是怎么回事
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册  

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )  

GMT+8, 2017-8-21 22:05 , Processed in 0.042258 second(s), 10 queries , File On.

Powered by Discuz! X3.3 Licensed

© 2001-2017 Comsenz Inc.

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