Bras articulé qui salue
Un petit bras avec deux servos qui salue, pointe, ou suit la position d'un potentiomètre que tu tournes. Premier pas vers la robotique.
SunuMake Robotique
Donne vie à des machines qui bougent — 7 composants inclus.
Les étapes
- 1
Matériel
2 servomoteurs SG90, du carton rigide ou des bâtonnets pour fabriquer le bras, du scotch, 6 fils.
- 2
Fabrique le bras
Servo n°1 = épaule, fixé sur ta table. Sur sa palette, colle un premier bâtonnet (l'avant-bras). Au bout de ce bâtonnet, fixe le servo n°2 = coude. Sur la palette du servo n°2, colle un second bâtonnet (la main). Tu peux dessiner une main au bout pour le style.
- 3
Câble les deux servos
Servo n°1 (épaule) → signal sur broche 9. Servo n°2 (coude) → signal sur broche 10. Les VCC sur 5 V, les GND sur GND. ⚠️ Si tu vois la carte redémarrer pendant les mouvements, alimente les servos avec une pile externe (4 piles AA en série, 6 V, le − relié au GND Arduino).
- 4
Téléverse le code « salut auto »
Téléverse. Le bras lève l'épaule, agite la main 3 fois (salut !), puis baisse l'épaule. Toutes les 2 secondes, il recommence.
- 5
Variante : suit un potentiomètre
Branche un potentiomètre sur A0 (les 3 broches : 5 V, A0, GND). Remplace la routine `salut()` par une lecture continue : `epaule.write(map(analogRead(A0), 0, 1023, 0, 180));`. Tourne le potentiomètre — l'épaule suit ton geste en temps réel.
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).
// Bras articulé qui salue#include <Servo.h>Servo epaule; // broche 9Servo main; // broche 10void salut() { // Lève l'épaule progressivement for (int a = 0; a <= 90; a++) { epaule.write(a); delay(15); } // Agite la main 3 fois for (int i = 0; i < 3; i++) { main.write(45); delay(300); main.write(135); delay(300); } main.write(90); // main au repos // Baisse l'épaule for (int a = 90; a >= 0; a--) { epaule.write(a); delay(15); }}void setup() { epaule.attach(9); main.attach(10); epaule.write(0); main.write(90); delay(1000);}void loop() { salut(); delay(2000);}Comment ça marche ?
Chaque servomoteur correspond à un degré de liberté dans la mécanique : un pivot autour duquel une partie peut tourner. Un bras humain en a 7 (épaule × 3, coude × 1, poignet × 3) — notre robot en a 2, suffisant pour saluer.
La boucle for (int a = 0; a <= 90; a++) qui incrémente l'angle d'un degré toutes les 15 ms produit un mouvement fluide (≈ 60°/seconde). Si tu écrivais directement epaule.write(90), le servo irait à fond, brutalement — moins joli, moins humain.
Limite à connaître : delay() bloque tout le programme pendant le mouvement. Pour faire deux servos qui bougent en même temps de manière indépendante, il faut utiliser millis() à la place — sujet plus avancé qu'on verra dans les projets niveau Connecté.