// Definition der Pins für die Blinker und Taster
const int leftBlinkerPin = 8; // Pin für den linken Blinker
const int rightBlinkerPin = 9; // Pin für den rechten Blinker
const int leftButtonPin = 2; // Pin für den linken Blinkertaster
const int rightButtonPin = 3; // Pin für den rechten Blinkertaster
const int warnButtonPin = 4; // Pin für den Warnblinkertaster
// Variablen zum Umschalten der Blinker
bool leftBlinkerOn = false; // Status des linken Blinkers
bool rightBlinkerOn = false; // Status des rechten Blinkers
bool warnBlinkerOn = false; // Status des Warnblinkers
// Variablen zum Überprüfen, ob der Taster gerade gedrückt wurde
bool lastLeftButtonState = HIGH;
bool lastRightButtonState = HIGH;
bool lastWarnButtonState = HIGH;
// Blinken Intervall
unsigned long previousMillis = 0; // Speichert die letzte Zeit, zu der geblinkt wurde
const long blinkInterval = 1000; // Intervall für das Blinken (1000ms - 1 Hz)
void setup() {
// Setze die Pins für die Blinker als Ausgang
pinMode(leftBlinkerPin, OUTPUT);
pinMode(rightBlinkerPin, OUTPUT);
// Setze die Pins für die Taster als Eingang mit Pull-up-Widerstand
pinMode(leftButtonPin, INPUT_PULLUP); // Verwende internen Pullup-Widerstand
pinMode(rightButtonPin, INPUT_PULLUP); // Verwende internen Pullup-Widerstand
pinMode(warnButtonPin, INPUT_PULLUP); // Verwende internen Pullup-Widerstand
}
void loop() {
// Lese den Zustand der Taster
int leftButtonState = digitalRead(leftButtonPin);
int rightButtonState = digitalRead(rightButtonPin);
int warnButtonState = digitalRead(warnButtonPin);
// Überprüfe, ob der linke Blinker-Taster gedrückt wurde
if (leftButtonState == LOW && lastLeftButtonState == HIGH) {
// Wenn der linke Blinker aktiv ist, deaktiviere ihn
if (leftBlinkerOn) {
leftBlinkerOn = false;
} else {
// Wenn der linke Blinker nicht aktiv ist, aktiviere ihn
leftBlinkerOn = true;
rightBlinkerOn = false; // Schalte den rechten Blinker aus
warnBlinkerOn = false; // Schalte den Warnblinker aus
}
delay(200); // Entprellung des Tasters
}
// Überprüfe, ob der rechte Blinker-Taster gedrückt wurde
if (rightButtonState == LOW && lastRightButtonState == HIGH) {
// Wenn der rechte Blinker aktiv ist, deaktiviere ihn
if (rightBlinkerOn) {
rightBlinkerOn = false;
} else {
// Wenn der rechte Blinker nicht aktiv ist, aktiviere ihn
rightBlinkerOn = true;
leftBlinkerOn = false; // Schalte den linken Blinker aus
warnBlinkerOn = false; // Schalte den Warnblinker aus
}
delay(200); // Entprellung des Tasters
}
// Überprüfe, ob der Warnblinker-Taster gedrückt wurde
if (warnButtonState == LOW && lastWarnButtonState == HIGH) {
// Wenn der Warnblinker aktiv ist, deaktiviere ihn
if (warnBlinkerOn) {
warnBlinkerOn = false;
// Wenn der Warnblinker deaktiviert wird, sollte der zuletzt aktive Blinker weiterhin blinken
// Setze die aktiven Blinker zurück
if (leftBlinkerOn) {
rightBlinkerOn = false;
}
if (rightBlinkerOn) {
leftBlinkerOn = false;
}
} else {
// Wenn der Warnblinker nicht aktiv ist, aktiviere beide Blinker
warnBlinkerOn = true;
leftBlinkerOn = true;
rightBlinkerOn = true;
}
delay(200); // Entprellung des Tasters
}
// Verarbeite das Blinken der LEDs
unsigned long currentMillis = millis();
// Wenn der Warnblinker aktiviert ist, blinken beide LEDs gleichzeitig
if (warnBlinkerOn) {
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis;
digitalWrite(leftBlinkerPin, !digitalRead(leftBlinkerPin)); // Umschalten der linken LED
digitalWrite(rightBlinkerPin, !digitalRead(rightBlinkerPin)); // Umschalten der rechten LED
}
} else {
// Wenn der Warnblinker nicht aktiv ist, blinken nur der aktive Blinker
if (leftBlinkerOn) {
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis;
digitalWrite(leftBlinkerPin, !digitalRead(leftBlinkerPin)); // Umschalten der linken LED
}
} else {
digitalWrite(leftBlinkerPin, LOW); // Wenn nicht aktiv, halte den linken Blinker aus
}
if (rightBlinkerOn) {
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis;
digitalWrite(rightBlinkerPin, !digitalRead(rightBlinkerPin)); // Umschalten der rechten LED
}
} else {
digitalWrite(rightBlinkerPin, LOW); // Wenn nicht aktiv, halte den rechten Blinker aus
}
}
// Speicher den aktuellen Tasterzustand für die nächste Überprüfung
lastLeftButtonState = leftButtonState;
lastRightButtonState = rightButtonState;
lastWarnButtonState = warnButtonState;
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led2:A
led2:C
led1:A
led1:C
r1:1
r1:2
r2:1
r2:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r