Voiture pilotée par boutons
Quatre boutons (avant, arrière, gauche, droite) sur une télécommande maison. Tu pilotes une petite voiture qui obéit. Aucune carte spéciale, juste tes boutons.
SunuMake Robotique
Donne vie à des machines qui bougent — 7 composants inclus.
Les étapes
- 1
Matériel
2 moteurs DC avec roues, 1 châssis robot 2 roues + roue folle, 1 driver moteur L298N, 4 boutons poussoirs, 1 pile 9 V avec connecteur, beaucoup de fils, du scotch double-face.
- 2
Monte le châssis
Assemble le châssis, fixe les 2 moteurs sur les côtés, ajoute la roue folle à l'avant ou à l'arrière, monte les roues. Pose l'Arduino et le L298N sur le châssis avec du scotch double-face.
- 3
Câble le L298N — côté commande
IN1 → broche 4, IN2 → broche 5 (ces deux contrôlent le moteur gauche). IN3 → broche 6, IN4 → broche 7 (moteur droit). ENA et ENB → 5 V (vitesse fixe au max — laisse les cavaliers en place sur le module).
- 4
Câble le L298N — côté puissance
Pile 9 V (+) → borne « 12 V » du L298N. Pile (−) → borne GND du L298N. Relie aussi le GND du L298N au GND de l'Arduino (très important — sinon le signal ne passe pas). Les 2 fils de chaque moteur vont aux borniers OUT1/OUT2 (gauche) et OUT3/OUT4 (droite).
- 5
Câble la télécommande filaire
Sur une seconde breadboard (ou sur la même si elle est grande) : 4 boutons. Un côté de chaque bouton va à GND. L'autre côté va aux broches Arduino : 8 (avant), 9 (arrière), 10 (gauche), 11 (droite). On utilise `INPUT_PULLUP` dans le code.
- 6
Téléverse et roule
Téléverse, branche la pile, et appuie sur les boutons. Si une roue tourne dans le mauvais sens, inverse simplement les 2 fils de cette roue sur le bornier du L298N (OUT1↔OUT2 ou OUT3↔OUT4) — pas besoin de toucher au code.
Le programme à téléverser
Copie ce code dans l'IDE Arduino, branche ta carte en USB et clique sur le bouton « Téléverser » (la flèche en haut à gauche).
// Voiture pilotée par boutons// Moteurs via L298N — gauche=IN1/IN2 (4,5), droit=IN3/IN4 (6,7)// Boutons : avant=8, arrière=9, gauche=10, droite=11const int M1A = 4, M1B = 5; // moteur gaucheconst int M2A = 6, M2B = 7; // moteur droitconst int B_AV = 8, B_AR = 9, B_G = 10, B_D = 11;void avancer() { digitalWrite(M1A, HIGH); digitalWrite(M1B, LOW); digitalWrite(M2A, HIGH); digitalWrite(M2B, LOW);}void reculer() { digitalWrite(M1A, LOW); digitalWrite(M1B, HIGH); digitalWrite(M2A, LOW); digitalWrite(M2B, HIGH);}void tournerGauche() { // moteur gauche recule, droit avance → la voiture pivote digitalWrite(M1A, LOW); digitalWrite(M1B, HIGH); digitalWrite(M2A, HIGH); digitalWrite(M2B, LOW);}void tournerDroite() { digitalWrite(M1A, HIGH); digitalWrite(M1B, LOW); digitalWrite(M2A, LOW); digitalWrite(M2B, HIGH);}void stop() { digitalWrite(M1A, LOW); digitalWrite(M1B, LOW); digitalWrite(M2A, LOW); digitalWrite(M2B, LOW);}void setup() { pinMode(M1A, OUTPUT); pinMode(M1B, OUTPUT); pinMode(M2A, OUTPUT); pinMode(M2B, OUTPUT); pinMode(B_AV, INPUT_PULLUP); pinMode(B_AR, INPUT_PULLUP); pinMode(B_G, INPUT_PULLUP); pinMode(B_D, INPUT_PULLUP); stop();}void loop() { if (digitalRead(B_AV) == LOW) avancer(); else if (digitalRead(B_AR) == LOW) reculer(); else if (digitalRead(B_G) == LOW) tournerGauche(); else if (digitalRead(B_D) == LOW) tournerDroite(); else stop();}Comment ça marche ?
Le L298N est un pont en H : un circuit qui peut inverser le sens du courant dans un moteur, et donc inverser son sens de rotation. Avec IN1=HIGH et IN2=LOW, le moteur tourne dans un sens. Inverse les deux, il tourne dans l'autre sens. Mets-les tous les deux à LOW, le moteur s'arrête.
Pourquoi une alimentation séparée pour les moteurs ? L'Arduino ne peut pas fournir plus de quelques centaines de mA — pas assez pour faire tourner deux moteurs DC (qui consomment 500 mA à 1 A chacun). On utilise la pile 9 V uniquement pour la puissance motrice, et l'Arduino reste alimenté en USB ou via sa propre source.
Pourquoi le GND commun ? L'Arduino envoie un signal logique (HIGH = 5 V, LOW = 0 V) sur IN1, IN2, IN3, IN4. Le L298N doit avoir la même référence « zéro volt » que l'Arduino pour comprendre ces signaux — c'est ça, relier les deux GND ensemble.