const unsigned long BEACON_RATE = 1000;
const unsigned long STROBE_RATE = 500;
const int NAV_LIGHT_PINS[] = {11, 9, 6};
const int BEACON_LIGHT_PIN = 8;
const int LANDING_LIGHT_PINS[] = {10, 7};
const int STROBE_LIGHT_PINS[] = {12, 5};
const int SW_START_PIN = 4;
const int SW_STROBES_PIN = 3;
const int SW_LANDING_PIN = 2;
bool beaconState = false;
bool strobeState = false;
unsigned long prevBeacon = 0;
unsigned long prevStrobe = 0;
void setup() {
Serial.begin(115200);
for (int i = 0; i < 3; i++) {
pinMode(NAV_LIGHT_PINS[i], OUTPUT);
}
for (int i = 0; i < 2; i++) {
pinMode(LANDING_LIGHT_PINS[i], OUTPUT);
pinMode(STROBE_LIGHT_PINS[i], OUTPUT);
}
pinMode(BEACON_LIGHT_PIN, OUTPUT);
pinMode(SW_START_PIN, INPUT_PULLUP);
pinMode(SW_STROBES_PIN, INPUT_PULLUP);
pinMode(SW_LANDING_PIN, INPUT_PULLUP);
}
void loop() {
for (int i = 0; i < 3; i++) {
digitalWrite(NAV_LIGHT_PINS[i], !digitalRead(SW_START_PIN));
}
if (!digitalRead(SW_START_PIN)) {
if (millis() - prevBeacon >= BEACON_RATE) {
beaconState = !beaconState;
digitalWrite(BEACON_LIGHT_PIN, beaconState);
prevBeacon = millis();
}
} else {
digitalWrite(BEACON_LIGHT_PIN, LOW);
}
for (int i = 0; i < 2; i++) {
digitalWrite(LANDING_LIGHT_PINS[i], !digitalRead(SW_LANDING_PIN));
}
if (!digitalRead(SW_STROBES_PIN)) {
if (millis() - prevStrobe >= STROBE_RATE) {
strobeState = !strobeState;
for (int i = 0; i < 2; i++) {
digitalWrite(STROBE_LIGHT_PINS[i], strobeState);
}
prevStrobe = millis();
}
} else {
for (int i = 0; i < 2; i++) {
digitalWrite(STROBE_LIGHT_PINS[i], LOW);
}
}
}
Start
Strobes
Landing