2019-05-20 10:25:11 qq_16775293 阅读数 34109
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    413 人正在学习 去看看 陈贤能

Arduino智能小车——蓝牙小车

  上一章我们完成了小车的运动控制,虽然小车已经可以运动,但是不能远程遥控,不够高大上。在这一篇,我们将尝试用手机蓝牙遥控小车。

蓝牙模块

  蓝牙( Bluetooth® ):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。

  我们在此使用的蓝牙模块(HC-05)已经在内部实现了蓝牙协议,不用我们再去自己开发调试协议。这类模块一般都是借助于串口协议通信,因此我们只需借助串口将我们需要发送的数据发送给蓝牙模块,蓝牙模块会自动将数据通过蓝牙协议发送给配对好的蓝牙设备。

串口通信

  由于要借助串口实现蓝牙通信功能,所以我们在此要先了解下Arduino的串口通信。

  Arduino UNO开发板上的串口为0->RX,1->TX,在开发板内部也已经配置好了串口的功能,我们只需调用函数借口即可。以下列出串口通信里面常用的函数,并加以简单解释,详细用法可在用到时自行查询。

开启串行通信接口并设置通信波特率

Serial.begin(speed); 

关闭串口通信

Serial.end();    

判断串口缓冲器是否有数据写入

Serial.available();

读取串口数据

Serial.read();    

返回下一字节(字符)输入数据,但不删除它

Serial.peek();   

清空串口缓存

Serial.flush();    

写入字符串数据到串口

Serial.print();    

写入字符串数据+换行到串口

Serial.println(); 

写入二进制数据到串口

Serial.write();     

read时触发的事件函数

Serial.SerialEvent();

读取固定长度的二进制流

Serial.readBytes(buffer,length);

打印接到数据十进制表示的ascii码

Serial.println(incomingByte, DEC);

蓝牙模块连接

TX: 接Arduino UNO开发板"RX"引脚
RX: 接Arduino UNO开发板"TX"引脚
GND: 接Arduino UNO开发板"GND"引脚
VCC: 接Arduino UNO开发板"5V"或"3.3V"引脚

