from machine import Pin, ADC, Timer
import time
// Sensores LDR
ldr_left = ADC(26) # GP26 - ADC0
ldr_right = ADC(27) # GP27 - ADC1
# ---- Pines A4988 Motor Izquierdo ----
stepL = Pin(14, Pin.OUT)
dirL = Pin(15, Pin.OUT)
# ---- Pines A4988 Motor Derecho ----
stepR = Pin(16, Pin.OUT)
dirR = Pin(17, Pin.OUT)
# ---- Configuración dirección fija (ambos hacia adelante) ----
dirL.value(1)
dirR.value(1)
# ---- Parámetros ----
threshold = 30000 # Valor medio para diferenciar blanco/negro (ajustar en prueba)
base_speed = 0.001 # Velocidad base del motor (menor = más rápido)
turn_factor = 0.003 # Ajuste extra para girar
# ---- Funciones para motores ----
def step_motor(pin, delay):
pin.value(1)
time.sleep(delay)
pin.value(0)
time.sleep(delay)
def forward_left(speed):
step_motor(stepL, speed)
def forward_right(speed):
step_motor(stepR, speed)
# ---- Bucle principal ----
while True:
left_val = ldr_left.read_u16()
right_val = ldr_right.read_u16()
print("Left:", left_val, "Right:", right_val)
# Condiciones para seguir linea
if left_val < threshold and right_val < threshold:
# negro negro = avanzar recto
speedL = base_speed
speedR = base_speed
elif left_val < threshold and right_val > threshold:
# negro - blanco = girar izquierda
speedL = base_speed + turn_factor
speedR = base_speed
elif left_val > threshold and right_val < threshold:
# blanco - negro = girar derecha
speedL = base_speed
speedR = base_speed + turn_factor
else:
# blanco blanco = detener o buscar linea (aquí busco línea girando suave)
speedL = base_speed + turn_factor
speedR = base_speed + turn_factor
# Ejecutar pasos para cada motor
forward_left(speedL)
forward_right(speedR)