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 Minima (Renesas RA4M1, Cortex-M4 @ 14 MHz, 5 V, DAC de 12 bits, sin radio) 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 » instalado), elige « Arduino UNO R4 Minima », selecciona el puerto y Subir. El monitor serie está a 9600.
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.