因為最近許多競賽都要做遙控車,所以我把程式先打上來
車子部分
#include <SoftwareSerial.h>
char BTcmd;
SoftwareSerial BT(8,9);
int MotorRight1=3;
int MotorRight2=4;
int MotorLeft1=5;
int MotorLeft2=6;
void setup()
{
Serial.begin(9600);
BT.begin(9600);
pinMode(MotorRight1, OUTPUT);
pinMode(MotorRight2, OUTPUT);
pinMode(MotorLeft1, OUTPUT);
pinMode(MotorLeft2, OUTPUT);
}
void go()
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
}
void left()
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
void right()
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
}
void back()
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
}
void stop()
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
void loop()
{
if (Serial.available())
{
BTcmd=Serial.read();
if (‘F’ == BTcmd) go();
else if (‘L’ ==BTcmd) left();
else if (‘B’ ==BTcmd) back();
else if (‘R’ == BTcmd) right();
else stop();
}
else{
}
delay(200);
}
這邊要注意,BTcmd=Serial.read();和serial.available()這邊因為我們在測試時應該先在電腦上測試看看是否可以運作,所以上面的code可以在電腦上用Serial monitor輸入 F L B R 來控制他的運作。
#include <SoftwareSerial.h>
char BTcmd;
SoftwareSerial BT(7,8); // RX, TX
int MotorRight1=3;
int MotorRight2=4;
int MotorLeft1=5;
int MotorLeft2=6;
void setup()
{
Serial.begin(9600);
BT.begin(9600);
pinMode(MotorRight1, OUTPUT);
pinMode(MotorRight2, OUTPUT);
pinMode(MotorLeft1, OUTPUT);
pinMode(MotorLeft2, OUTPUT);
}
void go()// 前進
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
}
void left() //右轉
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
void right() //左轉
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
void back()//
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
}
void stop() //停止
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
void loop()
{
if (BT.available())
{
BTcmd= BT.read();
if (‘F’ == BTcmd) go();
else if (‘L’ ==BTcmd) left();
else if (‘B’ ==BTcmd) back();
else if (‘R’ == BTcmd) right();
else stop(); //else stop()
}
else{
delay(200);
}
Serial.flush();
}