double-servo.ino

Arduino Mega 2560 (Rev3) · Fichier : double-servo.ino · Langage : Arduino · Usage : Piloter deux servo-moteurs simultanément (tête de robot)

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);
}

← Retour à la fiche