hc-05藍芽模組與arduino連線實現手機控制藍芽智慧小車
本人比較懶,純文字
首先材料,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的大佬們,也希望這篇文章對小夥伴們也有所幫助。