from machine import Pin, I2C, PWM
from time import sleep
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd

# Definir pines de la pantalla I2C
I2C_ADDR = 0x27  # Dirección de la pantalla LCD, puede variar
I2C_SDA = Pin(0)  # Pin SDA del Pico
I2C_SCL = Pin(1)  # Pin SCL del Pico

# Inicializar el bus I2C
i2c = I2C(0, scl=I2C_SCL, sda=I2C_SDA, freq=400000)

# Inicializar la pantalla LCD
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)  # Pantalla 2x16

# Definir pines del servomotor
servo_pin = Pin(15)  # Pin del servo
servo = PWM(servo_pin)
servo.freq(50)  # Frecuencia para el servo

# Función para mover el servo a un ángulo dado
def set_angle(angle):
    duty = int((angle / 180) * 2000 + 500)  # Convertir ángulo a rango PWM (500-2500)
    servo.duty_u16(duty)

# Inicialización
lcd.putstr("Servo Angle: 0")
angle = 0
set_angle(angle)

while True:
    # Incrementar ángulo en 30 grados
    angle += 30
    if angle > 180:
        angle = 0
    
    # Mover servo y mostrar el ángulo en pantalla
    set_angle(angle)
    lcd.clear()
    lcd.putstr("Servo Angle: {}".format(angle))
    
    sleep(2)  # Esperar 2 segundos entre movimientos
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT