servo.ino

ESP8266 (módulo ESP-12E) · Archivo : servo.ino · Lenguaje : Arduino · Uso : Faire bouger un servo d'angle

La librería Servo del paquete esp8266 genera el impulso de 50 Hz por interrupción: el Wi-Fi sigue corriendo mientras el servo barre. El tema real es la alimentación separada, no el código.

Hardware necesario

Un módulo ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) montado en una placa NodeMCU / Wemos D1 mini, alimentada por micro-USB. 1 servo SG90 + alimentación externa de 5 V (2 pilas AA o regulador dedicado).

Cableado

Señal en D1, + a la alimentación externa, GND unido a la placa. Un servo que tira del 3,3 V/USB hace reiniciar el módulo en bucle.

Funcionamiento

write(angle) coloca el impulso entre 1 y 2 ms; el puerto ESP8266 usa el timer 1 por interrupción, de ahí la coexistencia con Wi-Fi (a costa de micro-jitters de radio). En el Arduino IDE, instale el paquete « esp8266 », elija « NodeMCU 1.0 (ESP-12E Module) » y suba (mantenga GPIO0 a LOW si falla). El ADC A0 lee 0-1 V (divisor NodeMCU: 0-3,3 V).

Para ir más lejos

Pilotar el ángulo desde el servidor web del sketch dedicado, o aservar con un sensor ultrasónico de distancia.

servo.ino

// Servo SG90 sur D1 (GPIO5) — bibliotheque Servo (port ESP8266).
// Alimenter le servo par une source 5 V EXTERNE, masses communes.
#include <Servo.h>

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

void setup() {
  Serial.begin(115200);
  servo.attach(5);            // D1
  Serial.println("Balayage 0-180 (le 8266 reste dispo pour le Wi-Fi)");
}

void loop() {
  angle += pas;
  if (angle >= 180 || angle <= 0) pas = -pas;
  servo.write(angle);
  if (angle % 35 == 0) Serial.printf("%d degres\n", angle);
  delay(25);
}

← Volver a la ficha