const int buttonPin = 2; // Кнопка керування
const int greenLED = 3; // Режим NORMAL (зелений)
const int yellowLED = 4; // Режим ARMED (жовтий)
const int redLED = 5; // Режим DISARMED (червоний)
const int buzzerPin = 6; // Звуковий зумер
int currentMode = 0; // 0 - NORMAL, 1 - ARMED, 2 - DISARMED
unsigned long lastPress = 0; // Таймер для антидребезгу
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Внутрішній pull-up для кнопки
pinMode(greenLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
Serial.println("Наземна станція БПЛА");
// Початковий стан — NORMAL (зелений горить)
digitalWrite(greenLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
}
void loop() {
// Зчитування кнопки з антидребезгом 100 мс
if (digitalRead(buttonPin) == LOW && (millis() - lastPress > 100)) {
lastPress = millis(); // Оновлюємо таймер
// Перемикаємо режим по колу: 0 -> 1 -> 2 -> 0
currentMode = (currentMode + 1) % 3;
// Короткий звуковий сигнал (зумер) при зміні режиму
tone(buzzerPin, 1000, 50); // Частота 1000 Гц, тривалість 50 мс
// Обробка станів індикації
if (currentMode == 0) {
digitalWrite(greenLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
Serial.println("БПЛА: NORMAL (посаджений)");
}
else if (currentMode == 1) {
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(redLED, LOW);
Serial.println("БПЛА: ARMED (готовий до зльоту)");
}
else if (currentMode == 2) {
digitalWrite(greenLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, HIGH);
Serial.println("БПЛА: DISARMED (заблоковано)");
}
}
}