Impulsmessung für Durchflussmesser

** **attachInterrupt( 0, irhandler, RISING);** **

Nicht Pin 2 / 3, sondern Interrupt 0 / 1 !
Und der Funktionsname natürlich nicht als String ( für alle Fälle, sorry falls dir das klar war )

hk007:
Oder muss ich mich da um irgendwas kümmern?

Nein, das stimmt schon so.

Kümmern musst du dich um Variable, die gemeinsam vom Interrupt-Handler und der Hauptroutine verwendet werden:
s. Schlüsselwort "volatile", um falsche Compiler-Optimierungen zu vermeiden.

Und bedenke, dass im Zugriff auf solche Variable die Hauptroutine "mittendrin" unterbrochen werden kann, da wir auf einem 8bit Prozessor arbeiten.
Ich würde die IR Routine so einfach wie möglich halten :

volatile unsigned long pulses;
void irhandler() { pulses++;}

const unsigned int CYCLE = 1000;  // z.B. je Sekunde, oder so oft, dass die Anzahl Pulse genau eine Durchfluss-Einheit ist
unsigned long lastpulses;
unsigned long lastmillis;
void loop () 
{
  unsigned long now=millis();
  if (now - lastmillis >= CYCLE)   
  {
    noInterrupts();
    unsigned long pcount = pulses - lastpulses;
    lastpulses = pulses;
    interrupts();
    lastmillis += CYCLE;
    Serial.print (pcount); Serial.println ( " pulse/s ");
  }
}

Die Implementierung von setup() überlasse ich dir :wink:

edit: Syntax verbessert, aber immer noch ungeprüft