servo-angle.ino

Arduino Portenta H7 · Archivo : servo-angle.ino · Lenguaje : Arduino · Uso : Piloter un servo avec la bibliothèque Servo sur Portenta

La librería Servo del core Mbed genera el impulso de 50 Hz en hardware sobre los temporizadores del H7. Un barrido 0-180° completo valida la cadena antes de montarla en un brazo robótico gobernado por RPC.

Hardware

Un Arduino Portenta H7 (módulo ST STM32H747 doble núcleo Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 MB SDRAM, conector high-density), alimentado por USB-C o 5 V. 1 servo de ángulo (SG90/MG90S) + alimentación externa de 5 V.

Cableado

Señal a D13 (ver esquema de la carrier), + a 5 V externo, masas comunes. El 5 V de la placa no debe alimentar varios servos.

Funcionamiento

myservo.write(angle) convierte el ángulo en ancho de impulso gestionado por el temporizador; el bucle de barrido corre a 50 pasos/s.

Ejecución

Arduino IDE con el core « Arduino Mbed OS Portenta Boards »: elige « Portenta H7 » (núcleo M7), el puerto USB-C y Subir. El selector M7/M4 del modo DFU permite cargar también el núcleo M4.

Variantes

Gobernar el ángulo desde el M4 o el Linux de una X8, o encadenar una secuencia de posiciones guardada en flash.

servo-angle.ino

// Balayage servo sur D13 avec la lib Servo du core Mbed.
#include <Servo.h>

Servo myservo;
int angle = 0, sens = 1;
unsigned long t0 = 0;

void setup() {
  myservo.attach(13);
  myservo.write(0);
  Serial.begin(9600);
}

void loop() {
  if (millis() - t0 < 20) return;
  t0 = millis();

  myservo.write(angle);
  angle += sens;
  if (angle >= 180) sens = -1;
  if (angle <= 0) sens = 1;
}

// Le core Portenta implemente Servo sur les timers Mbed :
// la frequence du signal reste a 50 Hz quelle que soit la
// frequence du CPU (avantage sur un emulation par delay).

← Volver a la ficha