Carrito Seguidor de Línea Arduino
0:58
Cpp
/* Programa para Carrito Seguidor de Línea con 2 Sensores KY-032 - Dos sensores KY-032 conectados a pines digitales 2 (izquierdo) y 3 (derecho) - Control de motores mediante un controlador H-bridge conectado a los pines 4, 5 (motor izquierdo) y 6, 7 (motor derecho) */ const int sensorIzq = 2; // Sensor izquierdo KY-032 const int sensorDer = 3; // Sensor derecho KY-032 // Pines de control para el motor izquierdo const int motorIzqAdelante = 4; const int motorIzqAtras = 5; // Pines de control para el motor derecho const int motorDerAdelante = 6; const int motorDerAtras = 7; void setup() { // Configuración de pines para los sensores pinMode(sensorIzq, INPUT); pinMode(sensorDer, INPUT); // Configuración de pines para los motores pinMode(motorIzqAdelante, OUTPUT); pinMode(motorIzqAtras, OUTPUT); pinMode(motorDerAdelante, OUTPUT); pinMode(motorDerAtras, OUTPUT); // Inicialmente, detenemos los motores detenerMotores(); } void loop() { // Lectura de los sensores int lecturaIzq = digitalRead(sensorIzq); int lecturaDer = digitalRead(sensorDer); // Lógica de control: // - Cuando ambos sensores detectan área clara (HIGH) → avanzar // - Cuando un sensor detecta la línea (LOW) → ajustar dirección if (lecturaIzq == HIGH && lecturaDer == HIGH) { avanzar(); } else if (lecturaIzq == LOW && lecturaDer == HIGH) { // El sensor izquierdo detecta línea: girar a la derecha girarDerecha(); } else if (lecturaIzq == HIGH && lecturaDer == LOW) { // El sensor derecho detecta línea: girar a la izquierda girarIzquierda(); } else if (lecturaIzq == LOW && lecturaDer == LOW) { // Ambos sensores detectan línea: detener o aplicar otra estrategia (aquí se detiene) detenerMotores(); } delay(50); // Pequeña demora para estabilidad en la lectura y respuesta } void avanzar() { digitalWrite(motorIzqAdelante, HIGH); digitalWrite(motorIzqAtras, LOW); digitalWrite(motorDerAdelante, HIGH); digitalWrite(motorDerAtras, LOW); } void girarDerecha() { // Se activa el motor izquierdo para avanzar mientras se detiene o reduce el motor derecho digitalWrite(motorIzqAdelante, HIGH); digitalWrite(motorIzqAtras, LOW); digitalWrite(motorDerAdelante, LOW); digitalWrite(motorDerAtras, LOW); } void girarIzquierda() { // Se activa el motor derecho para avanzar mientras se detiene o reduce el motor izquierdo digitalWrite(motorIzqAdelante, LOW); digitalWrite(motorIzqAtras, LOW); digitalWrite(motorDerAdelante, HIGH); digitalWrite(motorDerAtras, LOW); } void detenerMotores() { digitalWrite(motorIzqAdelante, LOW); digitalWrite(motorIzqAtras, LOW); digitalWrite(motorDerAdelante, LOW); digitalWrite(motorDerAtras, LOW); }
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.