//Leuchtturm und Leuchttonnen mit Arduino
int led1Pin = 11; // LED Pin für List West
int led2Pin = 3; // LED Pin für Westerheversand
int led3Pin = 4; // LED Pin für Hörnum
int led1Timeout[] = {4500,1500}; // Phasendauer Led 1
int led2Timeout[] = {2000,1000,2000,1000,8000,1000}; // Phasendauer Led 2
int led3Timeout[] = {420,2580,420,5580}; // Phasendauer Led 3
int led1Phases = 2; // speichert die Anzahl der Phasen
int led2Phases = 6; // speichert die Anzahl der Phasen
int led3Phases = 4;
int led1Phase = 0; // aktuelle Phase der LED
int led2Phase = 0; // Aktuelle Phase der LED
int led3Phase = 0;
int led1State = 1; // LED Zustand 1 = an, -1 = aus
int led2State = 1; // LED Zustand 1 = an, -1 = aus
int led3State = 3;
long led1Timer = 0; // LED timer
long led2Timer = 0; // LED timer
long led3Timer = 0;
void setup() {
Serial.begin(115200);
pinMode(led1Pin, OUTPUT); // Pin wird als Output deklariert
pinMode(led2Pin, OUTPUT); // Pin wird als Output deklariert
pinMode(led3Pin, OUTPUT); // Pin wird als Output deklariert
led1Timer = millis(); // Start des Timers
led2Timer = millis(); // Start des Timers
led3Timer = millis(); // Start des Timers
}
void loop() {
// LED 1 Handling
if (millis()>led1Timer+led1Timeout[led1Phase]){ // prüft den Timer
led1Phase++; // erhöht die Leuchtphase um 1
if (led1Phase>led1Phases-1){ // falls Leuchtphasenmaximum überschritten
led1Phase = 0; // Leuchtphase zurücksetzen
}
led1Timer = millis(); // Timer resetten
led1State *= (-1); // LED Zustand wird umgekehrt
if (led1State>0) digitalWrite(led1Pin, HIGH); // wenn LED Zustand > 0, schalte LED ein
else digitalWrite(led1Pin, LOW); // wenn LED Zustand < 0, schalte LED aus
}
// LED 2 Handling
if (millis()>led2Timer+led2Timeout[led2Phase]){ // prüft den Timer
led2Phase++; // erhöht die Leuchtphase um 1
if (led2Phase>led2Phases-1){ // falls Leuchtphasenmaximum überschritten
led2Phase = 0; // Leuchtphase zurücksetzen
}
led2Timer = millis(); // Timer resetten
led2State *= (-1); // LED Zustand wird umgekehrt
if (led2State>0) digitalWrite(led2Pin, HIGH); // wenn LED Zustand > 0, schalte LED ein
else digitalWrite(led2Pin, LOW); // wenn LED Zustand < 0, schalte LED aus
}
// LED 3 Handling
if (millis()>led3Timer+led3Timeout[led3Phase]){ // prüft den Timer
led3Phase++; // erhöht die Leuchtphase um 1
if (led3Phase>led3Phases-1){ // falls Leuchtphasenmaximum überschritten
led3Phase = 0; // Leuchtphase zurücksetzen
}
led3Timer = millis(); // Timer resetten
led3State *= (-1); // LED Zustand wird umgekehrt
if (led3State>0) digitalWrite(led3Pin, HIGH); // wenn LED Zustand > 0, schalte LED ein
else digitalWrite(led3Pin, LOW); // wenn LED Zustand < 0, schalte LED aus
}
delay(20); // kurze Pause
}