1. 程式人生 > >hc-05藍芽模組與arduino連線實現手機控制藍芽智慧小車

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的大佬們,也希望這篇文章對小夥伴們也有所幫助。