En un proyecto robótico, que el programa compile es apenas el primer control. Arduino IDE verifica la forma del código, pero no sabe qué comportamiento buscábamos. Este Informe USERS explica cómo detectar y corregir los errores de lógica antes de que lleguen al robot y se confundan con fallas de montaje.
Autor: Claudio Peña
Compilar no garantiza funcionar
Cuando falta un punto y coma, se usa una variable inexistente o queda una llave abierta, Arduino IDE interrumpe la compilación y muestra el error. Es la falla más visible, porque el propio entorno avisa antes de ejecutar una sola instrucción.
El problema difícil es otro. Un programa puede estar bien escrito y aun así hacer lo contrario de lo que queríamos. Si una condición compara distancia mayor que el umbral cuando debía ser menor, el robot avanza justo cuando debería frenar.
Ese es un error de lógica: el microcontrolador ejecuta con exactitud lo que escribimos, no lo que pensábamos. El compilador no puede señalarlo, porque el código es válido. Depurar consiste en descubrir en qué momento el programa empieza a comportarse distinto de lo previsto.

El Monitor Serie funciona como una ventana hacia variables que quedan dentro del microcontrolador. Ver el valor real separa un problema de lectura de uno de interpretación o de respuesta.
Ver lo que ocurre adentro
En un montaje terminado, casi todo lo interno queda oculto: una variable cambia, una condición se cumple y desde afuera solo vemos el resultado final. El Monitor Serie abre una ventana hacia esos datos mientras el programa corre.
Se inicia una vez en setup() con Serial.begin(9600), a una velocidad que debe coincidir con la del monitor, y después se imprime con print() y println(). Mostrar el valor real permite separar un problema de lectura de otro que aparezca más adelante, en la interpretación del dato o en la respuesta.
Los mensajes también sirven para marcar el recorrido y saber qué rama del código se ejecuta, o para seguir una variable a lo largo de varias vueltas de loop() y detectar un estado que nunca vuelve a su valor inicial.
Conviene que cada mensaje conserve su contexto, con una etiqueta que indique qué representa el número. Y no hay que saturar: dentro de un loop() rápido, la temporización no bloqueante con millis() imprime cada cierto intervalo sin frenar el resto del programa.

Este esquema también sirve para depurar: al separar información, condición y respuesta, permite localizar con mayor rapidez dónde se origina un comportamiento incorrecto.
Probar con datos controlados
Antes de depender de sensores y motores reales, conviene probar la lógica con valores elegidos por nosotros. Asignar 15 a la variable distancia y ver qué decide el código aísla la decisión de las conexiones, la alimentación y la lectura.
Los errores más molestos se esconden en el límite de una condición. Por eso conviene probar el valor exacto del umbral y también uno apenas por debajo y otro apenas por encima. Un solo carácter, la diferencia entre menor y menor o igual, cambia el comportamiento en el borde.
Los datos controlados permiten además fabricar situaciones incómodas de reproducir a mano y probar lo improbable, como una lectura de 0 que la lógica podría tomar por un obstáculo pegado. Cada prueba gana valor si compara lo obtenido con un resultado esperado.
Al integrar todo en el mismo loop() aparecen fallas nuevas. Ayuda separar lectura, decisión y acción en funciones distintas, cambiar una sola cosa por vez y, ante un comportamiento raro, buscar el primer dato que ya no coincide con lo esperado en lugar de mirar el efecto final.

Un programa robótico puede separarse temporalmente en partes para localizar una falla: probar entrada, decisión y acción por separado evita tocar todo el sistema cuando el problema está en una sola etapa.
Encuentra la versión completa de la publicación en la que se basa este resumen, con todos los detalles técnicos en RedUSERS PREMIUM
También te puede interesar:
ESCUELA DE ROBÓTICA: SENSORES O CÓMO UN ROBOT TOMA DECISIONES
Un sensor no vuelve inteligente a un robot por sí solo. Lo que produce autonomía es la manera en que el programa interpreta esos datos y los convierte en acciones. Este Informe USERS recorre cómo una lectura del entorno se transforma en una decisión estable frente a un escenario que cambia todo el tiempo.

Lee todo lo que quieras, donde vayas, contenidos exclusivos por una mínima cuota mensual. Solo en RedUSERS PREMIUM: SUSCRIBETE!



