Помогите новичку

gira026
Offline
Зарегистрирован: 26.03.2017

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

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

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

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

вод код:

      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);
  
}

Спаибо зарание!!!!!

 

gira026
Offline
Зарегистрирован: 26.03.2017

Как сделать чтоб программа в цикле включила "пьезо"  Всего один раз) 3 час голову ломаю.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Сбросьте buff после цикла.

nik182
Offline
Зарегистрирован: 04.05.2015

Наверно после 32 строки вставить buff=0; ?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Угадал

gira026
Offline
Зарегистрирован: 26.03.2017

Щас попробую спасибо! Отпишусь

gira026
Offline
Зарегистрирован: 26.03.2017

Нет не получается, после следуйщего прохода по коду программа снова присваивает buff единице и цикл поторяет работу пищалки(

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Значит, в client.read() всегда единица...?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

gira026 пишет:

3 час голову ломаю.

Всего-то? И уже сдались и прибежали за помощью?

Поработали б недельку или месячишко ... и задачу бы решили и пользы бы было куда как больше, чем по форумам побираться :(

gira026
Offline
Зарегистрирован: 26.03.2017

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

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

gira026
Offline
Зарегистрирован: 26.03.2017

Большую часть извесных мне вариантов перепробовал, если знаешь ответ подскажи.

gira026
Offline
Зарегистрирован: 26.03.2017

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

bwn
Offline
Зарегистрирован: 25.08.2014

gira026, если вы хотите сделать сей проект и завязать на этом, то ждите ответа. Если собираетесь продолжать, то отложите пока умную шилду, возьмите дуню, резистор, кнопку и заставьте их делать то, что требуется вам. Пользы будет на пару порядков больше, чем если напишут за вас. Очень интересно сразу написать ИИ, только так не бывает. ИМХО.

gira026
Offline
Зарегистрирован: 26.03.2017

С дуней и резистором уже прошел, Нужен пример, по моей проблеме, Если знаете как помочь, буду благодарен.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

строка 3 - buff = buff+1;

При условии, что число циклов с 1 не превысит 254
Иначе после той строки добавить if (buff == 128) buff=2;  // к примеру

nik182
Offline
Зарегистрирован: 04.05.2015

Если сервер кидает единицу, значит это комунибудь нужно? Что вам мешает завести флаг - сработал писк один раз- и пока сервер не перестанет кидать единицу проверять его перед писком? Обнулять флаг когда сервер кинет ноль. Т.е. подготовиться к следующей единице с сервера.  

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

И?

gira026
Offline
Зарегистрирован: 26.03.2017

Спасибо тебе!!!!!!! Разобрался!

Четкий форум!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

gira026 пишет:

Спасибо тебе!!!!!!! Разобрался!

Четкий форум!

тут картошку не сажают - сеют только вечное )))

gira026
Offline
Зарегистрирован: 26.03.2017

Создал для этой задачи под buff - buff2

И просто добавил после цикла ему buff2=buff2+1;

;)