int tasterPin = 2; // Taster an Pin 2
int ledPinRed = 9; // Rote LED an Pin 9
int ledPinGreen = 10; // Grüne LED an Pin 10
int ledPinBlue = 11; // Blaue LED an Pin 11
int tasterOldStatus = HIGH; // Variable für den alten Tasterstatus, initial HIGH wegen INPUT_PULLUP
int tasterNewStatus = HIGH; // Variable für den neuen Tasterstatus
byte flag = 1;
void setup() {
pinMode(tasterPin, INPUT_PULLUP); // Taster-Pin als Eingang mit Pull-Up Widerstand setzen
pinMode(ledPinRed, OUTPUT); // LED-Pins als Ausgang setzen
pinMode(ledPinGreen, OUTPUT);
pinMode(ledPinBlue, OUTPUT);
Serial.begin(9600); // Serielle Kommunikation starten
}
void loop() {
tasterNewStatus = digitalRead(tasterPin); // Tasterstatus lesen
if (tasterOldStatus == HIGH && tasterNewStatus == LOW) { // Prüfen auf fallende Flanke
tasterOldStatus = tasterNewStatus; // Tasterstatus aktualisieren
if (flag == 4) {
flag = 1;
}
switch (flag) {
case 1:
analogWrite(ledPinRed, 0);
analogWrite(ledPinGreen, 0);
analogWrite(ledPinBlue, 255);
flag++;
break;
case 2:
analogWrite(ledPinRed, 0);
analogWrite(ledPinGreen, 255);
analogWrite(ledPinBlue, 0);
flag++;
break;
case 3:
analogWrite(ledPinRed, 255);
analogWrite(ledPinGreen, 0);
analogWrite(ledPinBlue, 0);
flag++;
break;
}
} else if (tasterNewStatus == HIGH) {
tasterOldStatus = HIGH; // Nur aktualisieren, wenn Taster losgelassen wurde
}
Serial.print("Flag ");
Serial.print(flag);
Serial.print(" Taster ");
Serial.println(tasterOldStatus);
}