16 #include "LiquidCrystal.h" 22 #define L(x) debug.setCursor(0,0);debug.print(x); 23 #define L2(x,y) debug.setCursor(0,0);debug.print(x,y); 24 #define R(x) debug.setCursor(12,0);debug.print(x); 25 #define R2(x,y) debug.rightToLeft();debug.setCursor(12,0);debug.print(x,y); 26 #define M(x) debug.setCursor(8,0);debug.print(x); 27 #define M2(x,y) debug.setCursor(8,0);debug.print(x,y); 28 #define T(x) debug.trace(x); 29 #define THEX(x) debug.tracehex(x); 30 #define TDEC(x) debug.tracedec(x); 31 #define WAIT_MS(x) debug.wait_ms(x); 34 class Debug:
public LiquidCrystal{
39 public: Debug(): LiquidCrystal(8, 9, 4, 5, 6, 7){
40 LiquidCrystal::begin(NCHARS,LINE2+1);
46 void trace(
const char* s){
47 uint8_t len=strlen(s);
49 for (uint8_t pos=NCHARS-1;pos>0; pos--) buffer[pos]=buffer[pos-len-1];
51 for (uint8_t i=0; i<len;i++) buffer[i]=s[i];
54 LiquidCrystal::setCursor(0,1);
55 LiquidCrystal::print(buffer);
57 void tracehex(uint16_t u){
62 void tracedec(uint16_t u){
68 void wait_ms(uint16_t time){
69 for (
volatile long int i=0; i<(time*150L); i++);
78 #define L(x) ((void) 0); 79 #define L2(x,y) ((void) 0); 80 #define R(x) ((void) 0); 81 #define R2(x,y) ((void) 0); 82 #define M(x) ((void) 0); 83 #define M2(x,y) ((void) 0); 84 #define M2(x,y) ((void) 0); 85 #define T(x) ((void) 0); 86 #define THEX(x) ((void) 0); 87 #define TDEC(x) ((void) 0); 88 #define WAIT_MS(x) ((void) 0);