Marc2014:
An einem Fahrrad die Umdrehungen zu erkennen und bei überschreiten einen bestimmten Anzahl von Umdrehungen im Verhältnis zur Zeit einen Ausgangsstatus zu wechseln (high/low). Beispiel: Rad dreht sich schneller als X km/h = Motor aus / Rad dreht sich langsamer als X km/h Motor AN.
Ich hoffe Ich habe mich jetzt deutlicher ausgedrückt smiley-wink
Bei diesem Anwendungsfall sind die Schließzeiten des Reed-Kontakts extrem kurz.
Deshalb wertest Du die Reedkontakte am besten mit einer Interrupt-Serviceroutine über einen Hardware-Interrupt aus, um keinen Impuls vom Reedkontakt zu verpassen.
Das mit der Interrupt-Programmierung ist kein typisches Anfängerthema.
So wie Du es vorhast "drei Kontaktschließungen pro Sekunde" erkennen zu wollen, ist übrigens auch viel zu ungenau.
Beispiel: Ein Rad dreht sich gleichmäßig alle 400 ms einmal und gibt demzufolge alle 400 ms einen Impuls.
Frage: Wieviele Impulse erhältst Du pro Sekunde?
Antwort: Zwei oder drei, es kommt ganz darauf an, wann Deine Sekunde beginnt und wann die Impulse innerhalb der Sekunde auftreten.
Beispiel: Der erste Impuls tritt 50 nach Beginn der Messung auf:
Dann hast Du drei Impulse in einer Sekunde: nach 50, 450 und 850 ms
Beispiel: Der erste Impuls tritt erst 300 ms nach Beginn der Messung auf.
Dann hast Du zwei Impulse in einer Sekunde: nach 300 und 700 ms
Ob Du 2 oder 3 Impulse in einer Sekunde mißt, macht bei einer Geschwindigkeitsberechnung einen Fehler von 50% aus.
Du kannst nun natürlich anfangen, über 5 oder 10 Sekunden zu mitteln, um den Fehler zu verkleinern, aber vom Prinzip her ist das Mist, wenn Du die aktuelle Geschwindigkeit haben möchtest.
Einen recht gut funktionierenden Fahrradtacho-Sketch habe ich zum Beispiel mal hier gepostet:
http://forum.arduino.cc/index.php?topic=172506.msg1289260#msg1289260
Die Geschwindigkeit wird zwar auch einmal pro Sekunde aktualisiert, aber das Problem, dass in einer Sekunde unterschiedlich viele Kontakte gezählt werden können trotz gleichbleibender Geschwindigkeit, wird in diesem Sketch dadurch umgangen, dass sowohl die Reedkontakt-Schließung als auch die Zeit einzeln mitgezählt wird. So dass am Ende immer dieselbe Geschwindigkeit dabei herauskommt, egal ob es innerhalb einer Sekunde zwei Impule vom Reedkontakt gab mit einer Gesamtdauer von 800 seit dem letzten Impuls zuvor, oder ob es drei Impulse gab mit einer Gesamtdauer von 1200 ms seit den letzten Impuls zuvor.
Du kannst Dir den Code ja mal ansehen, aber wegen der Verwendung von Hardware-Interrupts ist der Sketch allerdings kein typisches Anfängerprogramm, womit man als Anfänger einsteigen sollte.