#define LED_RED 25
#define LED_GREEN_LOW 26
#define LED_BI_YELLOW 27
#define LED_BI_GREEN 14
#define LED_GREEN 32
#define BUTTON 33
int state = 1;
const int maxStates = 8;
// --- Button ---
bool buttonState = HIGH;
bool lastReading = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
// --- 1s Blink ---
unsigned long lastBlink1s = 0;
bool blink1s = false;
// --- Gelb 1s an / 0.5s aus ---
unsigned long lastCustomBlink = 0;
bool yellowCustomState = false;
void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_GREEN_LOW, OUTPUT);
pinMode(LED_BI_YELLOW, OUTPUT);
pinMode(LED_BI_GREEN, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("Start...");
Serial.print("Case ");
Serial.println(state);
}
void loop() {
unsigned long now = millis();
// -------- ENTPRELLUNG --------
bool reading = digitalRead(BUTTON);
if (reading != lastReading) {
lastDebounceTime = now;
}
if ((now - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
// Flanke HIGH -> LOW
if (buttonState == LOW) {
state++;
if (state > maxStates) state = 1;
Serial.print("Case ");
Serial.println(state);
}
}
}
lastReading = reading;
// -------- 1s Blink --------
if (now - lastBlink1s >= 1000) {
blink1s = !blink1s;
lastBlink1s = now;
}
// -------- Gelb 1s / 0.5s --------
if (yellowCustomState) {
if (now - lastCustomBlink >= 1000) {
yellowCustomState = false;
lastCustomBlink = now;
}
} else {
if (now - lastCustomBlink >= 500) {
yellowCustomState = true;
lastCustomBlink = now;
}
}
// -------- Alles aus --------
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN_LOW, LOW);
digitalWrite(LED_BI_YELLOW, LOW);
digitalWrite(LED_BI_GREEN, LOW);
digitalWrite(LED_GREEN, LOW);
// -------- Zustände --------
switch (state) {
case 1:
digitalWrite(LED_RED, HIGH);
break;
case 2:
digitalWrite(LED_GREEN, HIGH);
break;
case 3:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_GREEN, HIGH);
break;
case 4:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_YELLOW, blink1s);
digitalWrite(LED_GREEN_LOW, !blink1s);
break;
case 5:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_YELLOW, blink1s);
digitalWrite(LED_GREEN_LOW, blink1s);
break;
case 6:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_YELLOW, HIGH);
digitalWrite(LED_GREEN_LOW, HIGH);
break;
case 7:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_YELLOW, yellowCustomState);
break;
case 8:
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BI_YELLOW, HIGH);
break;
}
}