servo.ino

GD32F103 (GigaDevice) — puce + cartes compatibles Blue Pill · Fichier : servo.ino · Langage : Arduino · Usage : Faire balayer un servo avec un timer matériel

La bibliothèque Servo du core STM32F1 place chaque objet sur un timer matériel libre : le servo reçoit son 50 Hz exact sans que le code s'en occupe. Le vrai sujet reste l'alimentation séparée du servo.

Matériel requis

Une carte de développement GD32F103C8T6 (Cortex-M3 108 MHz, compatible broche à broche Blue Pill), alimentée en 3,3 V/5 V, avec un adaptateur ST-Link ou série. 1 servo SG90/MG90 + alimentation 5 V externe.

Branchement

Signal sur PC8, + sur l'alimentation externe, masses communes. Le GD32 est en 3,3 V : le servo tolère ce niveau de commande.

Fonctionnement

write(angle) convertit en impulsion 1-2 ms via le timer choisi par la bibliothèque ; le cœur ne génère plus rien ensuite. La période 20 ms est tenue par le matériel. Avec Arduino : installez le core « STM32F1 » (Roger Clark, gestionnaire de cartes) et choisissez la carte « GD32F103C » ; le LED utilisateur est PC13 (actif à LOW). En C : bibliothèque GD32F10x + ST-Link.

Pour aller plus loin

Deux servos sur deux timers pour un bras, ou commande par la console série du pont UART.

servo.ino

// Servo sur PC8 (timer attribue par la bibliotheque).
#include <Servo.h>

Servo servo;
int angle = 0;
int pas = 5;

void setup() {
  Serial.begin(115200);
  servo.attach(PC8);          // n'importe quelle broche avec timer
  Serial.println("Balayage 0-180");
}

void loop() {
  angle += pas;
  if (angle >= 180 || angle <= 0) pas = -pas;
  servo.write(angle);
  delay(30);
}

← Retour à la fiche