Claudio_FF questo è il codice che uso per verificare il numero di passi
#define encoderCLK 2 // CLK (canale A) connesso al pin D2
#define encoderDT 4 // DT (Canale B) connesso al pin D4
#define interrupt0 0 // Associato al pin 2
int encoderCount = 0; // Contatore
int actCLKState; // Lettura attuale del canale CLK (A)
int prevCLKState; // Lettura precedente del canale CLK (A)
void setup()
{
pinMode(encoderCLK, INPUT); // interrupt 0
pinMode(encoderDT, INPUT);
attachInterrupt(interrupt0, CLKChanged, CHANGE);
Serial.begin(38400);
prevCLKState = digitalRead(encoderCLK);
}
void loop() {
Serial.println(encoderCount);
}
void CLKChanged()
{
int actCLKState = digitalRead(encoderCLK);
if (prevCLKState != actCLKState)
{
encoderCount += (actCLKState == digitalRead(encoderDT) ? 1 : -1);
Serial.println(encoderCount);
prevCLKState = actCLKState;
}
}
Certo per verificare la differenza tra due fonti ma il fatto è che se non legge correttamente nemmeno l'encoder non ha senso calcolare il tempo. Te cosa ne dici ? A me verrebbe da dire prima risolvol il problema della lettura di ogni passo