Drehimpulsgeber überempfindlich [endlich gelöst]

Nach dem Datenblatt darf ein Statuswechsel erst gezählt werden, wenn seit dem letzten mehr als 2ms vergangen sind. Der Encoder eignet sich somit nur für relativ langsame Drehbewegungen (< 1200 U/min), für eine Bedienung per Hand aber mehr als ausreichend.

Du solltest jetzt einfach im Code diesen Faktor noch einbauen, z.B.:

int val; 
 int encoder0PinA = 4;
 int encoder0PinB = 5;
 int encoder0Pos = 0;
 int encoder0PinALast = LOW;
 uint32_t encoder0PinALastChange = 0;
 int n = LOW;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   Serial.begin (57600);
 } 

 void loop() { 
   n = digitalRead(encoder0PinA);
   if ((encoder0PinALast == LOW) && (n == HIGH) && (millis() - encoder0PinALastChange > 2)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
     } else {
       encoder0Pos++;
     }
     Serial.print (encoder0Pos);
     Serial.print ("/");
     encoder0PinALastChange = millis();
   } 
   encoder0PinALast = n;
 }