遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激。小编为大家带来几篇文章,来给大家讲讲制作遥控小车的程序。
一、接线:
(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 10void 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:
下载地址:https://download.youkuaiyun.com/download/qq_38351824/10613322
没有积分的小伙伴,可在下方评论,我发给你。
下载安装后,打开APP后会自动开始搜索附近的蓝牙设备:
搜索到后:
然后选择我们要连接的设备:
输入PIN,一般密码为1234或0000或123456
输入正确后如下图
这个APP只有这三种模式,但是足够一般人使用啦。我们使用的是键盘模式,其他两种模式,大家可以尝试玩一下。
那么,选择键盘模式后,如下图
大家的和我的应该不一样,我这个是配置好了的样子(其中退出主函数和调节舵机中值不是,这是我之前用在智能车上的)
那么,如何配置呢?
点击右上角的
然后再点击配置键盘值。看似没什么区别,但是在点开按键会弹出界面:
显示名:就是刚才那个界面的名字;按下发送值:顾名思义,就是按下该按键后发送的数字。
按照这个对应,更改下
7---前进
6---后退
1---停车
3---左前
2---右前
5---左后
4---右后
8---原地左
9---原地右
然后再点击右上角的
然后点击保存就全部大功告成啦!