🛠 Piloter un micro-servo moteur

Arduino Nano (Classic, ATmega328P) · intermediaire · Schéma : IMG-nano-classic-intermediaire-5-nanoc-servo.svg — micro-servo SG90 alimenté en 5 V, signal sur broche 9 de l'Arduino Nano, balayage 0-180 degrés

Objectifs

Commander un micro-servo (type SG90) avec la bibliothèque Servo : le servo attend une trame de 20 ms dont l'impulsion de 1 à 2 ms définit l'angle. On programme un balayage 0-180° et on aborde la bonne alimentation (le 5 V du Nano suffit pour UN petit servo, jamais pour plusieurs).

Matériel

Code complet

// Balayage servo 0-180 degres sur la broche 9
#include <Servo.h>

Servo myservo;
uint8_t angle = 0;
bool sens = true;

void setup {
  myservo.attach(9);        // signal sur broche 9
  myservo.write(0);
  Serial.begin(9600);
}

void loop {
  angle += sens ? 5 : -5;   // pas de 5 degres
  if (angle >= 180) sens = false;
  if (angle <= 0)   sens = true;
  myservo.write(angle);     // 0..180
  Serial.println(angle);
  delay(50);                // vitesse du balayage
}

Vérification attendue

Le bras du servo balaie régulièrement de 0° à 180° et revient, en douceur, sans jitter excessif ni bourdonnement permanent. Le moniteur série affiche la consigne d'angle croissante puis décroissante. À l'arrêt sur une position, le servo tient son couple sans trembler en boucle.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels