int redPinRightSide[] = {15, 2, 0, 4, 16, 17, 5, 18};
int greenPinLeftSide[] = {32, 33, 25, 26};
int buttonLeftSide[] = {27, 14, 12, 13};
uint8_t buttonPress = 0; // Zähler für Button-Presses
void setup(){
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(redPinRightSide[i], OUTPUT);
}
for (int i = 0; i < 4; i++){
pinMode(buttonLeftSide[i], INPUT);
}
while (!Serial) {
// Trick 17: Das Hauptprogramm wird erst ausgeführt, wenn die serielle Konsole aufgemacht wurde.
// So verpasst man keine Ausgabe auf der Konsole, weil das Programm losläuft, bevor die Konsole offen ist.
}
for(int i = 0; i < 4; i++){
pinMode(greenPinLeftSide[i], OUTPUT);
}
}
bool lastButtonState[] = {LOW, LOW, LOW, LOW}; //definiert eine statische Variable, die den letzten Zustand des Buttons speichert
void loop(){
for (int i = 0; i < 4; i++){
bool currentButtonState = digitalRead(buttonLeftSide[i]); //bool currentButtonState liest den aktuellen Zustand des Buttons.
if (currentButtonState == HIGH && lastButtonState[i] == LOW) {
buttonPress++;
delay(50); // Kurze Verzögerung, um das Prellen des Buttons zu verhindern
}
lastButtonState[i] = currentButtonState; //aktualisiert den gespeicherten Zustand des Buttons für den nächsten Durchlauf der Schleife.
}
Serial.println(buttonPress); // gibt den aktuellen Wert des Zählers auf der seriellen Konsole aus
delay(100); // Kurze Verzögerung für Stabilität
for (int i = 0; i < 4; i++){
if(digitalRead(buttonLeftSide[i]) == HIGH){
digitalWrite(greenPinLeftSide[i], HIGH);
} else {
digitalWrite(greenPinLeftSide[i], LOW);
}
}
}