servo-balayage.ino
La librería Servo del core del UNO R4 controla servos estándar (impulso 1-2 ms a 50 Hz) sin las restricciones de temporizadores de los AVR. Un barrido completo 0-180° sirve de banco de pruebas antes de integrarlo en un mecanismo.
Hardware
Un Arduino UNO R4 WiFi (Renesas RA4M1 @ 14 MHz + ESP32-S3 Wi-Fi/BLE compañero, matriz LED 12x8, LED RGB) alimentado por USB o 6-24 V. 1 servo de ángulo (SG90/MG90S); alimentación externa de 5 V para los modelos grandes.
Cableado
Señal (naranja) a D9, + (rojo) a 5 V, - (marrón) a GND común.
Funcionamiento
myservo.write(angle) envía el impulso de posición; el bucle incrementa el ángulo 1° cada 20 ms e invierte el sentido en los topes.
Ejecución
Arduino IDE 2.x con el core « Arduino UNO R4 Boards », placa « Arduino UNO R4 WiFi », puerto serie y Subir. El coprocesador ESP32-S3 se actualiza aparte si el IDE lo pide.
Variantes
Añadir un potenciómetro en A1 para el seguimiento de ángulo, o mostrar el ángulo en la matriz LED (R4 WiFi).
servo-balayage.ino
// Balayage servo avec la bibliotheque Servo (portage RA4M1).
#include <Servo.h>
Servo myservo;
int angle = 0, sens = 1;
void setup() {
myservo.attach(9);
myservo.write(0);
Serial.begin(9600);
}
void loop() {
myservo.write(angle);
static unsigned long t0 = 0;
if (millis() - t0 < 20) return;
t0 = millis();
angle += sens;
if (angle >= 180) sens = -1;
if (angle <= 0) sens = 1;
}
// Sur R4, la lib Servo utilise les timers du RA4M1 sans
// entrer en conflit avec analogWrite() comme sur les AVR.
// Alimentation externe conseillee au-dela du micro-servo.