基于Arduino的蓝牙遥控车
闲来无事,做个车玩
1、准备模块:
Arduino主板
蓝牙HC-05
电机驱动模块
小车车架
至少2个电机加万向轮
或者4个电机(同侧双接成两路线)
2、先写程序呢
还是先搭硬件呢?建议先写程序,这样同时也思考如何搭建硬件,不容易出问题,当然程序在后面肯定是会修改的,所以不慌。
那么程序我就贴上来了哦
天啊,我贴了好几次代码,都贴不上来,总是卡住,@CSDN的工程师,你们该修改Bug了
/************************************************
@作者:何彬
@时间:2019年12月21日
@版本:1.0
*************************************************/
//#include <Servo.h>
int Left_motor_go=8; //左电机前进(IN1)
int Left_motor_back=9; //左电机后退(IN2)
int Right_motor_go=10; // 右电机前进(IN3)
int Right_motor_back=11; // 右电机后退(IN4)
char getstr;
void setup()
{
//初始化电机驱动IO为输出方式
pinMode(Left_motor_go,OUTPUT); // PIN 8 8脚无PWM功能
pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM)
pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)
Serial.begin(9600);
}
void run() // 前进
{
digitalWrite(Right_motor_go,HIGH); // 右电机前进
digitalWrite(Right_motor_back,LOW);
digitalWrite(Left_motor_go,HIGH); // 左电机前进
digitalWrite(Left_motor_back,LOW);
analogWrite(Right_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Right_motor_back,0);
analogWrite(Left_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,0);
}
void back() // 后退
{
digitalWrite(Right_motor_go,LOW); // 右电机后退
digitalWrite(Right_motor_back,HIGH);
digitalWrite(Left_motor_go,LOW); // 左电机后退
digitalWrite(Left_motor_back,HIGH);
analogWrite(Right_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Right_motor_back,200);
analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,200);
}
void left() // 左转
{
digitalWrite(Right_motor_go,HIGH); // 右电机前进
digitalWrite(Right_motor_back,LOW);
digitalWrite(Left_motor_go,LOW); // 左电机后退
digitalWrite(Left_motor_back,HIGH);
analogWrite(Right_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Right_motor_back,0);
analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,100);//内圆,幅度小
}
void right() // 右转
{
digitalWrite(Right_motor_go,LOW); // 右电机后退
digitalWrite(Right_motor_back,HIGH);
digitalWrite(Left_motor_go,HIGH); // 左电机前进
digitalWrite(Left_motor_back,LOW);
analogWrite(Right_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Right_motor_back,100);
analogWrite(Left_motor_go,200);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,0);
}
void stop() // 停止
{
digitalWrite(Right_motor_go,LOW); // 右电机停止
digitalWrite(Right_motor_back,LOW);
analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,0);
digitalWrite(Left_motor_go,LOW); // 左电机停止
digitalWrite(Left_motor_back,LOW);
analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,0);
analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
analogWrite(Left_motor_back,0);
}
void loop()
{
getstr=Serial.read();
switch(getstr){
case 'w':
Serial.println("run");
run();break;
case 'a':
Serial.println("left");
left();break;
case 'd':
Serial.println("right");
right();break;
case 's':
Serial.println("back");
back();break;
case 't':
Serial.println("stop");
stop();break;
}
}
3、搭硬件
好像没有什么注意点,反正注意安全就是了
下面给出L298N驱动电路的连接:
Arduino | L298N-in | L298N-out | Motor-x |
---|---|---|---|
8 | INT1 | + | |
9 | INT2 | - | Motor-run |
10 | INT3 | + | |
11 | INT4 | - | Motor-run |
L298N的电源是通过正负端口输入的,记得通电。
然后是蓝牙HC-05的连接了,记得设置波特率,一般:9600
Arduino | HC-05 |
---|---|
0(RX) | TX |
1(TX) | RX |
VCC | VCC |
GND | GND |
本次就到这里结束了!