Dibuja circuitos con cinta negra y mira como el robot los recorre automaticamente.
Como Funcionan los Sensores IR
Los sensores TCRT5000 emiten luz infrarroja y miden cuanta luz rebota. Las superficies blancas reflejan mucha luz, las negras absorben casi toda.
Sobre Blanco
Mucha luz reflejada = lectura ALTA
Sobre Negro
Poca luz reflejada = lectura BAJA
Logica de Decision
Con 2 sensores (izquierdo y derecho) el robot "ve" donde esta la linea y decide como moverse:
Linea en el centro
Linea a la izquierda
Linea a la derecha
Cruce o linea gruesa
Sensor TCRT5000
| Pin | Conectar a | Descripcion |
|---|---|---|
| VCC | 5V de Arduino | Alimentacion del modulo |
| GND | GND de Arduino | Tierra comun |
| A0 | A0 o A1 | Salida analogica (0-1023) - usamos esta |
| D0 | Pin digital | Salida digital (0 o 1) - opcional |
Diagrama del Circuito
Calibracion
Cada sensor y superficie es diferente. Necesitas encontrar el umbral que separa "blanco" de "negro" para tu setup especifico.
calibrar() activaConstruye tu Circuito
Usa cartulina blanca como base y cinta aislante negra (2-3 cm de ancho) para la linea. Empieza simple y aumenta la dificultad.
Nivel 1: Ovalo
Curvas suaves, sin intersecciones. Perfecto para empezar.
Nivel 2: Ocho
Curvas en ambas direcciones. Un cruce en el centro.
Nivel 3: Complejo
Curvas cerradas, angulos, bifurcaciones.
El Codigo
// Pines Sensores
const int SENSOR_IZQ = A0;
const int SENSOR_DER = A1;
// Pines Motores (igual que P5)
const int ENA = 5;
const int IN1 = 4;
const int IN2 = 7;
const int ENB = 6;
const int IN3 = 8;
const int IN4 = 12;
// Configuracion
const int UMBRAL = 500; // Ajustar segun calibracion
const int VEL_BASE = 120; // Velocidad normal
const int VEL_GIRO = 80; // Velocidad en giros
void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
parar();
delay(3000); // Esperar 3 segundos antes de arrancar
}
void loop() {
// Leer sensores
int lecturaIzq = analogRead(SENSOR_IZQ);
int lecturaDer = analogRead(SENSOR_DER);
// Detectar linea (negro = lectura baja)
bool lineaIzq = lecturaIzq < UMBRAL;
bool lineaDer = lecturaDer < UMBRAL;
// Decidir movimiento
if (!lineaIzq && !lineaDer) {
// Ambos ven blanco: linea en el centro
avanzar(VEL_BASE);
}
else if (lineaIzq && !lineaDer) {
// Izquierdo ve negro: girar izquierda
girarIzquierda();
}
else if (!lineaIzq && lineaDer) {
// Derecho ve negro: girar derecha
girarDerecha();
}
else {
// Ambos ven negro: cruce, avanzar lento
avanzar(VEL_GIRO);
}
delay(10);
}
void avanzar(int velocidad) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, velocidad);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, velocidad);
}
void girarIzquierda() {
analogWrite(ENA, 0); // Parar izquierdo
analogWrite(ENB, VEL_GIRO); // Derecho sigue
}
void girarDerecha() {
analogWrite(ENA, VEL_GIRO); // Izquierdo sigue
analogWrite(ENB, 0); // Parar derecho
}
void parar() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
Demo Interactivo
Mira al Robot Seguir la Linea
Observa como los sensores detectan la linea y ajustan el movimiento
Problemas Comunes
| Problema | Causa Probable | Solucion |
|---|---|---|
| No detecta la linea | Sensores muy altos | Bajar sensores a 5-10mm del suelo |
| Pierde la linea en curvas | Velocidad muy alta | Reducir VEL_BASE y VEL_GIRO |
| Oscila mucho (zigzag) | Umbral mal calibrado | Recalibrar con Monitor Serial |
| Solo gira a un lado | Sensor danado o desconectado | Verificar conexiones y probar cada sensor |
| Motores no responden | Pines mal configurados | Revisar que coincidan con P5 |
Simulador
Pasos de Construccion
Prepara el chasis P5
Usa el robot del proyecto 5. Los motores y driver ya estan listos.
Monta los sensores IR
Fija los 2 sensores en la parte delantera, separados ~3cm, mirando al suelo.
Ajusta la altura
Los sensores deben estar a 5-10mm del suelo. Usa tornillos o LEGO para ajustar.
Conecta los sensores
VCC a 5V, GND a GND, A0 del sensor izq a A0, A0 del sensor der a A1.
Construye un circuito simple
Cartulina blanca + cinta negra en forma de ovalo. Minimo 50x70cm.
Calibra los sensores
Usa el modo calibracion para encontrar tu UMBRAL optimo.
Sube el codigo
Actualiza UMBRAL con tu valor y sube el codigo al Arduino.
Prueba y ajusta velocidad
Si pierde la linea, reduce VEL_BASE. Si es muy lento, aumentala gradualmente.
Experimentos
3er Sensor Central
Anade un sensor en el centro para detectar mejor cuando esta centrado
Control PID
Implementa control proporcional para movimientos mas suaves sin zigzag
Intersecciones
Detecta cruces y programa que el robot tome decisiones (izq/der/recto)
Carrera Cronometrada
Compite: ¿Cuanto tarda en completar el circuito? Optimiza velocidad.
Lineas de Colores
Prueba con cintas de otros colores. ¿Cuales detecta mejor?
Detectar Final
Anade una marca especial (linea perpendicular) para detectar meta