Serial.read() и delay

Тема в разделе "Arduino & Shields", создана пользователем DOC_tr, 26 фев 2016.

  1. DOC_tr

    DOC_tr Нуб

    Проблему описать затруднительно, поэтому сразу приведу пример
    Код (C++):
    ....
    i = Serial.read();
    if(i == 1){
      Serial.println(1);
      delay(10000);
    }
    ....
    Собственно в чем проблема - если я отправлю 1, то выведет 1, и уйдет в sleep на 10 секунд.
    Если я в течении этих 10 секунд еще раз отправлю 1, то через оставшееся время он опять выведт 1 и уйдет на 10 секунд.
    Есть ли возможноть как нибудь с этим бороться? Например на это время отключать считывание символов?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Код (C++):
    while (Serial.available() > 0) Serial.read(); // очищаем буфер
    while (!Serial.available()); // ждем новых поступлений
    i = Serial.read();
    if(i == 1)
    {
      Serial.println(1);
      delay(10000);
    }
     
  3. Onkel

    Onkel Гуру

    или в теле if{}