《博哥玩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
很强大,可以跑了。学习中。就是功率的控制还需要想办法解决哦。
电机功率很难控制消耗都在电机那里 为什么我用你的程序会编译出错呢 大神 冰棱下 发表于 2016-11-13 11:11
为什么我用你的程序会编译出错呢 大神
代码量不多怎么会出错了提示什么错误信息呢 单片机菜鸟 发表于 2016-11-13 14:30
代码量不多怎么会出错了提示什么错误信息呢
initCar(); 未定义 冰棱下 发表于 2016-11-13 19:34
initCar(); 未定义
程序里面已经有定义这个了 楼主大神,请问我按照你的程序,APP设置也没错,为什么APP中按 右 没反应(前左后都是好的
) 湛南北望 发表于 2016-11-19 21:36
楼主大神,请问我按照你的程序,APP设置也没错,为什么APP中按 右 没反应(前左后都是好的
)
你的右编码是什么?你得跟你arduino上的编码对上额 楼主大神,请问我按照你的程序和APP,但是APP按键中右没有反应,这是怎么回事 湛南北望 发表于 2016-11-20 16:18
楼主大神,请问我按照你的程序和APP,但是APP按键中右没有反应,这是怎么回事
你的右编码是什么?你得跟你arduino上的编码对上额有问题可以加我2421818708 电机驱动模块怎么没有使能端? 老人家 发表于 2016-12-31 03:11
电机驱动模块怎么没有使能端?
不是默认跳帽连接就会使能 楼主app能分享吗 chen果冻 发表于 2017-1-2 21:37
楼主app能分享吗
请留下你的邮箱
页:
[1]
2