The student is at the computer. The robot is plugged in over USB for final tests. Excited, they say: Teacher, it is done, it works perfectly, let us put it on the track!
The USB cable is unplugged, the robot is placed on the track, the battery switch is turned on, and... The robot that ran smoothly a minute ago will not go, slows down, misses turns, or reacts oddly.
The first reaction is usually: It worked a minute ago, the battery must be bad! Often the battery is fine. The real culprit is a forgotten talkative debug line in the code.
The problem: A robot talking to itself
For debugging we use Serial.print() a lot. We send values to the Serial Monitor to see sensor readings or whether a branch ran.
When you unplug USB, the microcontroller does not stop sending that data. It cannot tell that nobody is listening. It keeps shouting values into the void hundreds of times per second.
The time trap: Why the processor slows down
Writing to the serial port takes real time. If your loop() is packed with many Serial.print() calls, the CPU spends its time printing instead of driving motors and reading obstacles. The loop slows down and reflexes get worse. The robot sees the line, but by the time it commands a turn, it has already left the path.
Workshop note: Code that feels fast over USB may feel slower on battery. Sometimes it is voltage. Sometimes it is leftover Serial output.
The tip: Two practical fixes
1) Apprentice method (comment out)
Before a contest or field test, put // in front of every Serial.print() / Serial.println(). It works. Later you reopen the lines you need.
// Serial.println(sensorValue); // off on the track
2) Pro method (debug switch)
Put a switch at the top of your sketch:
int testMode = 1; // 1 = print, 0 = silent
Guard your prints:
if (testMode == 1) {
Serial.println(sensorValue);
}
Keep testMode = 1 at the desk. Before the track, set testMode = 0 and upload once more. One digit removes the data load.
Stop the robot from talking to itself on the track so it can focus on the line. Clean code is a fast robot.
Checklist: USB unplugged? Serial off / testMode 0? Common GND and external motor power OK?