极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4435|回复: 1

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

[复制链接]
发表于 2018-5-2 17:16:27 | 显示全部楼层 |阅读模式
本帖最后由 ys9830812a 于 2018-5-2 17:24 编辑

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

但是我發現一個問

當我切到藍芽控制的時候

我前面三個紅外線偵測

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


  1. #include <SoftwareSerial.h>

  2. SoftwareSerial BT(2,3);

  3. char command;
  4. char flag;
  5. boolean run =false;

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



  10. void up() {
  11.   digitalWrite(L, HIGH);
  12.   analogWrite(L_PWM,100);
  13.   digitalWrite(R, HIGH);
  14.   analogWrite(R_PWM,100);
  15. }

  16. void dow() {
  17.   digitalWrite(L, LOW);
  18.   analogWrite(L_PWM,100);
  19.   digitalWrite(R, LOW);
  20.   analogWrite(R_PWM,100);
  21. }

  22. void Lup() {
  23.   digitalWrite(L, HIGH);
  24.   analogWrite(L_PWM,50);
  25.   digitalWrite(R, HIGH);
  26.   analogWrite(R_PWM,100);
  27. }

  28. void Rup() {
  29.   digitalWrite(L, HIGH);
  30.   analogWrite(L_PWM,100);
  31.   digitalWrite(R, HIGH);
  32.   analogWrite(R_PWM,50);
  33. }

  34. void Ldow() {
  35.   digitalWrite(L, LOW);
  36.   analogWrite(L_PWM,50);
  37.   digitalWrite(R, LOW);
  38.   analogWrite(R_PWM,100);
  39. }

  40. void Rdow() {
  41.   digitalWrite(L, LOW);
  42.   analogWrite(L_PWM,100);
  43.   digitalWrite(R, LOW);
  44.   analogWrite(R_PWM,50);
  45. }

  46. void st() {
  47.   digitalWrite(L, HIGH);
  48.   analogWrite(L_PWM,0);
  49.   digitalWrite(R, HIGH);
  50.   analogWrite(R_PWM,0);
  51. }

  52. void _E6_80_A5_E5_B7_A6() {
  53.   digitalWrite(8, LOW);
  54.   analogWrite(9, 48);
  55.   digitalWrite(10, HIGH);
  56.   analogWrite(11, 80);
  57. }

  58. void _E5_89_8D_E9_80_B2() {
  59.   digitalWrite(8, HIGH);
  60.   analogWrite(9, 49);
  61.   digitalWrite(10, HIGH);
  62.   analogWrite(11, 50);
  63. }

  64. void _E6_80_A5_E5_8F_B3() {
  65.   digitalWrite(8, HIGH);
  66.   analogWrite(9, 80);
  67.   digitalWrite(10, LOW);
  68.   analogWrite(11, 48);
  69. }

  70. void _E5_81_9C_E6_AD_A2() {
  71.   digitalWrite(8, LOW);
  72.   digitalWrite(9, LOW);
  73.   digitalWrite(10, LOW);
  74.   digitalWrite(11, LOW);
  75. }

  76. void _E6_85_A2_E5_8F_B3() {
  77.   digitalWrite(8, HIGH);
  78.   analogWrite(9, 63);
  79.   digitalWrite(10, LOW);
  80.   analogWrite(11, 45);
  81. }

  82. void _E5_BE_8C_E9_80_80() {
  83.   digitalWrite(8, LOW);
  84.   analogWrite(9, 48);
  85.   digitalWrite(10, LOW);
  86.   analogWrite(11, 48);
  87. }

  88. void _E6_85_A2_E5_B7_A6() {
  89.   digitalWrite(8, LOW);
  90.   analogWrite(9, 45);
  91.   digitalWrite(10, HIGH);
  92.   analogWrite(11, 63);
  93. }

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

  96.   pinMode(L, OUTPUT);
  97.   pinMode(L_PWM, OUTPUT);
  98.   pinMode(R, OUTPUT);
  99.   pinMode(R_PWM, OUTPUT);


  100. }

  101. void loop()
  102. {
  103.   if (BT.available() >0)
  104.   {

  105.        command= BT.read();

  106.        if(command == '0')
  107.        {
  108.          flag = 0;
  109.        } else if (command == '1')
  110.        {
  111.          flag =1;
  112.        }
  113.    }

  114.     switch (flag)
  115.     {
  116.       case 0:
  117.       {
  118.         switch(command)
  119.         {
  120.           case 'w':
  121.           up();
  122.           break;
  123.           case 's':
  124.           st();
  125.           break;
  126.           case 'x':
  127.           dow();
  128.           break;
  129.           case 'q':
  130.           Lup();
  131.           break;
  132.           case 'e':
  133.           Rup();
  134.           break;
  135.           case 'z':
  136.           Ldow();
  137.           break;
  138.           case 'c':
  139.           Rdow();
  140.           break;
  141.           default:
  142.           st();
  143.           break;
  144.         }
  145.       }
  146.       case 1 :
  147.       {
  148.            String S;
  149.            int LL;
  150.            int OO;
  151.            int RR;

  152.             LL = 7;
  153.             OO = 6;
  154.             RR = 5;
  155.           S = String(digitalRead(LL)) + String(digitalRead(OO)) + String(digitalRead(RR));

  156.             if (S == "000") {
  157.                _E5_89_8D_E9_80_B2();
  158.             } else if (S == "010") {
  159.                _E5_89_8D_E9_80_B2();
  160.             } else if (S == "001") {
  161.                _E6_85_A2_E5_8F_B3();
  162.             } else if (S == "100") {
  163.                _E6_85_A2_E5_B7_A6();
  164.             } else if (S == "110") {
  165.                _E5_81_9C_E6_AD_A2();
  166.                _E5_81_9C_E6_AD_A2();
  167.                _E5_81_9C_E6_AD_A2();
  168.                _E6_80_A5_E5_B7_A6();
  169.                _E5_81_9C_E6_AD_A2();
  170.                _E5_81_9C_E6_AD_A2();
  171.                _E6_80_A5_E5_B7_A6();
  172.             } else if (S == "011") {
  173.                _E5_81_9C_E6_AD_A2();
  174.                _E5_81_9C_E6_AD_A2();
  175.                _E5_81_9C_E6_AD_A2();
  176.                _E6_80_A5_E5_8F_B3();
  177.                _E5_81_9C_E6_AD_A2();
  178.                _E5_81_9C_E6_AD_A2();
  179.                _E6_80_A5_E5_8F_B3();
  180.             } else if (S == "101") {
  181.                _E5_81_9C_E6_AD_A2();
  182.             } else if (S == "111") {
  183.                _E5_81_9C_E6_AD_A2();
  184.             }
  185.       }

  186.     }
  187. }
复制代码


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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-7-4 01:58 , Processed in 0.049287 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表