本帖最后由 单片机菜鸟 于 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
(出处: 极客工坊)
废话少说,上个视频:
再上几个图片:
先说一下具体电路连接:
第一步: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.重头戏,该上硬菜,上最终代码:
- /*
- 日期: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 (出处: 极客工坊) |