手机蓝牙助手

  想实现手机蓝牙遥控小车,手机APP是必不可少的,目前网上有很多蓝牙串口助手,省去了我们自己写APP的时间,当然如果朋友你有能力或者想自己DIY的话也可以尝试自己写APP,在这里我推荐大家用这款手机蓝牙助手(百度上搜手机蓝牙串口助手就可以搜到,挺好用的)

  如果不想自己去找的话可以到我的百度网盘下载 [点击这里下载](http://pan.baidu.com/s/1pKClRTL)

  下载并安装后打开APP,在这里可能会提示你有新版本请求更新,建议点击以后再说(暂时不更新),以我的经验,一般点击立即更新都会更新失败。

  进入主界面,左上角会提示"蓝牙未连接",这个时候我们可以先对蓝牙助手的界面进行自定义设置。点击右下角的三个点(在我这里是这样的,其他手机可能不同,如果没有这三个点可以试着点击手机的功能键),选择“更多”。
  然后选择“地面站设置”进入自定义界面,往下拖动,找到“自定义按键[x]”,在此我们对按键[1][2][3][4][6]进行自定义设置。
**  点击自定义按键[1],将其“显示名称”属性改为“停止”,“点击发送”属性改为“00”,并点击“确定”保存**
同理更改其他按键:

点击自定义按键[2],将其“显示名称”属性改为“前进”,“点击发送”属性改为“01”,并点击“确定”保存
点击自定义按键[4],将其“显示名称”属性改为“左转”,“点击发送”属性改为“03”,并点击“确定”保存
点击自定义按键[5],将其“显示名称”属性改为“后退”,“点击发送”属性改为“02”,并点击“确定”保存
点击自定义按键[6],将其“显示名称”属性改为“右转”,“点击发送”属性改为“04”,并点击“确定”保存

  以上修改的属性值即为我们点击对应按键之后,蓝牙串口助手自动通过蓝牙发送的数据,与上一篇所定义的小车的几个状态一致,这样方便在Arduino在接收到蓝牙模块的数据后对小车的状态进行控制。

#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4

修改后属性如下图

下面就来看看我们修改的效果吧,点击“模式切换”

这时候你就可以看到我们自定义的按键咯,看看修改前后的对比吧。
  接下来我们将连接蓝牙,仍然点击右下角的三个点,然后点击“连接”
  一般没有连接过蓝牙模块的时候“已配对的设备”下面没有可选择的设备名称,因此我们要点击“扫描新设备”来检测我们的蓝牙模块,扫描成功后蓝牙模块的名称将显示在“已配对的设备”一栏中
  点击我们的蓝牙模块的名称,输入密码进行配对。配对成功后在蓝牙串口助手的左上角会显示“蓝牙已连接”字样,恭喜你,这时候你已经连接成功。

小科普:
  蓝牙模块上电(只简单连接"VCC"和"GND"引脚)之后,其他蓝牙设备即可与其连接,一般蓝牙模块默认初始连接密码为"0000"或"1234",如果连接不上蓝牙,请尽快与厂商或者店家联系。蓝牙模块上电后LED指示灯不断闪亮,当有设备连接预期连接之后会隔一段闪两下,蓝牙串口助手也会有相应已连接的提示。

##Arduino代码编写
新建一个工程,将下面代码复制到工程内

#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4

int leftMotor1 = 4;
int leftMotor2 = 5;
int rightMotor1 = 6;
int rightMotor2 = 7;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  //usart read
  if(Serial.available()>0)
  {
    char cmd = Serial.read();//读取蓝牙模块发送到串口的数据
  
    Serial.print(cmd);
    motorRun(cmd);
      
  }  
}
void motorRun(int cmd)
{
  switch(cmd){
    case FORWARD:
      Serial.println("FORWARD"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      break;
     case BACKWARD:
      Serial.println("BACKWARD"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      break;
     case TURNLEFT:
      Serial.println("TURN  LEFT"); //输出状态
      digitalWrite(leftMotor1, HIGH);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
      break;
     case TURNRIGHT:
      Serial.println("TURN  RIGHT"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
      break;
     default:
      Serial.println("STOP"); //输出状态
      digitalWrite(leftMotor1, LOW);
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, LOW);
  }
}

  朋友们大概也发现了,这个代码和上一篇的代码基本上相同,只不过增加了串口的内容。

##代码详解
  串口初始化函数,想要通过串口的库函数对串口进行操作,必须在void set_up()函数中对其进行初始化。

Serial.begin(9600);

  在void loop()函数内,加入了检测串口接收内容的函数,并将接收到的命令输入到 void motorRun(int cmd)函数中控制小车运动。

if(Serial.available()>0)
  {
    char cmd = Serial.read();
  
    Serial.print(cmd);
    motorRun(cmd);
  }  

蓝牙小车测试

  下载程序之后,重新连接蓝牙模块,切换到我们自定义的按键界面,快试试蓝牙遥控小车吧。

附件

安卓手机蓝牙串口点击下载,也可以复制链接 https://download.csdn.net/download/qq_16775293/11165678 到浏览器下载。

欢迎各位有兴趣的朋友加入Q群1:511385161 点评、交流(已满,请大家移步2群)
欢迎各位有兴趣的朋友加入Q群2:638346596 点评、交流

2018-08-16 06:59:58 qq_38351824 阅读数 10933
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    413 人正在学习 去看看 陈贤能

遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激。小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序。

看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大家讲解。

本文为基于arduino的手机蓝牙遥控小车


基于arduino的手机蓝牙遥控小车

基于arduino的红外遥控小车

基于arduino的无线NRF24L01遥控小车

基于ardunio的无线手柄遥控小车

基于ardunio的有线手柄遥控小车

 

从0到1教你做:基于手机蓝牙的Arduino的遥控小车

bilibili:https://www.bilibili.com/video/av74340803/

腾讯视频:https://v.qq.com/x/page/z3016nw00yq.html

 

获取该源码方式:

1、CSDN下载:

https://download.csdn.net/download/qq_38351824/11107057

 

2、可以关注点赞并在下方评论,我给你邮箱发过去。

 

3、关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

 

一、接线:

(1)HC05蓝牙接线:

           

连接方式:蓝牙上的RX和TX分别接arduino板子上的TX和RX

!!!注意!!!  下载程序的时候要拔掉蓝牙模块(或拔掉arduino板上RX引脚或让蓝牙断电),否则会出现下载错误。

(2)电机接线:

四个逻辑通道从左到右(即IN1到IN4)分别接5、6、9、10

12v供电,5伏输出给arduino供电

注意:此处驱动一定要和arduino共地!!!否则无法传输数据。

输出A接左边电机,输出B做右边电机

二、书写代码:

然后将以下代码下载到arduino板:

//-------------------------------------------------------------------//
//*******************************************************************//
///////////////////////////////////////////////////////////////////////
//////////////////////////////电机设置/////////////////////////////////
///////////////////////////////////////////////////////////////////////

#define leftA_PIN 5
#define leftB_PIN 6
#define righA_PIN 9
#define righB_PIN 10
void motor_pinint( );     //引脚初始化
void forward( );          //前进
void back( );             //后退
void turnLeftOrigin( );   //原地左
void turnRightOrigin( );  //原地右
void turnRightforword( ); //右前
void turnLeftforword( );  //左前
void turnLeftback( );     //左后
void turnRightback( );    //右后
void _stop();             //停车

//-------------------------------------------------------------------//
//*******************************************************************//
///////////////////////////////////////////////////////////////////////
//////////////////////////////蓝牙遥控/////////////////////////////////
///////////////////////////////////////////////////////////////////////
int receive;
void reve(void);

//----------------------------------------------------------------//

void setup()
{
  Serial.begin(9600); //串口波特率9600(手机端使用)
  motor_pinint( );
}
void loop()
{
   reve();
}
 
void reve(void)
{
          receive=Serial.parseInt();
       if(receive==7)     {forward( )         ;delay(500);_stop();}//前进
  else if(receive==6)     {back( )            ;delay(500);_stop();}//后退
  else if(receive==1)     {_stop()            ;delay(500);_stop();}//停车
  else if(receive==3)     {turnLeftforword( ) ;delay(500);_stop();}//左前
  else if(receive==2)     {turnRightforword( );delay(500);_stop();}//右前
  else if(receive==5)     {turnLeftback( )    ;delay(500);_stop();}//左后
  else if(receive==4)     {turnRightback( )   ;delay(500);_stop();}//右后
  else if(receive==8)     {turnLeftOrigin( )  ;delay(250);_stop();}//原地左
  else if(receive==9)     {turnRightOrigin( ) ;delay(250);_stop();}//原地右
}

/*电机引脚初始化*/
void motor_pinint( )
{
  pinMode (leftA_PIN, OUTPUT); //设置引脚为输出引脚
  pinMode (leftB_PIN, OUTPUT); //设置引脚为输出引脚
  pinMode (righA_PIN, OUTPUT); //设置引脚为输出引脚
  pinMode (righB_PIN, OUTPUT); //设置引脚为输出引脚
  }
/**************************************************
forward子函数——前进子函数
函数功能:控制车前进
**************************************************/
void forward( )
{
  analogWrite(leftA_PIN,180);      
  analogWrite(leftB_PIN,0);         //左轮前进
  analogWrite(righA_PIN,180);      
  analogWrite(righB_PIN,0);         //右轮前进
}
/**************************************************
back子函数——后退子函数
函数功能:控制车后退
**************************************************/
void back( )
{
  analogWrite(leftA_PIN,0);      
  analogWrite(leftB_PIN,180);        //左轮后退
  analogWrite(righA_PIN,0);      
  analogWrite(righB_PIN,180);        //右轮后退
}
/**************************************************
turnLeftOrigin子函数——原地左转子函数
函数功能:控制车原地左转
**************************************************/
void turnLeftOrigin( )
{
  analogWrite(leftA_PIN,0);      
  analogWrite(leftB_PIN,120);        //左轮后退
  analogWrite(righA_PIN,120);      
  analogWrite(righB_PIN,0);          //右轮前进
}
/**************************************************
turnRightOrigin子函数——原地右转子函数
函数功能:控制车原地右转
**************************************************/
void turnRightOrigin( )
{
  analogWrite(leftA_PIN,120);      
  analogWrite(leftB_PIN,0);        //左轮前进
  analogWrite(righA_PIN,0);      
  analogWrite(righB_PIN,120);      //右轮后退
}
/**************************************************
turnRightforword子函数——右前运动子函数
函数功能:控制车右前
**************************************************/
void turnRightforword( )
{
  analogWrite(leftA_PIN,200);      
  analogWrite(leftB_PIN,0);        //左轮快前进
  analogWrite(righA_PIN,120);      
  analogWrite(righB_PIN,0);        //右轮慢前进
}
/**************************************************
turnLeftforword子函数——左前运动子函数
函数功能:控制车左前
**************************************************/
void turnLeftforword( )
{
  analogWrite(leftA_PIN,120);      
  analogWrite(leftB_PIN,0);       //左轮慢前进
  analogWrite(righA_PIN,200);      
  analogWrite(righB_PIN,0);       //右轮快前进
}
/**************************************************
turnRightforword子函数——右后运动子函数
函数功能:控制车右后
**************************************************/
void turnRightback( )
{
  analogWrite(leftA_PIN,0);      
  analogWrite(leftB_PIN,200);        //左轮快后退
  analogWrite(righA_PIN,0);      
  analogWrite(righB_PIN,120);        //右轮慢后退
}
/**************************************************
turnLeftforword子函数——左后运动子函数
函数功能:控制车左后
**************************************************/
void turnLeftback( )
{
  analogWrite(leftA_PIN,0);      
  analogWrite(leftB_PIN,120);        //左轮慢后退
  analogWrite(righA_PIN,0);      
  analogWrite(righB_PIN,200);        //右轮快后退
}
/**************************************************
stop子函数—停止子函数
函数功能:控制车停止
**************************************************/
void _stop()
{
  analogWrite(leftA_PIN,0);      
  analogWrite(leftB_PIN,0);         //左轮静止不动
  analogWrite(righA_PIN,0);      
  analogWrite(righB_PIN,0);         //右轮静止不动
}

三、蓝牙串口助手APP:

 

获取该源码方式:

1、CSDN下载:

下载地址:https://download.csdn.net/download/qq_38351824/10613322

2、可以关注点赞并在下方评论,我给你邮箱发过去。

3、关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

下载安装后,打开APP后会自动开始搜索附近的蓝牙设备:

搜索到后:

然后选择我们要连接的设备

输入PIN,一般密码为1234或0000或123456

输入正确后如下图

这个APP只有这三种模式,但是足够一般人使用啦。我们使用的是键盘模式,其他两种模式,大家可以尝试玩一下。

那么,选择键盘模式后,如下图

大家的和我的应该不一样,我这个是配置好了的样子(其中退出主函数和调节舵机中值不是,这是我之前用在智能车上的

那么,如何配置呢?

点击右上角的

然后再点击配置键盘值。看似没什么区别,但是在点开按键会弹出界面

显示名:就是刚才那个界面的名字;按下发送值:顾名思义,就是按下该按键后发送的数字。

按照这个对应,更改下

  7---前进
  6---后退
  1---停车
  3---左前
  2---右前
  5---左后
  4---右后
  8---原地左
  9---原地右

然后再点击右上角的

然后点击保存就全部大功告成啦!

如果大家在制作过程中有什么问题或者思路可以在下方留言和我一起交流噢!

如果发现本文有错误,也请在下方评论区指出,感激不尽!

2018-08-19 20:59:35 li1886477130 阅读数 3218
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    413 人正在学习 去看看 陈贤能

arduino的智能小车的功能3:蓝牙遥控
arduino智能小车小车的蓝牙遥控
材料清单:
HC-05的蓝牙模块;
arduino的智能小车一台;
杜邦线若干:
首先我们需要在电脑上下载串口调试软件,并进行蓝牙的调试,确保蓝牙模块可以正常使用和可以进行通信,手机端下载SPP蓝牙串口,可以进行信息的传送还有终端的接收显示,还可以进行按键和开关的编辑。
下面是串口调试软件,在上面进行正确的设置,然后确认蓝牙模块可以正常发送和接收信息,即可进行蓝牙模块在小车上的安装。
这里写图片描述

注意RX和TX的反接。
下载程序时RX,TX上面不要接东西。
接下来是代码。
代码段的思路是,当接收到1时,小车直行,当接收到2时,小车后退,当接收到3时,小车左转,当接收到4时,小车右转,其他命令时,小车暂停。

#include <Servo.h>
Servo s;  //舵机
int mL1=6;//左1
int mL2=5;
int mR1=11;//右1
int mR2=3;

void setup()
{ 
  s.attach(9);//舵机信号线
  s.write(68);//舵机初始化角度 
  Serial.begin(9600);
  pinMode(mL1,OUTPUT);
  pinMode(mL2,OUTPUT);
  pinMode(mR1,OUTPUT);
  pinMode(mR2,OUTPUT);
}

void loop()
{
  if(Serial.available())
  {
  char num = Serial.read();
  Serial.println(num);
  if(num == '1'){
    line(); 
  }else if(num == '2'){
    back();
  }else if(num == '3') {
    L();
    }else if(num == '4'){
      R();
      }else{
        lull();
        }
  }
}
void line(){//直线
    analogWrite(mL1,30);
    analogWrite(mL2,LOW);
    analogWrite(mR1,30);
    analogWrite(mR2,LOW);
    delay(300);
}


void lull(){//暂停 
  digitalWrite(mR1,LOW);
  digitalWrite(mL1,LOW);
  digitalWrite(mR2,LOW);
  digitalWrite(mL2,LOW);
  delay(10);
}


void back(){//后退
    analogWrite(mL1,0);
    analogWrite(mL2,40);
    digitalWrite(mR1,LOW);
    analogWrite(mR2,40);
    delay(0);
}


 void R(){//右转
    analogWrite(mL1,70);
    analogWrite(mL2,0);
    analogWrite(mR1,0);
    analogWrite(mR2,53);
    delay(600);
}

void L(){//左转
    analogWrite(mL1,0);
    analogWrite(mL2,20);
    analogWrite(mR1,60);
    analogWrite(mR2,0);
    delay(600);
    }
2019-03-01 18:52:30 qq_39591322 阅读数 873
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    413 人正在学习 去看看 陈贤能

需要材料:

  1.     小车套件(包括轮胎、电机)

  2.     L298N驱动模块 (可以把电池的高电压转换为我们需要的5V,3.3V电压) 

  3.     电池

  4.     电池座

  5.     Arduino UNO 开发板

  6. 蓝牙模块(需要注意的是上传代码时因共用串口的原因会上传代码失败,解决方法:上传代码时,拔掉蓝牙模块

  7. 需要手机安装 SPP蓝牙串口 (如果找不到的可以私信笔者)

此案例中用到串口通信

 

安装和连接:

 

+12V:该引脚接的电压是驱动模块所能输出给电机的最大电压,一般 直接接电池。12V是由L298N芯片所能接受最大电压而定,一般介入5~12V电压。在此我们接入的电压为两节18650串联的电压,即3.7+3.7=7.4V;

GND: 在该项目中GND即为电源的负极,同时要保证Arduino开发板,驱动模块等所有模块的GND连在一起才可以正常工作。在某些复杂的项目中还需要区分数字地和模拟地,在此不做详细介绍。

+5V: L298N模块(注意不是L298N芯片)内含稳压电路(将高电压转换为低电压的电路),在模块内部将”+12V”引脚输入的电压转化为可供开发板使用的+5V电压,一般将次输出接入到开发板为开发板供电。

L298N有两路输出,所以可以控制小车前进、后退、转弯,其中:

ENA: 代表第一路输出的电压大小。驱动模块输出电压越高,电机转速越快。

1.当其输入为0V的时候,驱动模块输出对第一路电机输出电压为0V;

2.当其输入为3.3V的时候,驱动模块对第一路电机输出电压为”+12V”引脚的输入电压。

3.由于ENA输入电压的高低控制驱动对电机的输出电压,因此当我们需要对小车运动速度进行控制的时候,一般通过PWM对”ENA”引脚进行控制。

 

IN1/IN2:这两个引脚控制电机正反转方向。例:假如IN1输入高电平3.3V,IN2输入低电平0V,ENA为3.3V,电机正转,此时将IN1输入改为0V,IN2输入改为3.3V,其他条件不变,则电机将会反转。

OUT1/OUT2:这两个引脚分别接电机的两极。

ENB,IN3/IN4,OUT3/OUT4引脚控制第二路输出,与上述ENB,IN3/IN4,OUT3/OUT4功能相似。

 

L298N驱动的IN1/IN2/IN3/IN3引脚与Arduino板的4/5/6/7号引脚对应相连

 

蓝牙模块连接:

TX:接Arduino UNO开发板”RX”引脚 

RX:接Arduino UNO开发板”TX”引脚 

GND:接Arduino UNO开发板”GND”引脚 

VCC:接Arduino UNO开发板”5V”或”3.3V”引脚        

参考代码:

#include <Servo.h>

//定义五中运动状态
char FORWARD = '1'; //前进
char BACKWARD = '2'; //后退
char TURNLEFT = '3'; //左转弯
char TURNRIGHT = '4'; //右转弯
char STOP = '0'; //停止

//定义需要用到的引脚
int leftMotor1 = 4;
int leftMotor2 = 5;
int rightMotor1 = 6;
int rightMotor2 = 7;

//接收到的字符
char cmd;

void setup() {
  Serial.begin(9600);   

  //设置控制电机的引脚为输出状态
  pinMode(leftMotor1, OUTPUT);
  pinMode(leftMotor2, OUTPUT);
  pinMode(rightMotor1, OUTPUT);
  pinMode(rightMotor2, OUTPUT);
}

void loop() {
  //读取蓝牙模块发送到串口的数据
if(Serial.available())
{
    cmd = Serial.read();
    delay(5);
    Serial.println(cmd);
}
  //控制电机转动
if(cmd == FORWARD )
  {
      digitalWrite(leftMotor1, LOW);//正转
      digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
    }
   if(cmd == BACKWARD )
  {
      digitalWrite(leftMotor1, HIGH);//反转
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, HIGH);
      digitalWrite(rightMotor2, LOW);
    }
    if(cmd == TURNLEFT )
   {
      digitalWrite(leftMotor1, LOW);//左转
      digitalWrite(leftMotor2,LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, HIGH);
    }
    if(cmd == TURNRIGHT )
   {
    digitalWrite(leftMotor1, LOW);//右转
     digitalWrite(leftMotor2, HIGH);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, LOW);
    }
     if(cmd == STOP )
    {
    digitalWrite(leftMotor1, LOW);//停止
      digitalWrite(leftMotor2, LOW);
      digitalWrite(rightMotor1, LOW);
      digitalWrite(rightMotor2, LOW);
    }
}

 

2015-07-29 10:58:36 qq5132834 阅读数 2891
  • arduino实战

    学习如何在arduino中使用各种传感器,包括人体红外传感器,超声波传感器,舵机控制,温湿度传感器,激光接收传感器等,空气质量传感器,wifi模块等....课程内容会不断的更新增加,只要发现比较有趣的传感器就会做对应的实战视频

    413 人正在学习 去看看 陈贤能

连接图如下:



Android手机APK下载路径:http://share.weiyun.com/54b3c561db39f60ad6f3c232179186f5


一、 买家收到货后,请按照蓝牙小车连接图将小车组合起来(上图:蓝牙小车连接图)。测试时务必采用电脑USB电源供电,这样以确保供电稳定,以防电池功率过高或者过低给测试带来意想不到的影响。本人采用的是小米充电宝供电测试,撰写此说明文档。

注意:

1、充电宝是权宜之策,因为充电宝功率大,会导致驱动板温度急剧升高。

2、不要使用普通便宜电池,功率过低会带不起小车,最好使用南孚电池


二、 小车通电后就会开始一个自动测试的过程,测试内容为:前进3秒、左转3秒(左轮停止,右轮前进)、右转3秒(左轮前进,右轮停止)、后退3秒。这样的做的目的是为了使用户能将电机驱动板子与小车的马达正负连接正确。

注意:有时候我们发现电机驱动板和小车马达的连接后不吻合上面的自动测试,那我可以做如下尝试:

1、第一步先保证左右轮子能前进;
2、在第一步的基础上,按下复位按钮,看左转的情况,如果左转正确(即左轮后退,右轮前进),说明连接正确。如果不正确,将左右马达的连接线互换。
3、重复第1步。第2步。


三、 此步骤非常重要,蓝牙连接前,用户务必在手机设置功能中配对蓝牙,蓝牙的名称叫:HC-06。连接码是:1234。配对成功后,以后打开安卓APP就可以自动连接了。操作如下图所示。


四、 打开蓝牙后,打开“菜单”。如下图所示。


五、 选择“Connect a device”。选择刚才配对的HC-06蓝牙。如下图所示。


六、 如若连接上蓝牙,如下图所示。右上角会提示:“connected:HC-06”。



七、这个时候你就可以控制小车的前进后退了。如下图所示


八、 手机上面有一个按钮“接受Arduino发来的数据”,点击后,会收到小车向手机发送回来的数据“hello”。如下图所示。这个功能主要目的是为了让用户将来能进一步扩展小车的功能,比如采集数据回传给手机上传给服务器等等。



九、如果上面测试没问题,证明整套系统可以正常运转了。这时麻烦亲确认收货,小二会提供全套的源代码,包括:arduino小车控制源代码、android手机控制源代码

十、说明文档:

Arduino单片机开发环境搭建说明文档:
http://blog.csdn.net/qq5132834/article/details/47152865
Arduino单片机集成开发环境下载:
http://share.weiyun.com/6b2de0d784ddf27d288a43fd35023378
小车视频:
视频1: http://v.youku.com/v_show/id_XNjk2MjA5NDI4.html 

视频2: http://v.youku.com/v_show/id_XOTIwNjU1Mzgw.html



,arduino 蓝牙例子,

阅读数 646

没有更多推荐了,返回首页