double-servo.ino

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

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

← Volver a la ficha