int pinA = 2; // Le port D2 est associé à l'interruption 0
int pinB = 4;
int led = 13;
volatile long encodeurPosition = 0;
unsigned long lastTime = 0;
float rpm = 0.0;
int lasttime1 = 0;
int lasttime2 = 0;
void setup ()
{
pinMode(pinA, INPUT);
pinMode(pinB, INPUT);
pinMode(led, OUTPUT);
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);
}
unsigned long time1 = millis();
unsigned long time2 = millis();
if (rpm<60 && time1 - lasttime1 >= 200 && digitalRead(led) == LOW)
{
digitalWrite(led, HIGH);
time1 = lasttime1;
}
else if (rpm<60)
{
digitalWrite(led, LOW);
}
else
{
digitalWrite(led, LOW);
}
}
void test ()
{
if (digitalRead(pinA) == digitalRead(pinB)) {
encodeurPosition++;
delay(30);
} else {
encodeurPosition--;
delay(30);
}
//Serial.println(encodeurPosition);
}