🛠 Piloter un micro-servo avec la bibliothèque Servo

Arduino Nano Every · intermediaire · Schéma : IMG-nano-every-intermediaire-2-nanoevery-servo.svg — Micro-servo de type SG90 alimenté par le 5 V de la Nano Every, signal sur la broche 9, avec les trois fils couleur (signal, VCC, GND) et un bras d'angle annoté

Objectifs

Commander un micro-servo (type SG90) en position avec la bibliothèque Servo, en balayant quelques angles prédéfinis. Rappel important sur le Nano Every : le PWM est sur 3, 5, 6, 9, 10 — on prend la broche 9. Le cœur megaAVR rempile les timers, donc les bibliothèques qui détournent un timer (anciens pilotes servo ou encodeurs RF bit-bang) peuvent nécessiter une version à jour.

Matériel

Code complet

// Balayage de positions sur servo, broche 9 (broche PWM valide)
#include <Servo.h>

Servo myservo;
const uint8_t BROCHE_SERVO = 9;
const uint8_t positions[] = {0, 45, 90, 135, 180};
uint8_t index = 0;
uint32_t tPrecedente = 0;

void setup {
  myservo.attach(BROCHE_SERVO);   // impulsions 1 a 2 ms
  Serial.begin(9600);
  Serial.println(F("Servo pret"));
}

void loop {
  if (millis - tPrecedente >= 1000) {
    tPrecedente = millis;
    myservo.write(positions[index]);
    Serial.print(F("angle="));
    Serial.println(positions[index]);
    index = (index + 1) % (sizeof(positions) / sizeof(positions[0]));
  }
}

Vérification attendue

Le bras du servo se déplace chaque seconde vers 0°, 45°, 90°, 135°, 180°, puis recommence. Le moniteur série affiche l'angle courant. En fin de course, le servo grogne légèrement (consigne hors plage) : c'est normal avec write aux bornes.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels