Помогите обойти проблему с delay в else. В этом виде всё работает, но delay мешает обрабатывать состояние кнопки. Как-то можно мигать красным светодиодом по-другому?
int BuzzPin = 9; // выход на динамик
int UccBF = 12; // питание р/с
int Button = 5; // вход кнопки
int GreenLed = 10; // выход на зелёный светодиод
int RedLed = 9; // выход на красный светодиод
void setup()
{
pinMode(BuzzPin, OUTPUT); // устанавливает режим работы - выход
pinMode(UccBF, OUTPUT); // устанавливает режим работы - выход
pinMode(GreenLed, OUTPUT); // устанавливает режим работы - выход
pinMode(Button, INPUT); // устанавливает режим работы - вход
digitalWrite(BuzzPin, HIGH); // выключает динамик
digitalWrite(UccBF, HIGH); // выключает питание р/с
digitalWrite(GreenLed, LOW); // выключает зелёный светодиод
digitalWrite(Button, HIGH); // включаем подтягивающий резистор
}
void loop()
{
if (digitalRead(Button) == LOW) { // считываем состояние кнопки
digitalWrite(BuzzPin, LOW); delay(500); // Включаем звук на 0,5 секунд.
digitalWrite(BuzzPin, HIGH); delay(5000); // Выключаем звук на 5 секунд.
digitalWrite(UccBF, LOW); // включаем питание р/с:
digitalWrite(GreenLed, HIGH); // зажигаем зелёный светодиод:
for (int i=0; i <= 5; i++) {
digitalWrite(BuzzPin, LOW); delay(500); // Включаем звук на 0,5 секунд
digitalWrite(BuzzPin, HIGH); delay(500); // Выключаем звук на 0,5 секунд
}
digitalWrite(BuzzPin, LOW); delay(1000); // Включаем звук на 1 секунду
digitalWrite(BuzzPin, HIGH); // выключаем звук
digitalWrite(UccBF, HIGH); // выключаем питание р/с
digitalWrite(GreenLed, LOW); // выключаем зелёный светодиод
}
else {
// мигаем красным светодиодом
digitalWrite(RedLed, HIGH); delay(100);
digitalWrite(RedLed, LOW); delay(900);
}
}