int pinA = 2; // Le port D2 est associé à l'interruption 0
int pinB = 4;
int t1 = 0;
volatile long encodeurPosition = 0;
unsigned long lastTime = 0;
float rpm = 0.0;
void setup ()
{
pinMode(pinA, INPUT);
pinMode(pinB, INPUT);
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(pinA), test, CHANGE);
}
void loop ()
{
unsigned long currentTime = millis();
if (currentTime - lastTime >= 3000) {
float revs = float(encodeurPosition)/20;
rpm = abs(revs/3);
rpm = (rpm*60);
rpm = (rpm/2);
encodeurPosition = 0;
lastTime = currentTime;
Serial.println(rpm);
}
//Serial.print("RPM: ");
}
void test ()
{
if (digitalRead(pinA) == digitalRead(pinB)) {
encodeurPosition++;
delay(30);
} else {
encodeurPosition--;
delay(30);
}
//Serial.println(encodeurPosition);
}