servo.ino

Arduino GIGA R1 · Archivo : servo.ino · Lenguaje : Arduino · Uso : Piloter plusieurs servos indépendamment

Dos servos en cuadratura dibujan un movimiento de oruga: la librería Servo del core GIGA gestiona varios timers sin conflicto. La base de un brazo, pórtico o rover.

Hardware necesario

Una placa Arduino Giga R1 (STM32H747 doble núcleo M7 a 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentada por USB-C o 5-24 V. 2 servos SG90 + alimentación externa de 5 V ≥ 1 A.

Cableado

Señales en D5 y D6, + a la alimentación externa, masas comunes con la GIGA. Nunca servos en el 5 V de la placa.

Funcionamiento

Cada objeto Servo reserva su canal de timer; write() coloca el impulso. El paso de 20 ms (actualización 50 Hz) sobra para la mecánica. En el Arduino IDE, instale la plataforma « Arduino Zephyr-based Boards » (o Mbed), elija « Arduino Giga R1 » y suba. Lógica de 3,3 V.

Para ir más lejos

Cuatro servos para un minibrazo, o posición memorizada en EEPROM en cada apagado.

servo.ino

// Deux servos sur D5/D6 — la bibliotheque Servo du core GIGA.
#include <Servo.h>

Servo gauche, droit;
unsigned long precedent = 0;
int phase = 0;

void setup() {
  gauche.attach(D5);
  droit.attach(D6);
  Serial.begin(115200);
}

void loop() {
  if (millis() - precedent < 20) return;
  precedent = millis();
  phase = (phase + 2) % 360;
  float rad = phase * PI / 180.0f;
  gauche.write(90 + (int)(60 * sinf(rad)));         // 30..150 degres
  droit.write(90 + (int)(60 * cosf(rad)));          // en quadrature
  if (phase % 90 == 0)
    Serial.printf("G=%d D=%d\n", gauche.read(), droit.read());
}

← Volver a la ficha