Hilfe für Anfänger

Hallo leute ,
Ich brauche eure hilfe , meine Aufgabe mit Arduino seht um eine Drehzahlmessung zu erfassen.

#include <Wire.h>
unsigned long beginnzeit; // le temps debut pour la deuxiemer messure
volatile unsigned long endezeit; // le temps ecoule
volatile unsigned long  impuls; // compteur
unsigned long drehzahl; //nombre de tours
unsigned long dauer ;
int A=0;
int mittelwert=0;


void setup() {
Serial.begin(9600);
pinMode(2,INPUT);
pinMode(2,INPUT_PULLUP);
drehzahl=0;
endezeit=0;
beginnzeit=0;
impuls=0;
attachInterrupt(0,impulse,HIGH) ;// der Interrupt wird ausgelöst , wenn der pin 2 von HIGH nach LOW wechselt , bei fallender Flanke
}
void impulse(){
  impuls++;
 endezeit=millis();
 Serial.println("ende");
   Serial.println(endezeit);
   Serial.println(impuls);
}
void loop() {
 
if (endezeit>beginnzeit){
   detachInterrupt(0);
  dauer=endezeit-beginnzeit;

  drehzahl= 60*1000 *1/ (dauer); //

  beginnzeit=endezeit;
    A=drehzahl+A;
      if (impuls==18){
  mittelwert=A/impuls;
  Serial.println("Mittelwert");
Serial.println(mittelwert);
  impuls=0;
  A=0;
  }
    attachInterrupt(0,impulse,HIGH) ;
  /* Serial.println("begine");
   Serial.println(beginnzeit);
    Serial.println("edauer");
    Serial.println(dauer); */
    Serial.println("drehzahl");
Serial.println(drehzahl);


 
  }
else{
  drehzahl=0;
}

delay(1000);



}

Ich versuche halt die Drehzahl nach jede Impuls und der mittelwerte nach 18 Impulse auszurechnen , aber irgwie klappt gar nicht mit meinem code.
Der impuls zähler geht nicht wider auf NUll nach 18 impulse und der drehzahl kriege die falsch :S

wäre sehr dankbar falls jemande mir helfen kann :slight_smile:
Vielen Dank und schönen Abend noch .
Ps: sorry mein Deutsch ist aber nicht perfekt

auf die Schnelle: - serial.print muss auch der ISR raus - delay sollte raus

Schau mal im Forum, da gibt's mehrere Themen zu Drehzahlmessern.

Danke für die Antwort