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
Un Arduino GIGA R1 WiFi (STM32H747, módulo radio 1DX: Wi-Fi b/g/n + BLE, antena u.FL incluida), alimentado por USB-C. 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, plataforma « Arduino Zephyr-based Boards », placa « Arduino Giga R1 »; monte la antena u.FL antes de usar la radio y suba.
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());
}