servo.ino
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-S2 (simple cœur Xtensa, Wi-Fi, USB-OTG natif sur GPIO19/20, 14 touches capacitives) type DevKitC-1 ou QT Py, alimentée par USB. 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 « ESP32S2 Dev Module » ; le S2 se flashe directement par son USB natif (double reset sur certaines cartes pour entrer en bootloader).
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
}