#ifndef __ULTRALCDH #define __ULTRALCDH #include "Configuration.h" #ifdef ULTRA_LCD void lcd_status(); void lcd_init(); void lcd_status(const char* message); void beep(); void buttons_check(); #define LCD_UPDATE_INTERVAL 100 #define STATUSTIMEOUT 15000 #include extern LiquidCrystal lcd; #ifdef NEWPANEL #define EN_C (1<(LCD_HEIGHT-1+1)*lcdslow) { lineoffset++; curencoderpos=(LCD_HEIGHT-1)*lcdslow; if(lineoffset>(maxlines+1-LCD_HEIGHT)) lineoffset=maxlines+1-LCD_HEIGHT; if(curencoderpos>maxlines*lcdslow) curencoderpos=maxlines*lcdslow; } lastencoderpos=encoderpos=curencoderpos; int lastactiveline=activeline; activeline=curencoderpos/lcdslow; if(activeline<0) activeline=0; if(activeline>LCD_HEIGHT-1) activeline=LCD_HEIGHT-1; if(activeline>maxlines) { activeline=maxlines; curencoderpos=maxlines*lcdslow; } if(lastactiveline!=activeline ||lastlineoffset!=lineoffset) force_lcd_update=true; lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?'>':'\003'); } } inline void clearIfNecessary() { if(lastlineoffset!=lineoffset ||force_lcd_update) { force_lcd_update=true; lcd.clear(); } } }; //conversion routines, could need some overworking char *ftostr51(const float &x); char *ftostr31(const float &x); char *ftostr3(const float &x); #define LCD_MESSAGE(x) lcd_status(x); #define LCD_MESSAGEPGM(x) lcd_statuspgm(PSTR(x)); #define LCD_STATUS lcd_status() #else //no lcd #define LCD_STATUS #define LCD_MESSAGE(x) #define LCD_MESSAGEPGM(x) inline void lcd_status() {}; #endif #ifndef ULTIPANEL #define CLICKED false #define BLOCK ; #endif void lcd_statuspgm(const char* message); #endif //ULTRALCD