DEBUG
De ArduWiki
Durante el desarrollo, todos usamos Serial.print() para ayudar a depurar nuestro código. Cuando las cosas parecen estables, volvemos y eliminamos el código de depuración... solo para descubrir unos días después que necesitamos nuevamente el código de depuración. Una buena solucion es dejar todo el código de depuración donde corresponde y solo modificar esta linea:
Sintaxis
#define DEBUG #ifdef DEBUG Serial.print("Algunas cosas de depuración"); //Más código de depuración ... #endif
Para desactivas solo comente la primera linea:
//#define DEBUG #ifdef DEBUG Serial.print("Algunas cosas de depuración"); //Más código de depuración ... #endif
Comentarios
Cuando comentar la primera linea logras que uC defina que DEBUG desaparezca comentándolo. Como ya no está definido en el programa, cualquier elemento entre el #ifdef y el #endif ya no forma parte del archivo fuente desde el punto de vista del compilador. Esto facilita agregar y eliminar código de depuración.
Ejemplos
#define DEBUG
#ifdef DEBUG
#define DEBUG_PRINT(x) Serial.print(x)
#define DEBUG_PRINTDEC(x) Serial.print(x, DEC)
#define DEBUG_PRINTLN(x) Serial.println(x)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTDEC(x)
#define DEBUG_PRINTLN(x)
#endif
Ejemplo 1
Imprimir una matriz
#define DEBUG_ARRAY(a) {
for (int index=0; index<sizeof(a)/sizeof(a[0]); index++){
Serial.print(a[index]);
Serial.print('\t');
}
Serial.println();
};
String str = "";
const chr separador = ',';
const byte largo = 3;
int datos[largo];
void setup(){
Serial.begin(115200);
}
void loop(){
if (Serial.available()){
str = Serial.readStringUntil('\n');
for (byte i=0; i<largo ; i++){
int indice = str.indexOf(separador);
datos[i] = str.substring(0, indice).toInt();
str = str.substring(indice + 1);
}
DEBUG_ARRAY(data);
}
}
Ejemplo 2
#define DEBUG(a) Serial.println(a);
String texto = "-123.45";
void setup(){
Serial.begin(9600);
float valor = texto.toFloat();
DEBUG(valor);
}
void loop(){
//Nada.
}