double-servo.ino
La biblioteca Servo gestiona hasta 12 servos en el Mega vía timer 1: aquí una cabeza panorámica y una inclinación que barren con amplitudes distintas. Cada servo con su 5 V propio evita reinicios.
Hardware necesario
Un Arduino Mega 2560 (ATmega2560, 16 MHz, 5 V): 54 E/S digitales, 15 PWM, 16 entradas analógicas, 4 UART por hardware. 2 servos (SG90) + alimentación externa de 5 V.
Cableado
Señales a 9 y 10, +5 V y GND en paralelo con la placa (masas comunes).
Funcionamiento
Dos máquinas de estado independientes barren dentro de sus límites; el timer 1 del ATmega2560 genera los pulsos sin bloquear loop(). En el Arduino IDE, elija « Arduino Mega 2560 » y el puerto, y suba. PWM en 2-13 y 44-46; UART1=18/19, UART2=16/17, UART3=14/15; SPI en 50-53.
Para ir más lejos
Añada un joystick (2 potenciómetros en A0/A1) para control manual de la cabeza.
double-servo.ino
// Deux servos independants : panoramique + inclinaison.
#include <Servo.h>
Servo tete, cou;
int a = 0, b = 90;
int sa = 3, sb = 2;
void setup() {
tete.attach(9); // panoramique
cou.attach(10); // inclinaison
Serial.begin(9600);
}
void loop() {
tete.write(a);
cou.write(b);
a += sa; b += sb;
if (a <= 0 || a >= 170) sa = -sa;
if (b <= 45 || b >= 135) sb = -sb;
delay(30);
}