Project

General

Profile

servomotor.py

ServoMotor - Ignacio Garrido, 12/11/2024 12:28 AM

Download (1.55 KB)

 
1
import RPi.GPIO as GPIO
2
import time
3

    
4
# Configuración del GPIO
5
GPIO.setmode(GPIO.BCM)  # Usar la numeración BCM
6
GPIO.setup(9, GPIO.OUT)  # Configurar GPIO 9 como salida (ajustar el pin si es necesario)
7

    
8
# Configurar PWM en el pin 9 con una frecuencia de 50 Hz
9
pwm = GPIO.PWM(9, 50)
10
pwm.start(0)  # Iniciar PWM con ciclo de trabajo 0%
11

    
12
def set_angle(angle):
13
    """Configura el ángulo del servo (0 a 180 grados)."""
14
    duty_cycle = 2 + (angle / 18)  # Mapear ángulo a ciclo de trabajo
15
    pwm.ChangeDutyCycle(duty_cycle)  # Cambiar ciclo de trabajo para ajustar el ángulo
16
    time.sleep(0.5)  # Espera para que el servo se mueva
17

    
18
def rotate_servo():
19
    """Gira el servomotor durante 4 segundos y luego lo detiene."""
20
    start_time = time.time()  # Registrar el tiempo de inicio
21
    while time.time() - start_time < 4:  # Hacerlo durante 4 segundos
22
        # Movimiento de ida y vuelta (0 a 180 y luego 180 a 0)
23
        for angle in range(0, 181):  # Mover el servo de 0 a 180 grados
24
            set_angle(angle)
25
            if time.time() - start_time >= 4:
26
                return  # Si han pasado 4 segundos, detener el servo
27
        for angle in range(180, -1, -1):  # Mover el servo de 180 a 0 grados
28
            set_angle(angle)
29
            if time.time() - start_time >= 4:
30
                return  # Si han pasado 4 segundos, detener el servo
31

    
32
# Iniciar el movimiento del servo
33
try:
34
    rotate_servo()  # Girar el servo durante 4 segundos
35
finally:
36
    pwm.stop()  # Detener el PWM
37
    GPIO.cleanup()  # Limpiar la configuración de los GPIO