servo-balayage.ino

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

El servo de ángulo barre lentamente de 0 a 180° y vuelve. La librería Servo del core de Arduino genera el pulso de control estándar (1 a 2 ms cada 20 ms) en cualquier pin compatible.

Hardware

Un Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. 1 servo de ángulo tipo SG90 (conector de 3 hilos: señal, +, -).

Cableado

Hilo naranja (señal) al pin 9, rojo (+) a 5V, marrón/negro (-) a GND. Para un servo grande, alimentar externamente con masa común.

Funcionamiento

myservo.write(angle) envía el pulso correspondiente al ángulo. El bucle incrementa el ángulo 1° cada 20 ms e invierte el sentido en los extremos.

Ejecución

En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.

Variantes

Controla el ángulo con un potenciómetro (map(analogRead(A0), 0, 1023, 0, 180)), o añade un arranque suave variando la velocidad de barrido.

servo-balayage.ino

// Balayage d'un servo d'angle (SG90, MG90S, etc.) avec la lib Servo.
#include <Servo.h>

Servo myservo;
int angle = 0;
int sens = 1;
const int PAUSE = 20; // ms entre deux degres

void setup() {
  myservo.attach(9);   // signal du servo sur la broche 9
  myservo.write(0);
  Serial.begin(9600);
  Serial.println(F("Balayage servo 0-180"));
}

void loop() {
  myservo.write(angle);
  Serial.println(angle);

  angle += sens;
  if (angle >= 180) sens = -1;
  if (angle <= 0) sens = 1;

  delay(PAUSE);
}

// Alimentation : un servo qui tire sur le 5V de la carte fait
// planer le micro (reset). Pour un gros servo, alimenter par une
// source externe 4,8-6V en reliant les masses (GND commun).
// La lib Servo occupe les timers 1 et 2 sur les AVR : attention
// aux conflits avec analogWrite() sur les broches 9/10.

← Volver a la ficha