跳到主要內容
:::
:::

車子 / car_ino

car4v1.ino

Arduino 程式

//藍芽控制,需1.手機藍芽配對,2.app BlueTooth

#include

 

SoftwareSerial BTserial(12,13); //12接藍芽的TX13接藍芽的RX

const int posR=5;  // in1 , ~pwm,右正

const int negR=4;  // in2

const int posL=6;  // in3 , ~pwm,左正

const int negL=7;  // in4

 

int speedR=120;

int speedL=115;         //120,因右偏,降左輪

int speedRback=120;

int speedLback=120;      

char ctrlChar='S';

 

void setup()

{ pinMode(posR,OUTPUT);

  pinMode(negR,OUTPUT);

  pinMode(posL,OUTPUT);

  pinMode(negL,OUTPUT);

//  Serial.begin(9600);       //本行測試後 註解掉

  BTserial.begin(9600);

  }

 

void loop()

{

  if (BTserial.available()) {     //若藍芽有資料

     ctrlChar = BTserial.read();     // 讀入藍芽資料到 ctrlChar

  //   Serial.println(ctrlChar);       //本行測試後 註解掉,藍芽字元 顯示於串列視窗

  }

     switch (ctrlChar) {            //依藍芽的字元,車子執行對應的動作

        case 'F':

          Forward(speedR,speedL);

          break;

       case 'B':

          back(speedRback,speedLback);

         break;

       case 'R':

          right(speedRback,speedLback);

         break;

       case 'L':

          left(speedRback,speedLback);

         break; 

       case 'S':

         stop1();

         break; 

       case '7':

          FL(speedR,speedL);

         break; 

       case '9':

          FR(speedR,speedL);

         break; 

       case '1':

          BL(speedR,speedL);

         break; 

       case '3':

          BR(speedR,speedL);

         break;                    

        } 

}

 

 

// 所有車子動向的函數

void Forward(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,255-RmotorSpeed);  //右輪反轉

    digitalWrite(negR,HIGH);            //右輪反轉 

    analogWrite(posL,LmotorSpeed);

    digitalWrite(negL,LOW);  

void back(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,RmotorSpeed);     //右輪反轉

    digitalWrite(negR,LOW);            //右輪反轉 

    analogWrite(posL,255-LmotorSpeed);

    digitalWrite(negL,HIGH);  

}

 

void stop1()

{

    analogWrite(posR,0);   

    digitalWrite(negR,LOW);   

    analogWrite(posL,0);

    digitalWrite(negL,LOW);  

 

void left(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,255-RmotorSpeed);  //右輪反轉

    digitalWrite(negR,HIGH);            //右輪反轉 

    analogWrite(posL,255-LmotorSpeed);

    digitalWrite(negL,HIGH);  

 

void right(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,RmotorSpeed+25);  //右輪反轉

    digitalWrite(negR,LOW);         //右輪反轉 

    analogWrite(posL,LmotorSpeed+5);

    digitalWrite(negL,LOW);  

 

void FR(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,255-80);  //右輪反轉

    digitalWrite(negR,HIGH);            //右輪反轉 

    analogWrite(posL,LmotorSpeed+60);

    digitalWrite(negL,LOW);  

}

 

void FL(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,255-RmotorSpeed-80);  //右輪反轉

    digitalWrite(negR,HIGH);            //右輪反轉 

    analogWrite(posL,80);

    digitalWrite(negL,LOW);   

}

 

void BR(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,RmotorSpeed-60);     //右輪反轉

    digitalWrite(negR,LOW);            //右輪反轉 

    analogWrite(posL,255-LmotorSpeed-80);

    digitalWrite(negL,HIGH);  

}

 

void BL(byte RmotorSpeed, byte LmotorSpeed)

{

    analogWrite(posR,RmotorSpeed+80);     //右輪反轉

    digitalWrite(negR,LOW);            //右輪反轉 

    analogWrite(posL,255-LmotorSpeed+60);

    digitalWrite(negL,HIGH);  

}

 

跳至網頁頂部