double-servo.ino
La bibliothèque Servo gère jusqu'à 12 servo sur Mega via le timer 1 : ici une tête panoramique et une inclinaison qui se déplacent à des amplitudes différentes. Chaque servo sur son alimentation 5 V propre évite les brown-outs.
Matériel requis
Une Arduino Mega 2560 (ATmega2560, 16 MHz, 5 V) : 54 E/S numériques, 15 PWM, 16 entrées analogiques, 4 UART matériels. 2 servos (SG90) + alimentation 5 V externe.
Branchement
Signaux sur 9 et 10, +5 V et GND en parallèle avec la carte (masses communes).
Fonctionnement
Deux machines d'état indépendantes balaient chacune entre leurs bornes ; le timer 1 de l'ATmega2560 génère les impulsions sans bloquer loop(). Dans l'Arduino IDE, choisissez « Arduino Mega 2560 » et le port, puis Téléverser. PWM sur 2-13 et 44-46 ; UART1=18/19, UART2=16/17, UART3=14/15 ; SPI sur 50-53.
Pour aller plus loin
Ajoutez un joystick (2 potentiomètres sur A0/A1) pour un pilotage manuel de la tête.
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);
}