ys9830812a 发表于 2018-5-2 17:16:27

有關Arduino藍芽控制和紅外線循跡 問題

本帖最后由 ys9830812a 于 2018-5-2 17:24 编辑

小弟我爬了文看了一些文章把我自己做好的藍芽控制和循跡模式的功能合併了
手機APP是正常可以切換

但是我發現一個問

當我切到藍芽控制的時候

我前面三個紅外線偵測

還是一樣會繼續偵測到 然後會吃到 我第二個模式的的程式 然後也會逼逼叫的


#include <SoftwareSerial.h>

SoftwareSerial BT(2,3);

char command;
char flag;
boolean run =false;

const byte L = 8;
const byte L_PWM = 9;
const byte R = 10;
const byte R_PWM = 11;



void up() {
digitalWrite(L, HIGH);
analogWrite(L_PWM,100);
digitalWrite(R, HIGH);
analogWrite(R_PWM,100);
}

void dow() {
digitalWrite(L, LOW);
analogWrite(L_PWM,100);
digitalWrite(R, LOW);
analogWrite(R_PWM,100);
}

void Lup() {
digitalWrite(L, HIGH);
analogWrite(L_PWM,50);
digitalWrite(R, HIGH);
analogWrite(R_PWM,100);
}

void Rup() {
digitalWrite(L, HIGH);
analogWrite(L_PWM,100);
digitalWrite(R, HIGH);
analogWrite(R_PWM,50);
}

void Ldow() {
digitalWrite(L, LOW);
analogWrite(L_PWM,50);
digitalWrite(R, LOW);
analogWrite(R_PWM,100);
}

void Rdow() {
digitalWrite(L, LOW);
analogWrite(L_PWM,100);
digitalWrite(R, LOW);
analogWrite(R_PWM,50);
}

void st() {
digitalWrite(L, HIGH);
analogWrite(L_PWM,0);
digitalWrite(R, HIGH);
analogWrite(R_PWM,0);
}

void _E6_80_A5_E5_B7_A6() {
digitalWrite(8, LOW);
analogWrite(9, 48);
digitalWrite(10, HIGH);
analogWrite(11, 80);
}

void _E5_89_8D_E9_80_B2() {
digitalWrite(8, HIGH);
analogWrite(9, 49);
digitalWrite(10, HIGH);
analogWrite(11, 50);
}

void _E6_80_A5_E5_8F_B3() {
digitalWrite(8, HIGH);
analogWrite(9, 80);
digitalWrite(10, LOW);
analogWrite(11, 48);
}

void _E5_81_9C_E6_AD_A2() {
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}

void _E6_85_A2_E5_8F_B3() {
digitalWrite(8, HIGH);
analogWrite(9, 63);
digitalWrite(10, LOW);
analogWrite(11, 45);
}

void _E5_BE_8C_E9_80_80() {
digitalWrite(8, LOW);
analogWrite(9, 48);
digitalWrite(10, LOW);
analogWrite(11, 48);
}

void _E6_85_A2_E5_B7_A6() {
digitalWrite(8, LOW);
analogWrite(9, 45);
digitalWrite(10, HIGH);
analogWrite(11, 63);
}

void setup() {
BT.begin(9600);

pinMode(L, OUTPUT);
pinMode(L_PWM, OUTPUT);
pinMode(R, OUTPUT);
pinMode(R_PWM, OUTPUT);


}

void loop()
{
if (BT.available() >0)
{

       command= BT.read();

       if(command == '0')
       {
         flag = 0;
       } else if (command == '1')
       {
         flag =1;
       }
   }

    switch (flag)
    {
      case 0:
      {
      switch(command)
      {
          case 'w':
          up();
          break;
          case 's':
          st();
          break;
          case 'x':
          dow();
          break;
          case 'q':
          Lup();
          break;
          case 'e':
          Rup();
          break;
          case 'z':
          Ldow();
          break;
          case 'c':
          Rdow();
          break;
          default:
          st();
          break;
      }
      }
      case 1 :
      {
         String S;
         int LL;
         int OO;
         int RR;

            LL = 7;
            OO = 6;
            RR = 5;
          S = String(digitalRead(LL)) + String(digitalRead(OO)) + String(digitalRead(RR));

            if (S == "000") {
               _E5_89_8D_E9_80_B2();
            } else if (S == "010") {
               _E5_89_8D_E9_80_B2();
            } else if (S == "001") {
               _E6_85_A2_E5_8F_B3();
            } else if (S == "100") {
               _E6_85_A2_E5_B7_A6();
            } else if (S == "110") {
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E6_80_A5_E5_B7_A6();
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E6_80_A5_E5_B7_A6();
            } else if (S == "011") {
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E6_80_A5_E5_8F_B3();
               _E5_81_9C_E6_AD_A2();
               _E5_81_9C_E6_AD_A2();
               _E6_80_A5_E5_8F_B3();
            } else if (S == "101") {
               _E5_81_9C_E6_AD_A2();
            } else if (S == "111") {
               _E5_81_9C_E6_AD_A2();
            }
      }

    }
}

如果各位大神有更好的寫法也可以提供給小弟我 我剛踏進這個環境有些還是不懂

suoma 发表于 2018-6-8 11:55:25

解决了吗?
页: [1]
查看完整版本: 有關Arduino藍芽控制和紅外線循跡 問題