遙控車code

因為最近許多競賽都要做遙控車,所以我把程式先打上來

 

 

車子部分

#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();

}  

 

 

 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s