~~NOTOC~~ =======Moteur équipé d'un encodeur optique======= {{ :moteur-encodeur-180.jpg?200|}} =====Spécifications===== * [[https://education.makeblock.com/help/cyberpi-series-180-optical-encoder-motor/|]] Brochage (détrompeur à droite) * M- * M+ * GND * VCC * INT * DIR 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 [[drv298|L298N]] 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"); } }