servo.ino
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());
}