Moteur équipé d'un encodeur optique

Spécifications

Brochage (détrompeur à droite)

Les sorties INT et DIR semblent identiques, un train d'impulsion fonction de la rotation du moteur

Utilisation

Les impulsions peuvent être comptées grâce aux interruptions de l'ARDUINO. Montage avec un pont en H L298N

comptage.ino
volatile int comptageImpulsion = 0; // variable accessible dans la routine interruption externe 0
int vitesse = 40;
int distance = 355;
 
void setup()   {
  Serial.begin(115200); // initialise connexion série à 115200 bauds
  attachInterrupt(0, gestionINT0, RISING); // attache l'interruption externe n°0 ( = PIN2) à la fonction gestionINT0()
  pinMode(3, OUTPUT); //Cmd PWM moteur
  pinMode(4, OUTPUT); //Cmd moteur
  pinMode(5, OUTPUT); //Cmd moteur
  Serial.print("Vitesse = ");
  Serial.println(vitesse);
  comptageImpulsion = 0;
  analogWrite(3, vitesse);
  digitalWrite(4,0);
  digitalWrite(5,1);
}
 
void loop() {
      Serial.print("Nombre impulsions = ");
      Serial.println(comptageImpulsion);
      delay(200);
}
 
void gestionINT0() {// la fonction appelée par l'interruption externe n°0
  comptageImpulsion++;
  if (comptageImpulsion >= distance) {
    digitalWrite(5,1);
    digitalWrite(4,1);
    delay(10);
    digitalWrite(5,0);
    digitalWrite(4,0);
    Serial.println("Arrêt");
  }
}