servo-angle.ino
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).