servo.ino
Deux servos en quadrature dessinent un mouvement de chenille : la bibliothèque Servo du core GIGA gère plusieurs timers sans conflit. La base d'un bras, d'un pont roulant ou d'un rover.
Matériel requis
Une carte Arduino Giga R1 (STM32H747 double cœur M7 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentée par USB-C ou 5-24 V. 2 servos SG90 + alimentation 5 V externe ≥ 1 A.
Branchement
Signaux sur D5 et D6, + sur l'alimentation externe, masses communes avec la GIGA. Jamais de servos sur le 5 V de la carte.
Fonctionnement
Chaque objet Servo réserve son canal timer ; write() place l'impulsion. Le pas de 20 ms (50 Hz de mise à jour) suffit largement à la mécanique. Dans l'Arduino IDE, installez la plateforme « Arduino Zephyr-based Boards » (ou Mbed), choisissez « Arduino Giga R1 », puis Téléverser. Logique 3,3 V.
Pour aller plus loin
Quatre servos pour un mini-bras, ou position mémorisée en EEPROM à chaque extinction.
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());
}