• 遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它...本文为基于arduino的手机蓝牙遥控小车 基于arduino的手机蓝牙遥控小车 基于arduino的红外遥控小车 基于arduino的无线NRF24L01遥控小车 基于ardu...

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

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

    本文为基于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---原地右

    然后再点击右上角的

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

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

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

    展开全文
  • Arduino智能小车——蓝牙小车  上一章我们完成了小车的运动控制,虽然小车已经可以运动,但是不能远程遥控,不够高大上。在这一篇,我们将尝试用手机蓝牙遥控小车。蓝牙模块  蓝牙( Bluetooth® ):是一种无线...

    Arduino智能小车——蓝牙小车

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

    蓝牙模块

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

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

    SouthEast

    串口通信

      由于要借助串口实现蓝牙通信功能,所以我们在此要先了解下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);
    

    蓝牙模块连接

    SouthEast

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

    SouthEast

    手机蓝牙助手

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

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

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

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

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

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

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

    修改后属性如下图

    SouthEast

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

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

    小科普:
      蓝牙模块上电(只简单连接"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:789127261点评、交流

    展开全文
  • Android蓝牙控制小车,是一款android app,它具有一下功能: 控制3P小车前进、后退、左转、右转的基本功能; 实时显示小车的速度折线图; 查看小车的历史速度图; 删除小车历史速度记录; 实时显示IPCamera拍摄...
  • 前言:在该项目,我们实现对小车的控制,并且通过DHT11温湿度等传感器采集环境数据,并且通过蓝牙串口通讯发送到Android端,并且通过Android 串口APP进行遥控。蓝牙模块: 这里我是用的是HC_05蓝牙串口模块: ...

    前言:

    在该项目,我们使用arduino UNO R3,配合arduino电机驱动模块和hc05 蓝牙串口模块,实现对蓝牙小车的控制

    蓝牙模块:

                这里我是用的是HC_05蓝牙串口模块:

                


    Arduino主要代码编写:

    char p;
    
    /*
       PWM输出控制电机速度
    */
    int ENA = 9;
    int ENB = 6;
    /*
       控制电机正反转
    */
    int dirA = 7;
    int dirB = 8;
    /*
    
       设备初始化函数
    */
    void setup() {
      Serial.begin(9600);
      Serial.println("======setup======");
      Serial.println(); 
      
    }
    /*
       主函数
    */
    void loop() {
    
      while (Serial.available() > 0) {
        p = Serial.read();
        //前进
        if (p == 'g') {
          _motor(dirA, 1, ENA, 180);
          _motor(dirB, 0, ENB, 210);
          Serial.println(p);
        }
        //后退
        if (p == 'b')
        {
          _motor(dirA, 0, ENA, 180);
          _motor(dirB, 1, ENB, 210);
          Serial.println(p);
        }
        //左转
        if (p == 'l')
        {
          _motor(dirA, 1, ENA, 180);
          _motor(dirB, 1, ENB, 210);
          Serial.println(p);
        }
        //右转
        if (p == 'r')
        {
          _motor(dirA, 0, ENA, 180);
          _motor(dirB, 0, ENB, 210);
          Serial.println(p);
        }
        //停止
        if (p == 's')
        {
          _motor(dirA, 1, ENA, 0);
          _motor(dirB, 0, ENB, 0);
          Serial.println(p);
        }
       
      }
    }
    /*
       电机驱动函数
    */
    void _motor(int DIR, int state, int pwm, int val)
    {
      pinMode(DIR, OUTPUT);
      pinMode(pwm, OUTPUT);
      digitalWrite(DIR, state);
      analogWrite(pwm, val);
    }
    

    效果图片:

    我自己简单写的APP客户端:https://download.csdn.net/download/qq_41299058/10537179

    点击打开链接


    展开全文
  • arduino的智能小车的功能3:蓝牙遥控 arduino智能小车小车蓝牙遥控 材料清单: HC-05的蓝牙模块; arduino的智能小车一台; 杜邦线若干: 首先我们需要在电脑上下载串口调试软件,并进行蓝牙的调试,确保...

    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);
        }
    展开全文
  • Arduino蓝牙控制两驱智能小车程序,用手机蓝牙小车APP控制,用HC-05蓝牙模块在Arduino uno单片机上安装程序即可
  • 基于Arduino蓝牙小车,其中有详细的报告文档、代码、蓝牙apk文件包等。
  • 制作需要:用AppInventor制作App,小车硬件以Arduino Nano为主控板,接蓝牙模块,超声波模块,两个直流电机。 功能:用手机App控制小车前进,后退,左转,右转,自动避障,并且可以通过滑动条调速。(其中自动巡线...

    制作需要:用AppInventor制作App,小车硬件以Arduino Nano为主控板,接蓝牙模块,超声波模块,两个直流电机。

    功能:用手机App控制小车前进,后退,左转,右转,自动避障,并且可以通过滑动条调速。(其中自动巡线功能暂时未完成)

    Arduino编程参考手册:

    http://wiki.dfrobot.com.cn/index.php/Arduino%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C

    AppInventor在线编辑器:

    http://app.gzjkw.net/login/

    App图标:

    APP界面:

    小车实物:

    App代码:

    小车代码(Arduino):

    #include <Arduino.h>
    
    int MotorL(int speeed);
    int MotorR(int speeed);
    void Forward();
    void Backward();
    void TurnLeft();
    void TurnRight();
    void Stop();
    int  Distance(); //超声波测距
    void left_or_back(bool x);//0-左转,1-后退
    int mode = 0;//0-按钮控制,1-自动避障
    int moveSpeed = 125;
    int turnSpeed = 0;
    int distance=0;
    unsigned long start_time = 0;
    unsigned long end_time = 0;
    const int TrigPin = 11;
    const int EchoPin = 12;
    
    
    void setup() {
      Serial.begin(9600);
      pinMode(TrigPin,OUTPUT);
      pinMode(EchoPin,INPUT);
      pinMode(6, OUTPUT);  
      pinMode(7, OUTPUT); 
      pinMode(3, OUTPUT); 
      pinMode(5, OUTPUT); 
      Stop();//停车
      start_time = millis();
    }
    
    void loop() {
      if(mode == 1){
        int cm = Distance();
        if(cm>20){ //大于20CM直走
          Forward();  //直走
        }else if(cm>=0 && cm<=10){
          Stop();
          left_or_back(0);
          left_or_back(1);
        }
      }
      if(Serial.available()>0){
          int ch = Serial.read();
          if(ch>=0 && ch<=100){
             moveSpeed=int(ch*2.15+40);
          }else if(ch == 105){
             mode = 1;
          }else{
            switch(ch){
              case 101:Forward();break;//前进
              case 102:Backward();break;//后退
              case 103:TurnLeft();break;//左转
              case 104:TurnRight();break;//右转
              case 111:Stop();break;//停车
              default:break;
            }
            mode = 0;
          }
       }
    }
    void left_or_back(bool x){
       start_time = millis();
       end_time = millis();
       while(end_time - start_time < 500){
          end_time = millis();
          x ? TurnLeft() : Backward();//后退
          if(Serial.available()>0){
             int ch = Serial.read();
             if(ch!=105){
                mode = 0;
                Stop();
                break;
              }
          }
       }
    }
    int  Distance() //超声波测距
    {
        digitalWrite(TrigPin,LOW);
        delayMicroseconds(2);
        digitalWrite(TrigPin,HIGH);
        delayMicroseconds(10);
        digitalWrite(TrigPin,LOW);
        int cm=pulseIn(EchoPin,HIGH)/58;
        return cm;
    }
    int MotorL(int speeed)
    {  
      analogWrite(5, speeed);
     }
     int MotorR(int speeed)
    {
      analogWrite(3, speeed);
     }
     void Forward()
    {
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void Backward()
    {    
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void TurnLeft()
    {  
      digitalWrite(6, LOW);
      digitalWrite(7, HIGH);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void TurnRight()
    {
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      MotorL(moveSpeed);
      MotorR(moveSpeed);
    }
    void Stop()
    {
      MotorL(0);
      MotorR(0);
    }
    
    

     

    展开全文
  • 本文使用两个Arduino UNO板子,两个HC-05,分别作为主站和从站,实现主站按钮控制从站小车运动。 二,蓝牙HC-05的主从站初始AT配置方法: 1,蓝牙模块介绍: 常见的蓝牙模块按型号可分为HC-05和HC-06两种,HC-05...
  • 基于Arduino平台的的wifi蓝牙智能小车源码 也可以结合C#上位机电脑端进行控制
  • arduino蓝牙小车教程

    2020-05-29 23:31:21
    零基础,一步一步学会基于arduino蓝牙小车DIY
  • arduino为主控板结合电机驱动模块、蓝牙模块、语音模块、蜂鸣器模块、超声波模块实现前进后退左转右转(语音同步提醒),避障蜂鸣器提醒。完美实现手机APP对各功能的切换(无死角切换)
  • Arduino蓝牙小车

    2019-03-19 12:24:08
    Arduino蓝牙小车 更新中......
  • 05蓝牙模块arduino通信实例代码以及注意事项HC-05的接线及使用进入蓝牙的设置模式进入AT命令模式(设置蓝牙参数)注意事项进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模式)进入AT模式响应常用AT命令如下...
  • 本组作品是红外避障+蓝牙遥控小车,用到了Arduino、电机、超声波、蓝牙、红外、显示屏、LED模块。该作品可通过手机端蓝牙串口软件实现自动避障和遥控两个模式的切换。在遥控模式中可实现控制小车的前进、后退、左转...
  • Arduino蓝牙小车说明

    2016-10-06 10:47:50
    一、 买家收到货后,按照根据驱动板子(红、蓝)的不同图将小车连接起来(连接图在APK的菜单选项中:蓝牙小车连接图)。测试时务必采用电脑USB电源供电或者充电宝供电。这样以确保供电稳定,以防电池功率过高或者过...
  • 首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块,arduino模块 制作智能小车的连线部分网上都有, 这里只说蓝牙部分,首先你要依照网上所说的把hc-05进入AT调成从模式,别的随意 然后就是arduino蓝牙模块的...
  • 遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它...本文是基于arduino的无线(蓝牙传输)手柄遥控小车 基于arduino的手机蓝牙遥控小车 基于arduino的红外遥控小车 基于arduino的无线NRF24L01遥控小车 ...
  • 小车蓝牙控制功能我们选择放在最后做,当时把蓝牙控制放在最后实现简直是再明智不过的决定!因为有前两天的经验积累,这次整个过程更顺利更流畅。 首先我们的思路很简单,就是用“switch”语句将小车的运动状态...
1 2 3 4 5 ... 20
收藏数 388
精华内容 155