Circuito Seguidor de Línea
Cpp
// Pines de conexión const int sensorPin = A0; // Entrada analógica del TCRT5000 // Pines para el control del motor izquierdo const int leftMotorIn1 = 4; // Controla dirección const int leftMotorIn2 = 5; const int enA = 3; // Habilita y controla velocidad (PWM) // Pines para el control del motor derecho const int rightMotorIn1 = 7; // Controla dirección const int rightMotorIn2 = 8; const int enB = 6; // Habilita y controla velocidad (PWM) // Umbral para detectar la línea (ajusta según sea necesario) const int threshold = 500; void setup() { // Configuración de pines de sensor pinMode(sensorPin, INPUT); // Configuración de pines para motores pinMode(leftMotorIn1, OUTPUT); pinMode(leftMotorIn2, OUTPUT); pinMode(enA, OUTPUT); pinMode(rightMotorIn1, OUTPUT); pinMode(rightMotorIn2, OUTPUT); pinMode(enB, OUTPUT); // Iniciar comunicación serial para depuración Serial.begin(9600); } void loop() { // Lectura del valor del sensor int sensorValue = analogRead(sensorPin); Serial.println(sensorValue); // Ajustar la velocidad base (0-255) int motorSpeed = 200; // Si se detecta la línea (valor mayor que el umbral) if (sensorValue > threshold) { // Avanza ambos motores hacia adelante digitalWrite(leftMotorIn1, HIGH); digitalWrite(leftMotorIn2, LOW); digitalWrite(rightMotorIn1, HIGH); digitalWrite(rightMotorIn2, LOW); } else { // Si no se detecta la línea, se realiza un giro correctivo (por ejemplo, solo el motor derecho) digitalWrite(leftMotorIn1, LOW); digitalWrite(leftMotorIn2, LOW); digitalWrite(rightMotorIn1, HIGH); digitalWrite(rightMotorIn2, LOW); } // Aplicar la velocidad a ambos motores analogWrite(enA, motorSpeed); analogWrite(enB, motorSpeed); delay(100); // Intervalo entre lecturas }
threshold) se debe ajustar en función de las condiciones de iluminación y características del sensor.loop().