servo.ino

Arduino GIGA R1 WiFi · Fichier : servo.ino · Langage : Arduino · Usage : Piloter plusieurs servos indépendamment

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 Arduino GIGA R1 WiFi (STM32H747, module radio 1DX : Wi-Fi b/g/n + BLE, antenne u.FL fournie), alimentée par USB-C. 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, plateforme « Arduino Zephyr-based Boards », carte « Arduino Giga R1 » ; montez l'antenne u.FL avant d'utiliser le radio, puis Téléverser.

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

← Retour à la fiche