const int inputPin = 2; const int outputPin = 13; volatile int Impulse=0; // Variablen, die von Interruptroutinen angefasst werden, sollten "volatile" deklariert werden volatile unsigned long lastTime=0; // Zeitpunkt der letzten steigenden Flanke, nötig zum Entprellen volatile int Umdrehungen=0; void setup() { pinMode(outputPin, OUTPUT); pinMode(inputPin, INPUT); Serial.begin(9600); attachInterrupt(0, keyPressed, RISING); // 0 ist der Interrupt für Pin 2, bei jeder steigenden Flanke wird keyPressed() aufgerufen } void keyPressed() // state hochzählen, falls mindestens 50ms seit der letzten Flanke vergangen sind { unsigned long now = millis(); if (now - lastTime > 50) // entprellen { Impulse++; Umdrehungen = Impulse / 3; //Anzahl Lüfterblätter 3 Serial.print("Umdrehungen = "); Serial.println(Umdrehungen); } lastTime=now; } void loop() { }