Alimentation
Il est conseillé de séparer les alimentations d’Arduino et des moteurs.
On placera donc les jumpers d’alimentation sur PWRIN.
E1, M1, E2, M2
Commande | Pin Arduino | Siginification |
M1 | 4 | Contrôle du sens de rotation |
E1 | 5 | Contrôle de la vitesse de rotation |
M2 | 7 | Contrôle du sens de rotation |
E2 | 6 | Contrôle de la vitesse de rotation |
PWM ou PLL
La tension de commande des moteurs se fera en PWM.
On placera donc les jumpers en conséquence.
Exemple de code basique
////////////////////////////////////////// // Branchements ////////////////////////////////////////// //Moteur A int E1 = 5; // Vitesse (PWM) int M1 = 4; // Direction //Motor B int E2 = 6; // Vitesse (PWM) int M2 = 7; // Direction ////////////////////////////////////////// // Constantes ////////////////////////////////////////// const int MOTEUR_A=0; const int MOTEUR_B=1; const int AVANT=0; const int ARRIERE=1; ////////////////////////////////////////// // Setup ////////////////////////////////////////// void setup() { pinMode(E1, OUTPUT); pinMode(M1, OUTPUT); pinMode(E2, OUTPUT); pinMode(M2, OUTPUT); } ////////////////////////////////////////// // Loop ////////////////////////////////////////// void loop(){ activer(MOTEUR_A, AVANT, 128); activer(MOTEUR_B, AVANT, 128); delay(3000); arreter_tout(); delay(1000); activer(MOTEUR_A, ARRIERE, 128); activer(MOTEUR_B, ARRIERE, 128); delay(3000); arreter_tout(); delay(1000); activer(MOTEUR_A, AVANT, 128); arreter(MOTEUR_B); delay(3000); arreter_tout(); delay(1000); arreter(MOTEUR_A); activer(MOTEUR_B, AVANT, 128); delay(3000); arreter_tout(); delay(1000); } ////////////////////////////////////////// // Fonction activer ////////////////////////////////////////// void activer(int moteur, int sens, int vitesse) // moteur : MOTEUR_A ou MOTEUR_B // sens : AVANT ou ARRIERE // vitesse : entre 0 et 255 { switch (moteur) { case MOTEUR_A : if (sens==AVANT) { digitalWrite(M1, HIGH); analogWrite(E1, vitesse); } else { digitalWrite(M1, LOW); analogWrite(E1, vitesse); } break; case MOTEUR_B : if (sens==AVANT) { digitalWrite(M2, HIGH); analogWrite(E2, vitesse); } else { digitalWrite(M2, LOW); analogWrite(E2, vitesse); } break; } } ////////////////////////////////////////// // Fonction arreter_tout ////////////////////////////////////////// void arreter_tout() { analogWrite(E1, 0); analogWrite(E2, 0); } ////////////////////////////////////////// // Fonction arreter ////////////////////////////////////////// void arreter(int moteur) { switch (moteur) { case MOTEUR_A : analogWrite(E1, 0); case MOTEUR_B : analogWrite(E2, 0); } }