// Определяем пины для кнопок, светодиодов и пьезоизлучателя
const int buttonPin = 2; // Кнопка 1 (включение/выключение)
const int whiteLed1Pin = 4; // Белый светодиод 1
const int whiteLed2Pin = 5; // Белый светодиод 2
const int whiteLed3Pin = 9; // Белый светодиод 3 (новый)
const int redLed1Pin = 6; // Красный светодиод 1
const int redLed2Pin = 7; // Красный светодиод 2
const int redLed3Pin = 10; // Красный светодиод 3 (новый)
const int buzzerPin = 8; // Пьезоизлучатель
// Переменные для состояния кнопки и флагов
bool buttonState = false; // Текущее состояние кнопки
bool lastButtonState = false; // Предыдущее состояние кнопки
bool sequenceRunning = false; // Флаг для отслеживания, идет ли последовательность
void setup() {
// Настроить пины
pinMode(buttonPin, INPUT);
pinMode(whiteLed1Pin, OUTPUT);
pinMode(whiteLed2Pin, OUTPUT);
pinMode(whiteLed3Pin, OUTPUT); // Новый белый светодиод
pinMode(redLed1Pin, OUTPUT);
pinMode(redLed2Pin, OUTPUT);
pinMode(redLed3Pin, OUTPUT); // Новый красный светодиод
pinMode(buzzerPin, OUTPUT);
// Изначально выключаем все светодиоды
digitalWrite(whiteLed1Pin, LOW);
digitalWrite(whiteLed2Pin, LOW);
digitalWrite(whiteLed3Pin, LOW); // Выключаем новый белый светодиод
digitalWrite(redLed1Pin, LOW);
digitalWrite(redLed2Pin, LOW);
digitalWrite(redLed3Pin, LOW); // Выключаем новый красный светодиод
}
void loop() {
// Считываем состояние кнопки
buttonState = digitalRead(buttonPin);
// Если состояние кнопки изменилось (с HIGH на LOW или наоборот)
if (buttonState != lastButtonState) {
delay(50); // Дебаунсинг кнопки (задержка для устранения дребезга)
if (buttonState == HIGH) {
// Переключаем состояние последовательности
if (sequenceRunning) {
stopSequence();
} else {
startSequence();
}
}
lastButtonState = buttonState; // Обновляем предыдущее состояние кнопки
}
}
// Функция для запуска последовательности
void startSequence() {
sequenceRunning = true; // Устанавливаем флаг, что последовательность запущена
// Включаем белые светодиоды
digitalWrite(whiteLed1Pin, HIGH);
digitalWrite(whiteLed2Pin, HIGH);
digitalWrite(whiteLed3Pin, HIGH); // Включаем новый белый светодиод
// Воспроизводим обратный отсчет
beepSequence();
// После завершения последовательности, включаем красные светодиоды
digitalWrite(redLed1Pin, HIGH);
digitalWrite(redLed2Pin, HIGH);
digitalWrite(redLed3Pin, HIGH); // Включаем новый красный светодиод
}
// Функция для остановки всех действий
void stopSequence() {
// Выключаем все светодиоды
digitalWrite(whiteLed1Pin, LOW);
digitalWrite(whiteLed2Pin, LOW);
digitalWrite(whiteLed3Pin, LOW); // Выключаем новый белый светодиод
digitalWrite(redLed1Pin, LOW);
digitalWrite(redLed2Pin, LOW);
digitalWrite(redLed3Pin, LOW); // Выключаем новый красный светодиод
// Останавливаем звук на пьезоизлучателе
noTone(buzzerPin);
// Сбрасываем флаг
sequenceRunning = false;
}
// Функция для воспроизведения последовательности нот
void beepSequence() {
tone(buzzerPin, 1000); // Первый звук (пип)
delay(500); // Задержка 500 мс
noTone(buzzerPin); // Останавливаем звук
delay(200); // Задержка между нотами
tone(buzzerPin, 1000); // Второй звук (пип)
delay(500); // Задержка 500 мс
noTone(buzzerPin); // Останавливаем звук
delay(200); // Задержка между нотами
tone(buzzerPin, 1500); // Третий звук (пиииииип)
delay(1000); // Длинная задержка
noTone(buzzerPin); // Останавливаем звук
delay(200); // Задержка между нотами
}