单片机菜鸟 发表于 2016-11-5 22:33:27

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

本帖最后由 单片机菜鸟 于 2017-7-11 16:04 编辑

app下载地址:
http://shouji.baidu.com/software/11629425.html
http://android.myapp.com/myapp/detail.htm?apkName=com.wty.app.bluetoothcar

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

http://v.youku.com/v_show/id_XMTgwNzE1NTEyOA==.html

再上几个图片:














先说一下具体电路连接:
第一步: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板子 +5VIN2连接到GND,可以顺便观察转向,反了就把接线调转过来。

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

/*
日期:2016/11/05
功能:蓝牙小车程序
作者:单片机菜鸟
*/

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

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

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
initCar();
}

void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0){
      char ch = Serial.read();
      if(ch == GO){
         //前进
         go();
      }else if(ch == BACK){
         //后退
         back();
      }else if(ch == LEFT){
         //左转
         turnLeft();
      }else if(ch == RIGHT){
      //右转
      turnRight();
      }else if(ch=='0'){
      //停车
      stopCar();
      }
    }
}

void initCar(){
//默认全是低电平 停止状态
digitalWrite(IN1,LOW);      
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);   
digitalWrite(IN4,LOW);
}

/**
* 左转
*/
void turnLeft(){
digitalWrite(IN1,HIGH);      
digitalWrite(IN2,LOW);         //右轮前进
digitalWrite(IN3,LOW);      
digitalWrite(IN4,LOW);         //左轮不动
}

/**
* 右转
*/
void turnRight(){
digitalWrite(IN1,LOW);      
digitalWrite(IN2,LOW);         //右轮不动
digitalWrite(IN3,HIGH);      
digitalWrite(IN4,LOW);         //左轮前进
}

/**
* 前进
*/
void go(){
digitalWrite(IN1,HIGH);      
digitalWrite(IN2,LOW);         //右轮前进
digitalWrite(IN3,HIGH);      
digitalWrite(IN4,LOW);         //左轮前进
}

/**
* 倒车
*/
void back(){
digitalWrite(IN1,LOW);      
digitalWrite(IN2,HIGH);      //右轮后退
digitalWrite(IN3,LOW);      
digitalWrite(IN4,HIGH);      //左轮后退
}

/**
* 停车
*/
void stopCar(){
initCar();
}



这里比较重要的是编码,一定要跟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(出处: 极客工坊)

catnull 发表于 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-13 19:34
initCar(); 未定义

程序里面已经有定义这个了

湛南北望 发表于 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按键中右没有反应,这是怎么回事

单片机菜鸟 发表于 2016-11-20 16:37:27

湛南北望 发表于 2016-11-20 16:18
楼主大神,请问我按照你的程序和APP,但是APP按键中右没有反应,这是怎么回事

你的右编码是什么?你得跟你arduino上的编码对上额有问题可以加我2421818708

老人家 发表于 2016-12-31 03:11:45

电机驱动模块怎么没有使能端?

单片机菜鸟 发表于 2016-12-31 09:32:14

老人家 发表于 2016-12-31 03:11
电机驱动模块怎么没有使能端?

不是默认跳帽连接就会使能

chen果冻 发表于 2017-1-2 21:37:22

楼主app能分享吗

单片机菜鸟 发表于 2017-1-2 22:21:35

chen果冻 发表于 2017-1-2 21:37
楼主app能分享吗

请留下你的邮箱
页: [1] 2
查看完整版本: 《博哥玩Arduino》-蓝牙小车-实操篇