SunuLab
Notre savoir
Tous les projets
Intermédiaire75 minKit Robotique

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.

Vidéo du tutoriel — à venir
Voiture pilotée par boutons
Tu auras besoin du

SunuMake Robotique

Donne vie à des machines qui bougent7 composants inclus.

25 000 FCFAVoir le kit
Pas à pas

Les étapes

  1. 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. 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. 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. 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. 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. 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.

Code Arduino

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).

sketch.ino
// 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=11
const int M1A = 4, M1B = 5; // moteur gauche
const int M2A = 6, M2B = 7; // moteur droit
const 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();
}
Mini-cours

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.

Continuer

D'autres projets à essayer