Функция памяти в arduino

svitr
Offline
Зарегистрирован: 16.04.2017

Здравствуйте. Нужна помощь он знающих людей. Какой командой реализовать функцию памяти ? Например мне нужно, чтоб после срабатывания датчика движения начинала бесконечно пищать пищалка (зуммер). Что добавить в код ?

//Если обнаружили движение
  if(pirVal == HIGH)
  {
    digitalWrite(zumPin, HIGH);
  
  }
else {
digitalWrite (zumPin, LOW);
}
El
Offline
Зарегистрирован: 10.03.2016
  if (pirVal == HIGH) {
    while (1==1) {
      digitalWrite(zumPin, HIGH);
    }
  }

будет пищать, пока на резет не нажмешь.

svitr
Offline
Зарегистрирован: 16.04.2017

А если к примеру сделать так: пищит до тех пор пока импульсно не нажмешь 2 кнопки (S1 и S2). То есть вначале одну затем другую(нажал-отпустил, нажал-отпустил), после чего пищание прекращается.  Как будет код выглядеть ?

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

Закажите этот код в разделе "Ищу исполнителя".

El
Offline
Зарегистрирован: 10.03.2016

добавляешь условие выхода из while при импульсно нажатых 2-х кнопках.

while (exitWhile == false) {
...//пищит сирена.
...//считываешь свои нажатия
if (нажатия подходят){
exitWhile = true;
}

}

 

svitr
Offline
Зарегистрирован: 16.04.2017

Спасибо !

svitr
Offline
Зарегистрирован: 16.04.2017

Уточнение. Приведенный код я должен вставить после ..

if (pirVal == HIGH) {
2   while (1==1) {
3     digitalWrite(zumPin, HIGH);
4   }
5 }

?

El
Offline
Зарегистрирован: 10.03.2016

вместо этого while

svitr
Offline
Зарегистрирован: 16.04.2017

В строчку "пищит сирена" нужно добавить digitalWrite zumPin HIGH ?

1 while (exitWhile == false) {
2 ...//пищит сирена.
3 ...//считываешь свои нажатия
4 if (нажатия подходят){
5 exitWhile = true;
6 }
7  
8 }

 

svitr
Offline
Зарегистрирован: 16.04.2017

У меня не вышло.  Вставил как вы указали функцию while, и пишет что переменная exitWHILE не задеклирована (exitWhile was not declared in this scope)

//Если обнаружили движение
  if(pirVal == HIGH)
 { 
  digitalWrite(zelPin, LOW);
  digitalWrite(krasnPin, HIGH);
  while (exitWhile == false) { 
  digitalWrite(zum, HIGH);
  delay(1);
  digitalWrite(zum, LOW);
  delay(1); 
  if (buttonState == HIGH){
    exitWhile = true;
  }
    }
 }
El
Offline
Зарегистрирован: 10.03.2016
dim exitWhile as boolean

 

svitr
Offline
Зарегистрирован: 16.04.2017

Это нужно вставить вместо .. while ? То есть перед этими (exitWhile == false) скобками ?

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

El пишет:

dim exitWhile as boolean

Мужики, вы чё на бейсике пишете? Абалдеть! Это какая-то приблуда, типа плагин для IDE или что?

El
Offline
Зарегистрирован: 10.03.2016

ЕвгенийП пишет:

El пишет:

dim exitWhile as boolean

Мужики, вы чё на бейсике пишете? Абалдеть! Это какая-то приблуда, типа плагин для IDE или что?

Не успел сообщение переправить... работой заработался (((

 

 

svitr
Offline
Зарегистрирован: 16.04.2017

Так куда приведенную функцию вставлять ? Вместо чего ?

El
Offline
Зарегистрирован: 10.03.2016

заработался - макросы правлю...

правильно будет

boolean exitWhile = false

вставь перед циклом. Если не получится, то тебе вот сюда http://arduino.ru/Reference