本人比较懒,纯文本
首先材料,L298N,步进电机,杜邦线,HC-05蓝牙模块,arduino模块
制作智能小车的连线部分网上都有,
这里只说蓝牙部分,首先你要依照网上所说的把hc-05进入AT调成从模式,别的随意
然后就是arduino与蓝牙模块的连接:5v---5v ,GND----GND,tx---rx,rx---tx
然后就是代码了:
#define IN1 2
#define IN2 4
#define IN3 5
#define IN4 7
#define ENA 3
#define ENB 6
#define TURNSPEED 100
#define RUNSPEED 60
void go_forward();
void turn_left();
void turn_right();
void go_back();
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
Serial.begin(9600);
Serial.println("BT is ready!");
}
int val;
void loop() {
if (Serial.available()) {
val = Serial.read();
switch(val){
case '0':
stop_s();delay(100);break;
case '1':
go_forward(RUNSPEED,RUNSPEED);delay(100);break;
case '2':
turn_left(TURNSPEED,TURNSPEED);delay(100);break;
case '3':
go_back(RUNSPEED,RUNSPEED);delay(100);break;
case '4':
turn_right(TURNSPEED,TURNSPEED);delay(100);break;
default:
Serial.println("error");delay(100);break;
}
}
}
void stop_s(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void go_forward(int L,int R){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(ENA, L);//control speed
analogWrite(ENB, R);//control speed
}
//the connection of my L298N is wrong
//IN1,IN2 is right,IN3,IN4 is left;
void turn_left(int L,int R){
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA, L);
analogWrite(ENB, R);
}
void turn_right(int L,int R){
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(ENA, L);
analogWrite(ENB, R);
}
void go_back(int L,int R){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENA, L);
analogWrite(ENB, R);
}
手机上下载蓝牙串口spp,键盘的界面进行设置信号输入到arduino的信号按钮,呵呵
在我尝试的过程中发现使用使用if语句达不到效果必须要使用case语句。
还有我的电机的连线是反的,IN1和IN2控制的是右边的电机。
最后感谢贴吧和CSDN的大佬们,也希望这篇文章对小伙伴们也有所帮助。