... Вообщем - нужна помощь!

Тема в разделе "Arduino & Shields", создана пользователем qwerty12344321, 13 июл 2015.

  1. есть код 1
    Код (Text):
    #include <Ultrasonic.h>

    int ledPin = 13;
    int ledPin2 = 12;
    Ultrasonic ultrasonic(5, 6);
    void setup()
    {
      Serial.begin(9600);
     
      pinMode(ledPin, OUTPUT);
      pinMode(ledPin2, OUTPUT);
    }

    void loop()
    {
      float distcm = ultrasonic.Ranging(CM); //измеряем расстояние  в см.
      if( (distcm<=10)&&(distcm>0) ){
        digitalWrite(13, HIGH);
        delay(1000);
        digitalWrite(13, LOW);//свет on
      }
      while (Serial.available() == 0);
    distcm = ultrasonic.Ranging(CM);
     
      int val = Serial.read() - '0';
     
      if (val == 1)
      {
        digitalWrite(ledPin, HIGH);
        delay(1000);
        digitalWrite(ledPin, LOW);
      }

      if (val == 2)
      {
        Serial.println(distcm);
      }
     

      Serial.flush(); //это я не знаю для чего, не стал удалять

    }
     
    Есть код 2
    Код (Text):
    float distcm = ultrasonic.Ranging(CM); //измеряем расстояние  в см.
      if( (distcm<=10)&&(distcm>0) ){
        digitalWrite(13, HIGH); //свет on
      }
     
    нужно встроить в "код 1" "код 2"
    так чтобы код 2 выполнялся при
    1 вариант - при отправке в сериал 3 и заканчивал выполняться при отправки 4
    2 вариант - код 2 выполняется всегда, но при получение в сериал 1 или 2 останвливается и выполняется куски кода из код 1
     
  2. 1 вариант - предпочтительнее
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Чтобы некий код включался и выключался по командам из serial, можно сделать так:
    Код (Text):
    boolean flag = false;
    char c = 0;

    void loop()
    {
      if(Serial.available())
        c = Serial.read();

      if(c == '3')
        flag = true;
      if(c == '4')
        flag = false;

      if(flag)
      {
        ...
      }
    }
    Сформулируйте нужный алгоритм работы в целом, не надо про куски.
     
  4. Вообщем по идее должно быть так - в сериале 1 (будет по bluetooth) То делаем какое-то действие (с моторами, но пока идет драйвер со светодиодом), в сериале 2- даннные с датчиков обратно в сериал ,3 - врубаем автоуправление (если до препятствия 10 см и меньше поворачиваем.
     
  5. НЕ работает если нажимаем четыре и до препятствия меньше 10 светодиод горит секунду если больше вообще ничего
    4 тоже вообще ничего