Как одновременно обрабатывать 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