/*
利用L298N 控制自走車
採用手機程式,經過藍牙無線電,改變馬達的轉向
自走車的行種分為四種:前進、後退、左轉、右轉
函數名稱分別為:foward(), backward(), Left(), Right()
本程式新增功能:使用藍牙接收器,利用手機app控制
變數定義:
LM1:左馬達的接腳,指Left Mortor
LM2
RM1:右馬達的接腳
RM2
*/
#include <SoftwareSerial.h>
SoftwareSerial BT(11, 10); // 傳送, 接收 ,藍牙模組通訊用
char val; //暫存從藍牙讀取到的資料
//輸出腳名稱定義
const byte LM1 = 3; // 左馬達正反轉接腳
const byte LM2 = 5;
const byte RM1 = 6; // 右馬達正反轉接腳
const byte RM2 = 9;
//各種功能函數定義
void CarStop() { //馬達停止
analogWrite(LM1, 0);
analogWrite(LM2, 0);
analogWrite(RM1, 0);
analogWrite(RM2, 0);
}
void forward() { //車往前進
analogWrite(LM1, 0); //左輪往前
analogWrite(LM2, 255);
analogWrite(RM1, 0); //右輪往前
analogWrite(RM2, 255);
}
void backward() { //車往後退
analogWrite(LM1, 255); //左輪往後
analogWrite(LM2, 0);
analogWrite(RM1, 255); //右輪往後
analogWrite(RM2, 0);
}
void Left(){ //車往「左轉」
analogWrite(LM1, ?); //左輪停止
analogWrite(LM2, ?);
analogWrite(RM1, ?); //右輪往前
analogWrite(RM2, ?);
}
void Right(){ //車往「右轉」
analogWrite(LM1, ?); //左輪往前
analogWrite(LM2, ?);
analogWrite(RM1, ?); //右輪停止
analogWrite(RM2, ?);
}
void setup(){ //初始狀態設定及功能啟用
BT.begin(9600); //啟動和藍牙通訊功能
Serial.begin(9600);
pinMode(LM1, OUTPUT); //左馬達接腳,設定為輸出模式
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT); //右馬達接腳,設定為輸出模式
pinMode(RM2, OUTPUT);
}
void loop(){
if (BT.available()){ //如果從藍牙傳送資料來
val = BT.read(); //讀取資料
switch (val) { //針對讀到的資料進行判斷
case '1': // 若接收到1符號,代表前進
forward(); //test
break;
case '2': // 若接收到2符號,代表後退
backward();
break;
case '3': // 若接收到3符號,代表左轉
Left();
break;
case '4': // 若接收到4符號,代表右轉
Right();
break;
case '0': // 若什麼都沒收到,預設執行
CarStop(); //馬達停止
break;
} //switch語法結束
} //if語法結束
} //loop()結束