servo-balayage.ino

Arduino UNO R4 Minima · Archivo : servo-balayage.ino · Lenguaje : Arduino · Uso : Faire balayer un servo-moteur de 0 à 180 degrés

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.

← Volver a la ficha