servo.ino

ESP32-S2 · Archivo : servo.ino · Lenguaje : Arduino · Uso : Faire balayer un servo d'angle

El estándar absoluto de la mecánica: un servo MG90/SG90 barre 0-180° pilotado por PWM de 50 Hz. En ESP32 la librería Servo usa LEDC, así que casi cualquier pin vale.

Hardware necesario

Una placa ESP32-S2 (núcleo único Xtensa, Wi-Fi, USB-OTG nativo en GPIO19/20, 14 pads táctiles capacitivos) tipo DevKitC-1 o QT Py, alimentada por USB. 1 servo de ángulo (SG90/MG90S) + alimentación de 5 V separada para más de un micro-servo.

Cableado

Señal en GPIO13, + a la alimentación externa, masas comunes con la placa. No alimente un servo medio desde la placa sola.

Funcionamiento

write(angle) convierte el ángulo en un impulso de 1 a 2 ms (periodo 20 ms) vía un canal LEDC. El paso de 5° cada 30 ms da un barrido fluido sin tirones mecánicos. En el Arduino IDE (paquete esp32), elija « ESP32S2 Dev Module »; el S2 se programa directamente por su USB nativo (doble reset en algunas placas para entrar al bootloader).

Para ir más lejos

Aservelo sobre un sensor de ultrasonidos (anticolisión), o pilotelo por BLE con el servicio del sketch dedicado.

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
}

← Volver a la ficha