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-C6 (RISC-V 160 MHz, Wi-Fi 6 + BLE 5 + 802.15.4) type DevKitC-1, 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 récent), choisissez « ESP32C6 Dev Module » puis Téléverser ; pour Zigbee/Thread utilisez ESP-IDF (idf.py set-target esp32c6).
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
}