servo_sweep.py
Un microservo tipo SG90 se controla con PWM de 50 Hz en GPIO18 (pin 12) con PWMOutputDevice de gpiozero: value=0 es 0 grados, value=1 es 180. El script barre continuamente. Ojo con la alimentación: modèle A sans Ethernet : alimentation 5 V/700 mA via l'OTG, hub USB alimenté pour les périphériques; alimente los servos aparte a partir de dos.
Hardware
Una Raspberry Pi Model A (BCM2835, conector GPIO de 26 pines, un solo puerto USB en modo OTG, sin Ethernet: prevé un hub USB alimentado). Un microservo SG90 (o similar), fuente externa de 5 V recomendada, cables dupont.
Cableado
Señal naranja/amarilla a GPIO18 (pin 12), marrón/rojo a 5 V, negro/amarillo a GND común con la placa.
Funcionamiento
PWMOutputDevice genera un tren de pulsos de 50 Hz, ancho 0,5–2,5 ms; el servo orienta su eje según el ancho.
Ejecución
Copia el script en la placa (scp o memoria USB) y ejecútalo con python3 (o bash). En Raspbian antiguo, gpiozero se instala con sudo apt install python3-gpiozero. Alimenta la placa con 5 V/700 mA mínimo por el puerto OTG.
Variantes
Servo(angle) de gpiozero para una API en grados; dos servos forman una plataforma XY. Alimente por el puerto OTG con 5 V/700 mA como mínimo; evite periféricos USB exigentes.
servo_sweep.py
# servo_sweep.py — balaie un micro-servo (SG90) de 0 a 180 degres.
# Deps: sudo apt install python3-gpiozero
from gpiozero import PWMOutputDevice
from time import sleep
servo = PWMOutputDevice(18, frequency=50, pulse_width=0.001)
print("Balayage servo, Ctrl+C pour sortir")
try:
while True:
for deg in range(0, 181, 15):
servo.value = deg / 180.0
sleep(0.05)
for deg in range(180, -1, -15):
servo.value = deg / 180.0
sleep(0.05)
except KeyboardInterrupt:
servo.off()
print("Arret")