Sistema de Debug
Índice
Modos de Debug
11 modos seleccionables desde el menú CONFIG → DEBUG. Archivos: debug.c, debug.h.
0. DEBUG_NONE — Sin debug
Operación normal.
1. DEBUG_MACROARRAY — Datos de macroarray
Imprime los datos almacenados en el buffer de macroarray por puerto serie. Útil para analizar datos de control post-carrera.
2. DEBUG_TYPE_SENSORS — Sensores en vivo
- Toggle con UP: alterna entre modo raw y distancias.
- Modo raw: imprime
sensors_on,sensors_off,raw_filterpara los 4 sensores. - Modo distancias: imprime distancias en mm, detección de paredes, errores laterales/diagonales/angulares.
- Frecuencia: ~50 ms entre lecturas.
3. DEBUG_ENCODERS — Encoders
Imprime milímetros del encoder izquierdo y derecho a ~50 ms.
4. DEBUG_GYRO — Giroscopio
Imprime valor raw, ángulo integrado y velocidad angular del giroscopio Z.
5. DEBUG_FLOODFILL_MAZE — Maze + Floodfill
Llama a floodfill_maze_print() que imprime:
- Laberinto completo con paredes (formato ASCII)
- Valores de floodfill por celda
- Secuencia de movimientos generada
Desactiva el debug tras la impresión.
6. DEBUG_MOTORS_CURRENT — Corriente de motores
- Activa motores a velocidad 150.
- Imprime valores de encoders.
- Permite medir consumo con los motores en movimiento.
7. DEBUG_TIMETRIAL — Demo Time Trial
Ejecuta una demo: 2 celdas recto + 3× (1 celda + giro 90° derecha). Usa la configuración cinemática actual.
8. DEBUG_KEEP_FRONT_DISTANCE — Demo distancia frontal
- Activa sensores frontales.
- Configura control para mantener distancia a pared frontal.
- Prueba el PID de distancia frontal.
9. DEBUG_GYRO_DEMO — Demo estabilización giro
Ejecuta keep_z_angle() en bucle para probar la estabilización del giroscopio.
10. DEBUG_FAN_DEMO — Demo ventilador
Activa el ventilador a la velocidad configurada para la cinemática actual.
Salida Serie (USART)
USART3 a 115200 baud:
- TX: PC6
- RX: PC7
- printf() redirigido mediante _write() en usart.c.
Formato de Impresión
// Sensores raw
"S1: 1234 S2: 2345 S3: 3456 S4: 0123"
// Sensores distancia
"D1: 180 D2: 175 W: L01 R01 F00 | err: +1.5 dErr: -0.3 aErr: +2"
// Aux analógicos
"BA: 3456 CI: 0123 CD: 2345 BO: 1234"
// Batería
"BA: 8.23V"
// Encoders
"L: 12345 R: 12346"
// Giroscopio
"Z(raw): -123 Z(dps): -4.305 Z(deg): 12.34"
LEDs de Información
10 LEDs de información + 1 LED de estado + 1 LED RGB. Ver Batería y LEDs para detalles completos.
Funciones de visualización para debug:
- update_side_sensors_leds() — Muestra error de sensores laterales en barra de 8 LEDs.
- set_leds_front_sensors() — Muestra estado de sensores frontales.
- set_info_led() / set_info_leds() / clear_info_leds() — Control individual de LEDs.
- set_RGB_color(r,g,b) — LED RGB (hasta 1024 niveles por canal).
- set_RGB_rainbow() — Ciclo de colores automático.
Macroarray
Sistema de logging para depuración post-carrera (macroarray.h):
#define MACROARRAY_LENGTH 30000
macroarray_store(data)— Almacena datos de control durante la carrera.macroarray_print()— Imprime el buffer completo por USART.- Activado cuando
race_startedy hay movimiento no nulo.
Los datos almacenados incluyen errores de control, velocidades y PWM para análisis offline.
Zona de Debug en Main
Al final de main.c:158-202 hay una zona de debug temporal con código comentado para pruebas rápidas:
// LED WARNING → warning_status_led(125)
// LEDS MENU → set_leds_wave(125)
// LED RGB → set_RGB_color(r,g,b) / set_RGB_rainbow()
// MPU → lsm6dsr_get_gyro_z_*
// VENTILADOR → set_fan_speed(50)
// MOTORES → set_motors_speed(20, 20)
// SENSORES → get_sensor_raw(...)
// AUX ANALÓGICOS → get_aux_raw(...)
// ENCODERS → get_encoder_left_millimeters()
Esta zona es inalcanzable en operación normal (está después de un while(1) infinito), pero sirve como referencia de pruebas unitarias.
Documento generado el 2026-06-12. Ver también Menú, Batería y LEDs, Arquitectura Software.