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

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

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

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

​基于arduino的红外遥控小车​

​基于arduino的无线NRF24L01遥控小车​

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

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

 

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

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


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

     ① 关注微信公众号:Tech云  

     ②

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

 

一、接线:

(1)HC05蓝牙接线:

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

           

基于手机蓝牙的arduino遥控小车_智能小车_03

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

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

(2)电机接线:

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

四个逻辑通道从左到右(即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:

 

获取该源码方式:



关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

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

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

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

搜索到后:

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

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

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

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

输入正确后如下图

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

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

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

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

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

那么,如何配置呢?

点击右上角的

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

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

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

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

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

按照这个对应,更改下

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

然后再点击右上角的

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

基于手机蓝牙的arduino遥控小车_子函数_15

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

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

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