El estudiante esta frente al ordenador. El robot va conectado por USB en las pruebas finales. Dice con entusiasmo: Profe, ya esta, funciona perfecto, vamos a la pista!
Se desenchufa el USB, el robot se pone en la pista, se enciende el interruptor de la bateria y... El robot que hacia un momento iba estable no avanza, se ralentiza, pierde curvas o reacciona raro.
La primera reaccion suele ser: Hace un momento iba bien, seguro que es la bateria! A menudo la bateria no es el problema. El culpable es una charla oculta olvidada en el codigo.
El problema: un robot que se habla solo
Para depurar usamos mucho Serial.print(). Enviamos valores al Monitor Serie para ver lecturas o si entro un if.
Al quitar el USB, el cerebro del robot no deja de enviar esos datos. No nota que ya nadie escucha. Sigue escribiendo cada valor al vacio cientos de veces por segundo.
La trampa del tiempo: por que se ralentiza el procesador
Escribir por el puerto serie cuesta tiempo real. Si tu loop() esta lleno de Serial.print(), la CPU imprime en vez de mover motores y leer obstaculos. El bucle se hace lento y los reflejos empeoran. Ve la linea, pero cuando ordena girar ya se ha salido.
Nota de taller: Un codigo que se siente rapido con USB puede sentirse mas lento con bateria. A veces es el voltaje. A veces es Serial olvidado.
Truco: dos soluciones practicas
1) Metodo aprendiz (comentar)
Antes de una competicion o prueba real, pon // delante de cada Serial.print() / Serial.println(). Funciona seguro. Luego reabres lo que necesites.
// Serial.println(sensorValor); // apagado en pista
2) Metodo pro (interruptor de prueba)
Pon un interruptor arriba del sketch:
int modoPrueba = 1; // 1 = imprimir, 0 = silencio
Protege las impresiones:
if (modoPrueba == 1) {
Serial.println(sensorValor);
}
En el taller deja modoPrueba = 1. Antes de la pista ponlo a 0 y sube el codigo otra vez. Un solo digito quita la carga de datos.
Haz que el robot deje de hablarse solo en la pista para que mire el camino. Codigo limpio, robot rapido.
Lista: USB desconectado? Serial apagado / modoPrueba 0? GND comun y alimentacion de motores OK?