Skip to content

Instantly share code, notes, and snippets.

@rlogiacco
Last active August 29, 2015 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rlogiacco/8746262 to your computer and use it in GitHub Desktop.
Save rlogiacco/8746262 to your computer and use it in GitHub Desktop.
Use the serial connection to debug your sketch
#ifndef __SERIAL_DEBUG
#define __SERIAL_DEBUG
#if SERIAL_DEBUG
#ifndef SERIAL_DEBUG_SEPARATOR
#define SERIAL_DEBUG_SEPARATOR " | "
#endif
#define DEBUG_0() Serial.println("### SerialDebug ###")
#define DEBUG_1(A) Serial.println(A)
#define DEBUG_2(A,B) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(B)
#define DEBUG_3(A,B,C) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(C)
#define DEBUG_4(A,B,C,D) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(D)
#define DEBUG_5(A,B,C,D,E) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(D);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(E)
#define DEBUG_6(A,B,C,D,E,F) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(D);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(E);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(F)
#define DEBUG_7(A,B,C,D,E,F,G) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(D);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(E);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(F);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(G)
#define DEBUG_8(A,B,C,D,E,F,G,H) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(D);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(E);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(F);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(G);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(H)
#define DEBUG_9(A,B,C,D,E,F,G,H,I) Serial.print(A);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(B);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(C);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(D);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(E);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(F);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(G);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.print(H);Serial.print(SERIAL_DEBUG_SEPARATOR);\
Serial.println(I)
#define DEBUG_X(x,A,B,C,D,E,F,G,H,I,MACRO, ...) MACRO
#define DEBUG(...) DEBUG_X(,##__VA_ARGS__,\
DEBUG_9(__VA_ARGS__),\
DEBUG_8(__VA_ARGS__),\
DEBUG_7(__VA_ARGS__),\
DEBUG_6(__VA_ARGS__),\
DEBUG_5(__VA_ARGS__),\
DEBUG_4(__VA_ARGS__),\
DEBUG_3(__VA_ARGS__),\
DEBUG_2(__VA_ARGS__),\
DEBUG_1(__VA_ARGS__),\
DEBUG_0(__VA_ARGS__)\
)
#define SERIAL_DEBUG_SETUP(SPEED) Serial.begin(SPEED)
#else
#define DEBUG(...)
#define SERIAL_DEBUG_SETUP(SPEED)
#endif
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment