Hallo Arduinowelt 8) ,
ich habe ein großes Problem beim Auslesen von Impulsen meines Drehgebers (1024 Impuls / U) . Bei langsamer Drehzahl funktioniert das Auslesen gut. Wenn ich das Rad schnell dreh funktioniert nicht mehr gut. da ist mein Code.
int pin_A= 3;// Signal A(zählsignal)
int pin_B= 2; // Signal B(Richtungssignal)
int pinStatus_A;
int pinStatus_B;
volatile double z=0;
volatile boolean stateNow=false;
volatile boolean stateBefore=false;
double a;
String wert = "";
char zeichen =0;
void setup()
{
Serial.begin(9600);
pinMode(pin_A,INPUT);
pinMode(pin_B,INPUT);
attachInterrupt(0,zaehlen_A,FALLING);// 0 ist der Interrupt für Pin 3, bei jedem Übergang von HIGH zu LoW wird zaehlen() aufgerufen
}
void loop()
{
pinStatus_A = digitalRead(pin_A);
pinStatus_B = digitalRead(pin_B);
if( stateBefore != stateNow)
{
a=(z*200)/1024; //Umwandlung in mm
Serial.println(a,3);
stateNow = false;
}
while (Serial.available()>0)
{
zeichen = Serial.read();
wert += zeichen;
if(wert=="reset")
{
z=0 ;
Serial.flush();
}
}
wert ="";
}
void zaehlen_A()
{
if( pinStatus_A != pinStatus_B)
z++;
else
z--;
stateNow=true;
}
Beim schnellen Drehen bekomme ich solche Ergebnisse 0 , 1 ,2 , 3 , 4 , 5 , 6 , 7 ,7, 7,7,7,7,7, 8, 9, 10 ,11, 11, 11, 11, 11 , 11, 11, 11, 11 ...
ich weiß nicht wie ich meinen Code modifizieren soll.
Ich brauche Hilfe bitte.
vielen Dank für die Aufmerksamkeit
Franck