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