Hi zusammen,
ich möchte gerne die Anzahl der Unterbrechungen einer Infrarot-Reflexlichtschranke (Typ tcrt5000) zählen.
Diese soll vor einer Art Propeller platziert werden und ermitteln, wie oft sich der Propeller gedreht hat.
Hier ist mal mein Code-Ansatz (ich verwende einen Arduino Nano):
#define sensorPIN 2
int sensorState;
int IRvalueD = 0;
volatile unsigned long interruptCounter = 0;
void setup ()
{
Serial.begin (9600);
pinMode (sensorPIN, INPUT);
attachInterrupt (digitalPinToInterrupt(2), SensorInterrupt, RISING);
}
void loop()
{
// read the state of the sensor
sensorState = digitalRead (sensorPIN);
Serial.println (interruptCounter);
delay(100);
}
void SensorInterrupt ()
{
interruptCounter++;
}
Nach Aufspielen des Sketches bekomme ich aber komische Werte raus.
Ertwartet hätte ich folgendes Verhalten:
Wenn ich die Lichtschranke mit dem Finger unterbreche zählt interruptCounter um eins hoch (die LED an der Lichtschranke leuchtet beim Unterbrechen grün, d.h. die Lichtschranke erkennt es auf jeden Fall schon mal richtig).
Wenn ich den Finger dann wieder wegnehme wird nichts gezählt, weil ich ja als Parameter der attachInterrupt-Funktion "RISING" habe.
Wenn ich dann wieder bedämpfe, zählts wieder ein hoch, usw.
Aber leider verhält sich die Sache in der Realität so:
Am Anfang 0
Ich unterbreche die Lichtschranke mit dem Finger --> interruptCounter zählt direkt auf 7 hoch
Ich nehme den Finger wieder weg --> interruptCounter zählt auf 15 hoch
usw.
Die Werteänderungen sind auch völlig willkürlich, hab ich das Gefühl.
Und nun bin ich an dem Punkt, an dem ich eben nicht weiterkomme.
Wäre nett, wenn mich jemand kurz an die Hand nehmen könnte, der Wille ist da, aber das Hirn will nicht ;-(
Beste Grüße
Daniel