servo.ino

ESP32-C3 · Fichier : servo.ino · Langage : Arduino · Usage : Faire balayer un servo d'angle

Le standard absolu de la mécanique : un servo MG90/SG90 balaie 0-180° piloté en PWM 50 Hz. Sur ESP32, la bibliothèque Servo s'appuie sur LEDC, donc presque n'importe quelle broche convient.

Matériel requis

Une carte ESP32-C3 (RISC-V 160 MHz, Wi-Fi + BLE 5) type DevKitM-1 ou SuperMini, alimentée par USB (native sur C3). 1 servo d'angle (SG90/MG90S) + alimentation 5 V séparée pour plus d'un micro-servo.

Branchement

Signal sur GPIO13, + sur l'alimentation externe, masses communes avec la carte. Ne pas alimenter un servo moyen depuis la carte seule.

Fonctionnement

write(angle) convertit l'angle en impulsion de 1 à 2 ms (période 20 ms) via un canal LEDC. Le pas de 5° toutes les 30 ms donne un balayage fluide sans à-coups sur la mécanique. Dans l'Arduino IDE (paquet esp32), choisissez « ESP32C3 Dev Module », activez « USB CDC On Boot » si besoin, puis Téléverser. GPIO9 sert souvent de bouton BOOT ; GPIO8 doit rester libre au boot.

Pour aller plus loin

Asservir l'angle sur un capteur ultrason (anti-collision), ou piloter par BLE avec le service du sketch dédié.

servo.ino

// Servo d'angle sur GPIO13 — bibliotheque Servo (impl. LEDC du paquet esp32).
#include <Servo.h>

Servo servo;
int angle = 0;
int pas = 5;

void setup() {
  Serial.begin(115200);
  servo.attach(13);           // n'importe quel GPIO PWM-safe
  Serial.println("Balayage 0-180 degres");
}

void loop() {
  angle += pas;
  if (angle >= 180 || angle <= 0) pas = -pas;
  servo.write(angle);
  if (angle % 45 == 0) Serial.printf("%d degres\n", angle);
  delay(30);                  // vitesse de balayage raisonnable
}

← Retour à la fiche