Как одновременно обрабатывать 2 сценария?
- Войдите на сайт для отправки комментариев
Пнд, 15/04/2019 - 21:07
К Ардуино подключены 2 кнопки. Для каждой кнопки срабатывает свой сценарий. Проблема в том, что сценарий второй кнопки не срабатывает пока не выполнился сценарий первой, и на оборот. А мне нужно сделать обе кнопки автономными.
Буду благодарен за помошь.
Код:
const int LED1=2; const int BUTTON1=11; const int LED2=3; const int BUTTON2=12; int x1; int y1; int x2; int y2; void setup() { pinMode(LED1, OUTPUT); pinMode(BUTTON1, INPUT); pinMode(LED2, OUTPUT); pinMode(BUTTON2, INPUT); } void setMode1(int x1) { if (x1 == 1) { digitalWrite(LED1, HIGH); for(int i=0; i<360; i++) { if (digitalRead(BUTTON1) == LOW) { delay(3000); digitalWrite(LED1, LOW); return; } else delay(1000); } } else digitalWrite(LED1, LOW); } void setMode2(int x2) { if (x2 == 1) { digitalWrite(LED2, HIGH); for(int i=0; i<360; i++) { if (digitalRead(BUTTON2) == LOW) { delay(3000); digitalWrite(LED2, LOW); return; } else delay(1000); } } else digitalWrite(LED2, LOW); } void loop() { if (digitalRead(BUTTON1) == HIGH) { delay(1000); if (digitalRead(BUTTON1) == HIGH) { y1 = 1; setMode1(y1); } } if (digitalRead(BUTTON2) == HIGH) { delay(1000); if (digitalRead(BUTTON2) == HIGH) { y2 = 1; setMode2(y2); } } }
сначала избавьтесь от delay()
сначала избавьтесь от delay()
Вы имеете ввиду их заменить чем-то другим?
https://www.google.com/search?q=blink+без+delay
Или соседнюю тему посмотрите
https://www.google.com/search?q=blink+без+delay
Спасибо! С этим разобрался.
Сразу возникает трудность. Как с этим работать когда нужно сделать несколько пауз на нескольких пинах?
Например:
Подаем сигнал на пин1, если через 2сек сигнал еще есть - включаем светодиод, ждем 3 сек, выключаем светодиод.
Подаем сигнал на пин2, если через 3сек сигнал еще есть - включаем светодиод, ждем 4 сек, выключаем светодиод.
https://www.google.com/search?q=blink+без+delay
Спасибо! С этим разобрался.
Сразу возникает трудность. Как с этим работать когда нужно сделать несколько пауз на нескольких пинах?
Например:
Подаем сигнал на пин1, если через 2сек сигнал еще есть - включаем светодиод, ждем 3 сек, выключаем светодиод.
Подаем сигнал на пин2, если через 3сек сигнал еще есть - включаем светодиод, ждем 4 сек, выключаем светодиод.
Создаём переменную для хранения времени )) если кнопка нажата и переменная с временем меньше или равно текущему времени запоминаем текущее время + 2 секунды, и крутим программу дальше, условие сработает если нажата кнопка и в переменной для времяни <= текушего времяни + 2 sek
почитайте тут -> http://arduino.ru/Reference/Millis
as en example arduino IDE file > examples > 02.Digital > Debounce
на все случаи жизни
http://easyelectronics.ru/tag/operacionnaya-sistema