servo.ino

GD32F103 (GigaDevice) — chip + placas compatibles Blue Pill · Archivo : servo.ino · Lenguaje : Arduino · Uso : Faire balayer un servo avec un timer matériel

La librería Servo del core STM32F1 coloca cada objeto en un timer material libre: el servo recibe sus 50 Hz exactos sin que el código se ocupe. El tema real sigue siendo la alimentación separada del servo.

Hardware necesario

Una placa de desarrollo GD32F103C8T6 (Cortex-M3 a 108 MHz, compatible pin a pin con Blue Pill), alimentada a 3,3 V/5 V, con un adaptador ST-Link o serie. 1 servo SG90/MG90 + alimentación externa de 5 V.

Cableado

Señal en PC8, + a la alimentación externa, masas comunes. El GD32 es de 3,3 V: el servo tolera ese nivel de mando.

Funcionamiento

write(angle) convierte en impulso de 1-2 ms vía el timer que elige la librería; el núcleo ya no genera nada después. El periodo de 20 ms lo sostiene el hardware. Con Arduino: instale el core « STM32F1 » (Roger Clark, gestor de placas) y elija la placa « GD32F103C »; el LED de usuario es PC13 (activo en LOW). En C: biblioteca de firmware GD32F10x + ST-Link.

Para ir más lejos

Dos servos en dos timers para un brazo, o mando por la consola serie del puente 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);
}

← Volver a la ficha