servo.py
El servo en el conector obedece a una función Python: la librería traduce el ángulo a PWM de 50 Hz en el timer del 32U4. El PC añade lo que Arduino no sabe: cámara, IA, base de datos.
Hardware necesario
Una LattePanda 3 Delta (x86 Intel N5105, Windows 10/11 o Ubuntu) con su coprocesador Arduino compatible (ATmega32U4) conectado a los dos conectores de 50 pines. 1 servo SG90 + alimentación externa de 5 V (nunca el 5 V del conector para más de un micro-servo).
Cableado
Señal en D9 del conector de 50 pines, + a la alimentación externa, masas comunes (GND del conector unido al de la alimentación).
Funcionamiento
Pin.PWM_OCR configura el timer material del MCU; la función angle convierte grados → ciclo de trabajo. El puente serie añade ~1 ms, invisible para la mecánica. Lado anfitrión: pip install pinpong y python3. Lado MCU: el ATmega32U4 aparece como puerto COM — prográmelo con el Arduino IDE (placa « Arduino Leonardo »).
Para ir más lejos
Apuntado servido por detección de rostro OpenCV (el verdadero interés del dúo x86+MCU).
servo.py
#!/usr/bin/env python3
# Servo d'angle sur D9 — PinPong commande le PWM du 32U4.
from pinpong.board import Board, Pin
from pinpong.libs.adc_stepper import * # modules PWM/servo inclus
import time
Board().begin()
servo = Pin(Pin.D9, Pin.PWM_OCR)
def angle(degres): # 0..180 -> duty 2,5..12,5 %
duty = 25 + int(degres * 100 / 180) # base 1000 = 100 %
servo.write_analog(duty * 21) # 10 bits : 0..1023
print("Balayage 0-180-0")
for a in list(range(0, 181, 10)) + list(range(180, -1, -10)):
angle(a)
print(f"{a} degres")
time.sleep(0.08)