Помогите с Циклом

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

  1. gira2605

    gira2605 Нуб

    Добрый вечер, помогите разобратся с кодом. Подключил к arduino uno интернет шилд и разобрался как получать данные с сервера.

    нужно чтоб при получении с сервера '1' Пьезо пищалка издала 3 коротких сигнала, и выключилась.

    А в моем случае она без остановки каждый круг прочтения кода повторяет пищать((,

    Подскачите пожалуйста новичку как сделать чтоб в цикле задача выполнилась всего один раз. Может както функцию прописать.

    Вот сам код:
    Код (C++):
    char c = client.read(); //считываю данные с сервера
    if ( c=='1')//Если пришла единица
    {
    buff=1;//Переменная buff стает единицей
    }
    if ( c=='0')
    {
    buff=0;
    }
    client.stop();
    client.flush();
    delay(100);
    }
    else
    {
    client.stop();
    delay(2000);
    client.connect(server, 80);
    }
    if ( buff==1)//если переменная buff равна 1
    {
    analogWrite(soundPin, 20);
    delay(100);
    analogWrite(soundPin, 0);
    delay(100);
    analogWrite(soundPin, 20); //3 КОРОТКИХ СИГНАЛА
    delay(100);
    analogWrite(soundPin, 0);
    delay(100);
    analogWrite(soundPin, 20);
    delay(100);
    analogWrite(soundPin, 0);
    }
    else// ЕСЛИ НЕТ Выключаем звук
    {
    analogWrite(soundPin, 0);
    }



    delay(500);
    }

    За рание спасибо!!!
     
    Последнее редактирование: 26 мар 2017
  2. gira2605

    gira2605 Нуб

    вместо пищалки я подсоединю mp3 модуль, и например на сервере нажал кнопку, mp3 модуль проиграл 1 раз "освещение включено" а не повторял как попугай по кругу.
     
  3. gira2605

    gira2605 Нуб

    if ( c=='1')//Если пришла единица
    {
    buff=1;//Переменная buff стает единицей
    }



    При каждом проходе цикла постоянно кидает единицу)) Там переключатель.

    Реально както прописать чтоб один раз выполнило и все?
     
  4. Radius

    Radius Гик

    После того как действие выполнилось обнулите (buff=0).
     
  5. gira2605

    gira2605 Нуб

    После того как действие выполнилось обнулите
    Пробовал, не поможет после каждого прохода по коду, она выше получает опять 1 (
    И опять по кругу пищит
    Я думаю может какую нить функцию придумать?
     
  6. user999

    user999 Гик

    Вы читаете ответ сервера, помимо единицы или ноля, там куча служебной информации, Поэтому так много пищалка и пищит.
    После
    Код (C++):
    char c = client.read(); //считываю данные с сервера
    Выведите
    Код (C++):
     Serial.print(с);
    Увидите какой ответ сервер вам выдает