// Пины
const int ledPin1 = 11; // Пин для первого светодиода
const int ledPin2 = 3; // Пин для второго светодиода
const int buttonPin1 = 12; // Пин для первой кнопки
const int buttonPin2 = 2; // Пин для второй кнопки
// Переменные для управления состоянием
bool ledOn1 = false; // Состояние первого светодиода
bool ledOn2 = false; // Состояние второго светодиода
bool lastButtonState1 = LOW; // Предыдущее состояние первой кнопки
bool lastButtonState2 = LOW; // Предыдущее состояние второй кнопки
unsigned long previousMillis1 = 0; // Время для таймера мигания первого светодиода
unsigned long previousMillis2 = 0; // Время для таймера мигания второго светодиода
const long interval = 1000; // Интервал мигания (1 секунда)
// Функция настройки
void setup() {
pinMode(ledPin1, OUTPUT); // Устанавливаем пин для первого светодиода как выход
pinMode(ledPin2, OUTPUT); // Устанавливаем пин для второго светодиода как выход
pinMode(buttonPin1, INPUT_PULLUP); // Включаем подтяжку для первой кнопки
pinMode(buttonPin2, INPUT_PULLUP); // Включаем подтяжку для второй кнопки
}
// Основная функция цикла
void loop() {
// Чтение состояния первой кнопки
bool buttonState1 = digitalRead(buttonPin1);
// Проверка нажатия первой кнопки (срабатывание при изменении состояния)
if (buttonState1 == LOW && lastButtonState1 == HIGH) {
ledOn1 = !ledOn1; // Переключаем состояние первого светодиода
}
lastButtonState1 = buttonState1; // Запоминаем текущее состояние первой кнопки
// Если первый светодиод должен быть включен
if (ledOn1) {
unsigned long currentMillis1 = millis(); // Получаем текущее время
// Проверяем, прошло ли время для переключения состояния первого светодиода
if (currentMillis1 - previousMillis1 >= interval) {
previousMillis1 = currentMillis1; // Обновляем время
// Переключаем состояние первого светодиода
int ledState1 = digitalRead(ledPin1);
digitalWrite(ledPin1, !ledState1);
}
} else {
// Если первый светодиод должен быть выключен, выключаем его
digitalWrite(ledPin1, LOW);
}
// Чтение состояния второй кнопки
bool buttonState2 = digitalRead(buttonPin2);
// Проверка нажатия второй кнопки (срабатывание при изменении состояния)
if (buttonState2 == LOW && lastButtonState2 == HIGH) {
ledOn2 = !ledOn2; // Переключаем состояние второго светодиода
}
lastButtonState2 = buttonState2; // Запоминаем текущее состояние второй кнопки
// Если второй светодиод должен быть включен
if (ledOn2) {
unsigned long currentMillis2 = millis(); // Получаем текущее время
// Проверяем, прошло ли время для переключения состояния второго светодиода
if (currentMillis2 - previousMillis2 >= interval) {
previousMillis2 = currentMillis2; // Обновляем время
// Переключаем состояние второго светодиода
int ledState2 = digitalRead(ledPin2);
digitalWrite(ledPin2, !ledState2);
}
} else {
// Если второй светодиод должен быть выключен, выключаем его
digitalWrite(ledPin2, LOW);
}
}