servo.py

LattePanda 3 Delta (id: lattepanda-3) · Archivo : servo.py · Lenguaje : Python · Uso : Piloter un servo depuis le PC

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)

← Volver a la ficha