目前只有程式碼其他會努力補上的
#include <SoftwareSerial.h>
#include <Wire.h>
//輸出到L298N的腳位
#define MT_L 9 //ENA
#define IN1 8
#define IN2 7
#define IN3 5
#define IN4 4
#define MT_R 3 //ENB
char Car_status;
SoftwareSerial BT(10,11); //TXD接收腳, RXD傳送腳
void setup() {
pinMode(MT_L,OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(MT_R,OUTPUT);
BT.begin(9600);
Serial.begin(9600);
}
void loop() {
//當藍芽有資料傳輸時,會將讀取到的字元存到Car_status。
if (BT.available()){
Car_status =BT.read();
}
//依照Car_status的字元來選擇車子方向控制
switch(Car_status){
case 'F':
Forward();
Car_status='N';
break;
case 'B':
Backward();
Car_status='N';
break;
case 'R':
TurnRight();
Car_status='N';
break;
case 'L':
TurnLeft();
Car_status='N';
break;
case 'S':
Stop();
Car_status='N';
break;
}
}
//下面是停止、前進、後退、左轉、右轉的函式。
void Stop()
{
analogWrite(MT_L,0);
analogWrite(MT_R,0);
}
void Forward()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(MT_R,80);
analogWrite(MT_L,110);
}
void Backward()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(MT_R,90);
analogWrite(MT_L,100);
}
void TurnRight()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(MT_L,100);
analogWrite(MT_R,0);
}
void TurnLeft()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(MT_L,0);
analogWrite(MT_R,100);
}