#define TASTERPIN 4
#define RESETPIN 3
int LED_PINS[] = {5, 6, 7, 8, 9, 10, 11, 12};
volatile bool resetState = false;
void setup() {
Serial.begin(9600);
pinMode(TASTERPIN, INPUT_PULLUP);
pinMode(RESETPIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(RESETPIN), resetISR, FALLING);
for (int i = 0; i < 8; i++) {
pinMode(LED_PINS[i], OUTPUT);
digitalWrite(LED_PINS[i], LOW);
// Initialisierung der LEDs auf AUS
}
}
void resetISR (){
resetState = true;
}
void loop() {
bool tasterstatus = digitalRead(TASTERPIN);
static bool vorherigerTasterstatus = HIGH;
static int zaehlwert = 0;
// Überprüfen, ob der RESETPIN aktiviert ist
if (resetState) {
zaehlwert = 0;
for (int i = 0; i < 8; i++) {
digitalWrite(LED_PINS[i], LOW);
resetState = false ;
}
}
if (zaehlwert == 255 && tasterstatus == LOW && vorherigerTasterstatus == HIGH){
zaehlwert = 0;
for (int i = 0; i < 8; i++) {
digitalWrite(LED_PINS[i], LOW);
}
Serial.print("Zählwert: ");
Serial.println(zaehlwert);
vorherigerTasterstatus = LOW ;
}
// Überprüfen, ob der Taster gedrückt wurde
if (tasterstatus == LOW && vorherigerTasterstatus == HIGH ) {
zaehlwert +=1;
delay(50); //
Serial.print("Zählwert: ");
Serial.println(zaehlwert);
// Entprellen nach Druck
}
delay(50);
vorherigerTasterstatus = tasterstatus;
if (zaehlwert > 255) {
zaehlwert = 0;
}
// Bitweise Darstellung des Zählwerts mit einer for-Schleife
for (int i = 0; i < 8; i++) {
// Überprüfen des i-ten Bits von zaehlwert
bool bitStatus = bitRead(zaehlwert, i);
digitalWrite(LED_PINS[i], bitStatus ? HIGH : LOW);
}
}