int switchPin = 8;
// Переменная для регулирования скорости мигания
int controlSpeed = 2000;
int ledPin1 = 9;
int ledPin2 = 10;
int ledPin3 = 6;
int ledPin4 = 11;
// Переменная для контроля залипания кнопки
bool debounceButtonState = false;
void setup() {
pinMode(switchPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
// Включаем лампочки сверху в низ
digitalWrite(ledPin4, HIGH);
delay(controlSpeed);
digitalWrite(ledPin3, HIGH);
delay(controlSpeed);
digitalWrite(ledPin2, HIGH);
delay(controlSpeed);
digitalWrite(ledPin1, HIGH);
delay(controlSpeed);
// Выключаем лампочки сверху в низ
digitalWrite(ledPin4, LOW);
delay(controlSpeed);
digitalWrite(ledPin3, LOW);
delay(controlSpeed);
digitalWrite(ledPin2, LOW);
delay(controlSpeed);
digitalWrite(ledPin1, LOW);
delay(controlSpeed);
// Считываем состояние кнопки
delay(10);
byte buttonState = digitalRead(switchPin);
// Проверяем нажата ли кнопка и нужно ли ее коректировать
delay(10);
if(buttonState == HIGH && debounceButtonState == false)
{
// Если условия соблюдены, тогда скорость мигания становится
// стандартной (2 секунды) или ускоряется
controlSpeed /= 2;
// Указываем нужду в корректировке кнопки
debounceButtonState = true;
// После 3-го нажатия на кнопку сбрасываем значение
if(controlSpeed < 500) controlSpeed = 2000;
}
else
{
// Ждем пока кнопка прийдет в себя и указываем что корректировка завершена
if(buttonState != HIGH) debounceButtonState = false;
}
}