# --- Módulos ---
from machine import I2C, Pin
from time import sleep
from pico_i2c_lcd import I2cLcd
# --- Configuración I2C y LCD ---
def inicializar_lcd():
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400_000)
dispositivos = i2c.scan()
if not dispositivos:
raise Exception("No se detectó ningún dispositivo I2C. Verifica conexiones.")
lcd = I2cLcd(i2c, dispositivos[0], 2, 16)
lcd.clear()
return lcd
# --- Configuración Pines Motor y Botón ---
STEP = Pin(26, Pin.OUT)
DIR = Pin(22, Pin.OUT)
SWG = Pin(19, Pin.IN, Pin.PULL_DOWN) # Se recomienda activar PULL_DOWN para evitar falsos positivos
# --- Función para rotar motor ---
def rotar_motor():
sentido = SWG.value()
DIR.value(sentido) # 1: Horario, 0: Antihorario
STEP.on()
sleep(0.002) # Pulso de paso (ajusta según necesidad)
STEP.off()
sleep(0.002)
# --- Función principal ---
def main():
print("Inicializando...")
lcd = inicializar_lcd()
lcd.putstr("Inicializando...\nMotor PAP A4988")
sleep(2)
lcd.clear()
lcd.putstr("Control de Motor\nPAP con A4988")
print("Control de motor PAP con Raspberry Pi Pico")
try:
while True:
rotar_motor()
except KeyboardInterrupt:
lcd.clear()
lcd.putstr("Motor detenido")
print("Ejecución interrumpida.")
except Exception as e:
lcd.clear()
lcd.putstr("Error:\n" + str(e))
print("Error:", e)
# --- Punto de entrada ---
if __name__ == "__main__":
main()