Library for EarthLCD ezLCD3xx line of products

Dependents:   ezLCDTest

/media/uploads/codeman/front.jpg /media/uploads/codeman/all.jpg /media/uploads/codeman/arlcd.jpg /media/uploads/codeman/side.jpg

Committer:
codeman
Date:
Mon May 13 18:00:23 2013 +0000
Revision:
6:83cada1140d4
Parent:
5:4a6254e2012f
Public beta version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
codeman 5:4a6254e2012f 1 /*
codeman 0:65606abcae36 2 * @author Ken Segler
codeman 5:4a6254e2012f 3 * @author ken@earthlcd.com
codeman 5:4a6254e2012f 4 * @copyright 2013 Ken Segler
codeman 5:4a6254e2012f 5 * @version 1.0
codeman 5:4a6254e2012f 6 * @date
codeman 0:65606abcae36 7 */
codeman 0:65606abcae36 8
codeman 0:65606abcae36 9 #ifndef _EZLCDLIB_H
codeman 0:65606abcae36 10 #define _EZLCDLIB_H
codeman 0:65606abcae36 11
codeman 0:65606abcae36 12 #include "mbed.h"
codeman 0:65606abcae36 13
codeman 1:c7659c8af0d3 14 #define FIFO 0
codeman 1:c7659c8af0d3 15 #define LIFO 1
codeman 1:c7659c8af0d3 16 #define CLEAR 2
codeman 0:65606abcae36 17
codeman 3:28e71ce23bfd 18 #define DELETE 0
codeman 3:28e71ce23bfd 19 #define ENABLE 1
codeman 3:28e71ce23bfd 20 #define DISABLE 2
codeman 3:28e71ce23bfd 21 #define REDRAW 3
codeman 5:4a6254e2012f 22
codeman 5:4a6254e2012f 23 /** Interface to the EarthLCD ezLCD3xx line of smart displays
codeman 5:4a6254e2012f 24 * Derived class from Serial so that you
codeman 5:4a6254e2012f 25 * can conveniently printf(), putc(), etc to the display.
codeman 5:4a6254e2012f 26 *
codeman 5:4a6254e2012f 27 * Example:
codeman 5:4a6254e2012f 28 * @code
codeman 5:4a6254e2012f 29 * #include "mbed.h"
codeman 5:4a6254e2012f 30 * #include "TSISensor.h"
codeman 5:4a6254e2012f 31 * #include "ezLCDLib.h"
codeman 5:4a6254e2012f 32 * #include "MMA8451Q.h"
codeman 5:4a6254e2012f 33 *
codeman 5:4a6254e2012f 34 * #define MMA8451_I2C_ADDRESS (0x1d<<1)
codeman 5:4a6254e2012f 35 *
codeman 5:4a6254e2012f 36 * enum { BLACK, GRAY, SILVER, WHITE, RED, MAROON, YELLOW, OLIVE, LIME, GREEN, AQUA, TEAL, BLUE, NAVY, FUCHSIA, PURPLE };
codeman 5:4a6254e2012f 37 * #define arLCD
codeman 5:4a6254e2012f 38 //InterruptIn ezLCD3Int( PTD7); // interrupt instance for touch
codeman 5:4a6254e2012f 39 //InterruptIn ezLCD3Int( PTA13); // interrupt instance for touch
codeman 5:4a6254e2012f 40 * #ifdef arLCD
codeman 5:4a6254e2012f 41 * InterruptIn ezLCD3Int( PTD4 ); // interrupt instance for touch
codeman 5:4a6254e2012f 42 * DigitalOut _nrst(PTC7);
codeman 5:4a6254e2012f 43 * ezLCD3 lcd(PTA2, PTA1); //rx,tx
codeman 5:4a6254e2012f 44 * TSISensor tsi;
codeman 5:4a6254e2012f 45 * AnalogIn adc1(PTB0);
codeman 5:4a6254e2012f 46 * MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
codeman 5:4a6254e2012f 47 * #endif
codeman 5:4a6254e2012f 48 *
codeman 5:4a6254e2012f 49 * DigitalOut myled(LED_BLUE);
codeman 5:4a6254e2012f 50 * volatile bool ezLCD3Touch = false;
codeman 5:4a6254e2012f 51 *
codeman 5:4a6254e2012f 52 * int color = BLACK;
codeman 5:4a6254e2012f 53 * int temp;
codeman 5:4a6254e2012f 54 * int touch=0;
codeman 5:4a6254e2012f 55 * int adc1Count = 0;
codeman 5:4a6254e2012f 56 * float adc1Average = 0;
codeman 5:4a6254e2012f 57 *
codeman 5:4a6254e2012f 58 * char ezID[20];
codeman 5:4a6254e2012f 59 * char ezVER[20];
codeman 5:4a6254e2012f 60 * char adcBuf[20];
codeman 5:4a6254e2012f 61 * void ezLCD3Isr( void )
codeman 5:4a6254e2012f 62 * {
codeman 5:4a6254e2012f 63 * ezLCD3Touch = true;
codeman 5:4a6254e2012f 64 * }
codeman 5:4a6254e2012f 65 *
codeman 5:4a6254e2012f 66 * int main()
codeman 5:4a6254e2012f 67 * {
codeman 5:4a6254e2012f 68 * wait(3);
codeman 5:4a6254e2012f 69 * while(!lcd.sync());
codeman 5:4a6254e2012f 70 * ezLCD3Int.fall(&ezLCD3Isr);
codeman 5:4a6254e2012f 71 * ezLCD3Touch = false;
codeman 5:4a6254e2012f 72 * myled=1;
codeman 5:4a6254e2012f 73 * lcd.cls(BLACK);
codeman 5:4a6254e2012f 74 * lcd.theme(0, 111, 106, 0, 130, 0, 13, 12, 101, 100, 0);
codeman 5:4a6254e2012f 75 * lcd.xy(0,0);//11
codeman 5:4a6254e2012f 76 * lcd.color(BLACK); //1
codeman 5:4a6254e2012f 77 * lcd.box(319,239, 1 );//2
codeman 5:4a6254e2012f 78 * lcd.color(155);
codeman 5:4a6254e2012f 79 * lcd.xy(1,1);
codeman 5:4a6254e2012f 80 * lcd.line(317,1);
codeman 5:4a6254e2012f 81 * lcd.xy(1,1);
codeman 5:4a6254e2012f 82 * lcd.line(1,237);
codeman 5:4a6254e2012f 83 * lcd.color(WHITE);
codeman 5:4a6254e2012f 84 * lcd.xy(2,237);
codeman 5:4a6254e2012f 85 * lcd.line(317,237);
codeman 5:4a6254e2012f 86 * lcd.line(317,2);
codeman 5:4a6254e2012f 87 * lcd.color(WHITE);//3
codeman 5:4a6254e2012f 88 * lcd.xy(300,100);//4
codeman 5:4a6254e2012f 89 * lcd.xy(300,200);//6
codeman 5:4a6254e2012f 90 * lcd.light(50);//8
codeman 5:4a6254e2012f 91 * lcd.xy(40,10);//9
codeman 5:4a6254e2012f 92 * lcd.print("--==[\\[28m Hello \\[65mMBED\\[28m World \\[3m]==--");//10
codeman 5:4a6254e2012f 93 * lcd.xy(20,100);//11
codeman 5:4a6254e2012f 94 * lcd.color(YELLOW);//12
codeman 5:4a6254e2012f 95 * lcd.setStringID( 2,"Button1");
codeman 5:4a6254e2012f 96 * lcd.setStringID( 3,"Button2");
codeman 5:4a6254e2012f 97 * lcd.button(2,20,40,100,40,1,0,10,0,2);
codeman 5:4a6254e2012f 98 * lcd.button(3,200,40,100,40,1,0,10,0,3);
codeman 5:4a6254e2012f 99 * lcd.getStringID( 65,ezID);
codeman 5:4a6254e2012f 100 * lcd.getStringID( 66,ezVER);
codeman 5:4a6254e2012f 101 * lcd.print(ezID);
codeman 5:4a6254e2012f 102 * lcd.color(PURPLE);
codeman 5:4a6254e2012f 103 * lcd.xy(20,120);//11
codeman 5:4a6254e2012f 104 * lcd.print(ezVER);
codeman 5:4a6254e2012f 105 * lcd.color(TEAL);
codeman 5:4a6254e2012f 106 * lcd.xy(20,140);
codeman 5:4a6254e2012f 107 * lcd.printf("MaxX %d MaxY %d", lcd.getXmax()+1, lcd.getYmax()+1); //13 14
codeman 5:4a6254e2012f 108 * lcd.light(5);//15
codeman 5:4a6254e2012f 109 * lcd.light(100);//16
codeman 5:4a6254e2012f 110 * lcd.image(20,165,"0.gif");
codeman 5:4a6254e2012f 111 * lcd.image(55,165,"1.gif");
codeman 5:4a6254e2012f 112 * lcd.image(90,165,"2.gif");
codeman 5:4a6254e2012f 113 * lcd.image(125,165,"3.gif");
codeman 5:4a6254e2012f 114 * lcd.color(WHITE);//17
codeman 5:4a6254e2012f 115 * lcd.setStringID(4, "meter");
codeman 5:4a6254e2012f 116 * lcd.setStringID(5, "%");
codeman 5:4a6254e2012f 117 * lcd.setStringID(6, "X");
codeman 5:4a6254e2012f 118 * lcd.setStringID(7, "Y");
codeman 5:4a6254e2012f 119 * lcd.setStringID(8, "Z");
codeman 5:4a6254e2012f 120 * lcd.staticText( 4, 200, 210, 100, 25, 8, 0, 4);
codeman 5:4a6254e2012f 121 * lcd.progressBar( 5, 200, 180, 100, 25, 1, 0, 100, 0 , 5);
codeman 5:4a6254e2012f 122 * lcd.progressBar( 6, 200, 90, 100, 25, 1, 0, 100, 0 , 6);
codeman 5:4a6254e2012f 123 * lcd.progressBar( 7, 200, 120, 100, 25, 1, 0, 100, 0 , 7);
codeman 5:4a6254e2012f 124 * lcd.progressBar( 8, 200, 150, 100, 25, 1, 0, 100, 0 , 8);
codeman 5:4a6254e2012f 125 *
codeman 5:4a6254e2012f 126 * while(1) {
codeman 5:4a6254e2012f 127 * if(ezLCD3Touch) {
codeman 5:4a6254e2012f 128 * ezLCD3Touch = false;
codeman 5:4a6254e2012f 129 * touch=lcd.wstack(LIFO);
codeman 5:4a6254e2012f 130 * myled = !myled;
codeman 5:4a6254e2012f 131 * lcd.xy(10,210);
codeman 5:4a6254e2012f 132 * lcd.color(BLACK);
codeman 5:4a6254e2012f 133 * lcd.box(180,20,1);
codeman 5:4a6254e2012f 134 * lcd.color(WHITE);
codeman 5:4a6254e2012f 135 * switch( touch ) {
codeman 5:4a6254e2012f 136 * case 240:
codeman 5:4a6254e2012f 137 * lcd.print("Button1 Pressed");
codeman 5:4a6254e2012f 138 * break;
codeman 5:4a6254e2012f 139 * case 214:
codeman 5:4a6254e2012f 140 * lcd.print("Button1 Released");
codeman 5:4a6254e2012f 141 * break;
codeman 5:4a6254e2012f 142 * case 224:
codeman 5:4a6254e2012f 143 * lcd.print("Button1 Cancel");
codeman 5:4a6254e2012f 144 * break;
codeman 5:4a6254e2012f 145 * case 340:
codeman 5:4a6254e2012f 146 * lcd.print("Button2 Pressed");
codeman 5:4a6254e2012f 147 * break;
codeman 5:4a6254e2012f 148 * case 314:
codeman 5:4a6254e2012f 149 * lcd.print("Button2 Released");
codeman 5:4a6254e2012f 150 * break;
codeman 5:4a6254e2012f 151 * case 324:
codeman 5:4a6254e2012f 152 * lcd.print("Button2 Cancel");
codeman 5:4a6254e2012f 153 * break;
codeman 5:4a6254e2012f 154 * default:
codeman 5:4a6254e2012f 155 * lcd.print("default");
codeman 5:4a6254e2012f 156 * break;
codeman 5:4a6254e2012f 157 *
codeman 5:4a6254e2012f 158 }
codeman 5:4a6254e2012f 159 *
codeman 5:4a6254e2012f 160 }
codeman 5:4a6254e2012f 161 * adc1Average += adc1.read();
codeman 5:4a6254e2012f 162 * adc1Count ++;
codeman 5:4a6254e2012f 163 * if (adc1Count == 500) {
codeman 5:4a6254e2012f 164 * adc1Count=0;
codeman 5:4a6254e2012f 165 * sprintf(adcBuf, "%1.3f V",(adc1Average/500)*3.3);
codeman 5:4a6254e2012f 166 * lcd.setStringID(4, adcBuf);
codeman 5:4a6254e2012f 167 * lcd.wstate(4,REDRAW);
codeman 5:4a6254e2012f 168 * adc1Average =0;
codeman 5:4a6254e2012f 169 *
codeman 5:4a6254e2012f 170 }
codeman 5:4a6254e2012f 171 * if(adc1Count ==250) {
codeman 5:4a6254e2012f 172 * lcd.wvalue(5,abs( tsi.readPercentage()*100));
codeman 5:4a6254e2012f 173 * lcd.wvalue(6,abs(acc.getAccX())*100);
codeman 5:4a6254e2012f 174 * lcd.wvalue(7,abs(acc.getAccY())*100);
codeman 5:4a6254e2012f 175 * lcd.wvalue(8,abs(acc.getAccZ())*100);
codeman 5:4a6254e2012f 176 *
codeman 5:4a6254e2012f 177 }
codeman 5:4a6254e2012f 178 *
codeman 5:4a6254e2012f 179 }
codeman 5:4a6254e2012f 180 *
codeman 5:4a6254e2012f 181 *
codeman 5:4a6254e2012f 182 }
codeman 5:4a6254e2012f 183 * @endcode
codeman 5:4a6254e2012f 184 */
codeman 0:65606abcae36 185 class ezLCD3: public Stream
codeman 0:65606abcae36 186 {
codeman 0:65606abcae36 187 public:
codeman 5:4a6254e2012f 188 /** Create a new interface to a ezLCD3xx display
codeman 0:65606abcae36 189 * @param tx -- mbed transmit pin
codeman 0:65606abcae36 190 * @param rx -- mbed receive pin
codeman 0:65606abcae36 191 */
codeman 0:65606abcae36 192 ezLCD3(PinName tx, PinName rx);
codeman 0:65606abcae36 193 /**
codeman 0:65606abcae36 194 *
codeman 0:65606abcae36 195 *
codeman 0:65606abcae36 196 */
codeman 1:c7659c8af0d3 197 void Rx_interrupt( void );
codeman 5:4a6254e2012f 198 /**
codeman 5:4a6254e2012f 199 *
codeman 5:4a6254e2012f 200 *
codeman 5:4a6254e2012f 201 */
codeman 0:65606abcae36 202 void itoa(int value, char *sp, int radix);
codeman 5:4a6254e2012f 203 /**
codeman 5:4a6254e2012f 204 *
codeman 5:4a6254e2012f 205 *
codeman 5:4a6254e2012f 206 */
codeman 3:28e71ce23bfd 207 void stripSpace(char *str);
codeman 0:65606abcae36 208 /**
codeman 0:65606abcae36 209 *
codeman 0:65606abcae36 210 *
codeman 0:65606abcae36 211 */
codeman 5:4a6254e2012f 212 bool sync( void );
codeman 5:4a6254e2012f 213
codeman 5:4a6254e2012f 214 /** Send a integer to the display
codeman 6:83cada1140d4 215 * @param[in] i integer to send
codeman 5:4a6254e2012f 216 */
codeman 0:65606abcae36 217 void sendInt( int i );
codeman 5:4a6254e2012f 218
codeman 5:4a6254e2012f 219 /** Get a integer from the display
codeman 6:83cada1140d4 220 * @param[out] str string to put the data in
codeman 0:65606abcae36 221 *
codeman 0:65606abcae36 222 */
codeman 0:65606abcae36 223 int getInt( char *str );
codeman 5:4a6254e2012f 224
codeman 5:4a6254e2012f 225 /** Get a string from the display
codeman 5:4a6254e2012f 226 * @param[out] str string to put the data in
codeman 0:65606abcae36 227 *
codeman 1:c7659c8af0d3 228 */
codeman 1:c7659c8af0d3 229 void getString( char *str );
codeman 5:4a6254e2012f 230
codeman 5:4a6254e2012f 231 /** Waits for a CR from display
codeman 1:c7659c8af0d3 232 *
codeman 1:c7659c8af0d3 233 */
codeman 0:65606abcae36 234 bool waitForCR( void );
codeman 1:c7659c8af0d3 235
codeman 5:4a6254e2012f 236 /** clear the screen to black
codeman 5:4a6254e2012f 237 *
codeman 5:4a6254e2012f 238 */
codeman 0:65606abcae36 239 void cls(void);
codeman 5:4a6254e2012f 240
codeman 0:65606abcae36 241 /** clear the screen with background color
codeman 5:4a6254e2012f 242 * @param[in] bcolor Background color
codeman 5:4a6254e2012f 243 */
codeman 0:65606abcae36 244 void cls(int bColor);
codeman 5:4a6254e2012f 245
codeman 5:4a6254e2012f 246 /** clear the screen with background color and drawing color
codeman 5:4a6254e2012f 247 *
codeman 5:4a6254e2012f 248 * @param[in] bColor background color
codeman 5:4a6254e2012f 249 * @param[in] fColor drawing color
codeman 5:4a6254e2012f 250 */
codeman 1:c7659c8af0d3 251 void cls(int bColor, int fColor);
codeman 5:4a6254e2012f 252
codeman 5:4a6254e2012f 253 /** Set drawing color
codeman 5:4a6254e2012f 254 * @param[in] color color to draw with
codeman 0:65606abcae36 255 */
codeman 0:65606abcae36 256 void color( int color );
codeman 1:c7659c8af0d3 257
codeman 5:4a6254e2012f 258 /** set x y position for drawing and text
codeman 0:65606abcae36 259 *
codeman 5:4a6254e2012f 260 * @param[in] x is the x coordinate
codeman 5:4a6254e2012f 261 * @param[in] y is the y coordinate
codeman 0:65606abcae36 262 */
codeman 0:65606abcae36 263 void xy(int x, int y);
codeman 0:65606abcae36 264
codeman 5:4a6254e2012f 265 /** set pixel at current x y
codeman 0:65606abcae36 266 *
codeman 0:65606abcae36 267 */
codeman 0:65606abcae36 268 void plot(void);
codeman 0:65606abcae36 269
codeman 5:4a6254e2012f 270 /** set pixel in current draw color at x y
codeman 0:65606abcae36 271 *
codeman 6:83cada1140d4 272 * @param[in] x is the x coordinate
codeman 6:83cada1140d4 273 * @param[in] y is the y coordinate
codeman 0:65606abcae36 274 */
codeman 0:65606abcae36 275 void plot(int x, int y);
codeman 0:65606abcae36 276
codeman 5:4a6254e2012f 277 /** draw line from current x y to new x y
codeman 0:65606abcae36 278 *
codeman 6:83cada1140d4 279 * @param[in] x is the x coordinate
codeman 6:83cada1140d4 280 * @param[in] y is the y coordinate
codeman 0:65606abcae36 281 */
codeman 5:4a6254e2012f 282 void line(int x, int y);
codeman 0:65606abcae36 283
codeman 5:4a6254e2012f 284 /** Set line drawing type
codeman 6:83cada1140d4 285 * @param[in] type Options: 0 = solid, 1= dotted (1 pixel spacing between dots), 2 = dashed (2 pixel spacing between dashes)
codeman 5:4a6254e2012f 286 *
codeman 5:4a6254e2012f 287 *
codeman 5:4a6254e2012f 288 */
codeman 5:4a6254e2012f 289 void lineType( int type );
codeman 5:4a6254e2012f 290
codeman 5:4a6254e2012f 291 /** Set line drawing width
codeman 6:83cada1140d4 292 * @param[in] width in pixels
codeman 5:4a6254e2012f 293 *
codeman 5:4a6254e2012f 294 *
codeman 5:4a6254e2012f 295 */
codeman 5:4a6254e2012f 296 void lineWidth( int width );
codeman 5:4a6254e2012f 297 /** Draw circle in current color at current x y
codeman 0:65606abcae36 298 *
codeman 6:83cada1140d4 299 * @param[in] radius diameter of circle
codeman 6:83cada1140d4 300 * @param[in] filled true for a filled box outline if false
codeman 0:65606abcae36 301 */
codeman 0:65606abcae36 302 void circle(int radius, bool filled);
codeman 0:65606abcae36 303
codeman 6:83cada1140d4 304 /** draw a box from current x y of width and heigth
codeman 0:65606abcae36 305 *
codeman 6:83cada1140d4 306 * @param[in] width
codeman 6:83cada1140d4 307 * @param[in] heigth
codeman 6:83cada1140d4 308 * @param[in] filled true for a filled box outline if false
codeman 0:65606abcae36 309 */
codeman 6:83cada1140d4 310 void box(int width, int heigth, bool filled);
codeman 0:65606abcae36 311
codeman 0:65606abcae36 312 /** set backlight brightness
codeman 0:65606abcae36 313 *
codeman 6:83cada1140d4 314 * @param[in] level is brightness 0=off 100=full in steps of 32
codeman 0:65606abcae36 315 */
codeman 6:83cada1140d4 316 void light(int level);
codeman 5:4a6254e2012f 317
codeman 5:4a6254e2012f 318 /** Send a command direct to display
codeman 5:4a6254e2012f 319 * @param str command string
codeman 3:28e71ce23bfd 320 *
codeman 5:4a6254e2012f 321 * Example:\n
codeman 5:4a6254e2012f 322 * @code
codeman 5:4a6254e2012f 323 * lcd.sendCommand( "cls" ); // clear display
codeman 5:4a6254e2012f 324 * @endcode
codeman 3:28e71ce23bfd 325 */
codeman 3:28e71ce23bfd 326 void sendCommand( char *str );
codeman 5:4a6254e2012f 327
codeman 5:4a6254e2012f 328 /** Return Xmax of display
codeman 5:4a6254e2012f 329 * @return int Xmax of display
codeman 1:c7659c8af0d3 330 *
codeman 1:c7659c8af0d3 331 */
codeman 1:c7659c8af0d3 332 int getXmax( void );
codeman 5:4a6254e2012f 333
codeman 5:4a6254e2012f 334 /** Return Ymax of display
codeman 5:4a6254e2012f 335 * @return int Ymax of display
codeman 5:4a6254e2012f 336 *
codeman 5:4a6254e2012f 337 */
codeman 5:4a6254e2012f 338 int getYmax( void );
codeman 5:4a6254e2012f 339
codeman 5:4a6254e2012f 340 /** Send a string of data to display
codeman 5:4a6254e2012f 341 *
codeman 5:4a6254e2012f 342 */
codeman 5:4a6254e2012f 343 void sendString( char *str );
codeman 5:4a6254e2012f 344
codeman 5:4a6254e2012f 345 /** Set stringID to display
codeman 5:4a6254e2012f 346 * @param ID string ID to write
codeman 5:4a6254e2012f 347 * @param str string to write
codeman 5:4a6254e2012f 348 *
codeman 5:4a6254e2012f 349 */
codeman 5:4a6254e2012f 350 void setStringID( int ID, char *str );
codeman 5:4a6254e2012f 351
codeman 5:4a6254e2012f 352 /** Get stringID from Display
codeman 5:4a6254e2012f 353 * @param ID string ID to read
codeman 5:4a6254e2012f 354 * @param str string to put data in
codeman 5:4a6254e2012f 355 *
codeman 5:4a6254e2012f 356 * Example:
codeman 5:4a6254e2012f 357 * @code
codeman 5:4a6254e2012f 358 * lcd.getstringID(66, ezVer); // get ezLCD Firmware version
codeman 5:4a6254e2012f 359 * lcd.print(ezVer); // print version
codeman 5:4a6254e2012f 360 * @endcode
codeman 5:4a6254e2012f 361 */
codeman 5:4a6254e2012f 362 void getStringID( int ID, char *str );
codeman 5:4a6254e2012f 363
codeman 5:4a6254e2012f 364 /** print string at current x y
codeman 5:4a6254e2012f 365 * @param str string prints directly to display
codeman 5:4a6254e2012f 366 */
codeman 5:4a6254e2012f 367 void print( char *str);
codeman 5:4a6254e2012f 368
codeman 5:4a6254e2012f 369 /** Set widget font
codeman 5:4a6254e2012f 370 * Fonts are located in the flash drive of the display\n
codeman 5:4a6254e2012f 371 * font 0 and font 1 are builtin fonts and are much faster to draw\n
codeman 5:4a6254e2012f 372 * in the /EZUSERS/FONTS and /EZSYS/FONTS directory\n
codeman 5:4a6254e2012f 373 * use the ezLCD3xx font convert utilty to convert true type fonts
codeman 5:4a6254e2012f 374 * @param str font name
codeman 5:4a6254e2012f 375 */
codeman 5:4a6254e2012f 376 void fontw( int id, char *str);
codeman 5:4a6254e2012f 377
codeman 6:83cada1140d4 378 void fontw( int ID, int font);
codeman 1:c7659c8af0d3 379 /**
codeman 1:c7659c8af0d3 380 *
codeman 1:c7659c8af0d3 381 *
codeman 5:4a6254e2012f 382 *
codeman 1:c7659c8af0d3 383 */
codeman 5:4a6254e2012f 384 void font(char *str);
codeman 5:4a6254e2012f 385
codeman 5:4a6254e2012f 386 /**
codeman 5:4a6254e2012f 387 *
codeman 0:65606abcae36 388 *
codeman 0:65606abcae36 389 *
codeman 0:65606abcae36 390 */
codeman 5:4a6254e2012f 391 void fontO( bool dir );
codeman 5:4a6254e2012f 392
codeman 1:c7659c8af0d3 393 /**
codeman 1:c7659c8af0d3 394 *
codeman 1:c7659c8af0d3 395 *
codeman 5:4a6254e2012f 396 *
codeman 1:c7659c8af0d3 397 */
codeman 5:4a6254e2012f 398 void clipArea( int l, int t, int r, int b);
codeman 5:4a6254e2012f 399
codeman 3:28e71ce23bfd 400 /**
codeman 3:28e71ce23bfd 401 *
codeman 3:28e71ce23bfd 402 *
codeman 5:4a6254e2012f 403 *
codeman 5:4a6254e2012f 404 */
codeman 5:4a6254e2012f 405 void clipEnable( bool enable );
codeman 5:4a6254e2012f 406
codeman 5:4a6254e2012f 407 /** Sets color themes for widgets
codeman 5:4a6254e2012f 408 *
codeman 5:4a6254e2012f 409 *
codeman 3:28e71ce23bfd 410 */
codeman 3:28e71ce23bfd 411 void theme(int ID, int EmbossDkColor, int EmbossLtColor, int TextColor0, int TextColor1, int TextColorDisabled, int Color0, int Color1, int ColorDisabled, int CommonBkColor, int Fontw);
codeman 5:4a6254e2012f 412
codeman 3:28e71ce23bfd 413 /**
codeman 3:28e71ce23bfd 414 *
codeman 3:28e71ce23bfd 415 *
codeman 5:4a6254e2012f 416 *
codeman 5:4a6254e2012f 417 */
codeman 5:4a6254e2012f 418 void groupBox( int ID, int x, int y, int width, int height, int options, int theme, int stringID) ;
codeman 5:4a6254e2012f 419
codeman 5:4a6254e2012f 420 /** Analog Meter Widget
codeman 5:4a6254e2012f 421 *
codeman 5:4a6254e2012f 422 *
codeman 3:28e71ce23bfd 423 */
codeman 1:c7659c8af0d3 424 //ameter [ID][x][y][width][height][options][value][min][max][theme][stringID][type]
codeman 1:c7659c8af0d3 425 void ameter( int ID, int x, int y, int w, int h, int options, int value, int min, int max, int theme, int stringID, int type);
codeman 5:4a6254e2012f 426
codeman 5:4a6254e2012f 427 /** Touchzone Widget
codeman 1:c7659c8af0d3 428 *
codeman 1:c7659c8af0d3 429 *
codeman 1:c7659c8af0d3 430 */
codeman 1:c7659c8af0d3 431 void touchZone( int ID, int x, int y, int w, int h, bool option);
codeman 5:4a6254e2012f 432
codeman 5:4a6254e2012f 433 /** Button Widget
codeman 1:c7659c8af0d3 434 *
codeman 1:c7659c8af0d3 435 *
codeman 1:c7659c8af0d3 436 */
codeman 1:c7659c8af0d3 437 void button( int ID, int x, int y, int w, int h, int option, int align, int radius, int theme, int stringID );
codeman 5:4a6254e2012f 438
codeman 5:4a6254e2012f 439 /** Display Bitmap
codeman 5:4a6254e2012f 440 * Display Bitmap at current x y \n
codeman 5:4a6254e2012f 441 * supports GIF BMP JPG \n
codeman 5:4a6254e2012f 442 * images are located in the /EZUSERS/FONTS and /EZSYS/FONTS directory
codeman 5:4a6254e2012f 443 * @param str filename
codeman 1:c7659c8af0d3 444 */
codeman 3:28e71ce23bfd 445 void image( char *str );
codeman 5:4a6254e2012f 446
codeman 5:4a6254e2012f 447 /** Display Bitmap
codeman 5:4a6254e2012f 448 * Display Bitmap at specfied x y \n
codeman 5:4a6254e2012f 449 * supports GIF BMP JPG \n
codeman 5:4a6254e2012f 450 * images are located in the /EZUSERS/FONTS and /EZSYS/FONTS directory
codeman 5:4a6254e2012f 451 * @param x x location to start bitmap
codeman 5:4a6254e2012f 452 * @param y y location to start bitmap
codeman 5:4a6254e2012f 453 * @param str filename
codeman 3:28e71ce23bfd 454 */
codeman 3:28e71ce23bfd 455 void image( int x, int y, char *str );
codeman 5:4a6254e2012f 456
codeman 5:4a6254e2012f 457 /** StaticBox Widget
codeman 3:28e71ce23bfd 458 *
codeman 3:28e71ce23bfd 459 *
codeman 3:28e71ce23bfd 460 *
codeman 3:28e71ce23bfd 461 */
codeman 3:28e71ce23bfd 462 void staticText( int ID, int x, int y, int w, int h, int option, int theme, int stringID);
codeman 5:4a6254e2012f 463
codeman 5:4a6254e2012f 464 /** ProgressBar Widget
codeman 5:4a6254e2012f 465 * @param ID
codeman 5:4a6254e2012f 466 * @param x
codeman 5:4a6254e2012f 467 * @param y
codeman 5:4a6254e2012f 468 * @param w
codeman 5:4a6254e2012f 469 * @param h
codeman 5:4a6254e2012f 470 * @param option
codeman 5:4a6254e2012f 471 * @param value
codeman 5:4a6254e2012f 472 * @param max
codeman 5:4a6254e2012f 473 * @param theme
codeman 5:4a6254e2012f 474 * @param stringID
codeman 3:28e71ce23bfd 475 *
codeman 3:28e71ce23bfd 476 *
codeman 3:28e71ce23bfd 477 */
codeman 3:28e71ce23bfd 478 void progressBar(int ID, int x, int y, int w, int h, int option, int value, int max, int theme, int stringID);
codeman 5:4a6254e2012f 479
codeman 5:4a6254e2012f 480 /** Slider Widget
codeman 5:4a6254e2012f 481 * @param ID
codeman 5:4a6254e2012f 482 * @param x
codeman 5:4a6254e2012f 483 * @param y
codeman 5:4a6254e2012f 484 * @param w
codeman 5:4a6254e2012f 485 * @param h
codeman 5:4a6254e2012f 486 * @param option
codeman 5:4a6254e2012f 487 * @param range
codeman 5:4a6254e2012f 488 * @param res
codeman 5:4a6254e2012f 489 * @param value
codeman 5:4a6254e2012f 490 * @param theme
codeman 5:4a6254e2012f 491 *
codeman 5:4a6254e2012f 492 */
codeman 5:4a6254e2012f 493 void slider(int ID, int x, int y, int w, int h, int option, int range, int res, int value, int theme);
codeman 5:4a6254e2012f 494 /** wstate
codeman 3:28e71ce23bfd 495 *
codeman 3:28e71ce23bfd 496 *
codeman 3:28e71ce23bfd 497 *
codeman 3:28e71ce23bfd 498 */
codeman 3:28e71ce23bfd 499 void wstate( int ID, int option );
codeman 5:4a6254e2012f 500
codeman 5:4a6254e2012f 501 /** Wvalue set widget values
codeman 5:4a6254e2012f 502 * @param ID widget ID to update
codeman 5:4a6254e2012f 503 * @param value widget value to update
codeman 3:28e71ce23bfd 504 */
codeman 4:f4dde1f3baad 505 void wvalue( int ID, int value);
codeman 5:4a6254e2012f 506
codeman 5:4a6254e2012f 507 /** Wstack is a 32 level stack of widget events
codeman 5:4a6254e2012f 508 * @param type LIFO - Get the last widget event off the stack
codeman 5:4a6254e2012f 509 * @param type FIFO - Get the first widget event off the stack
codeman 5:4a6254e2012f 510 * @param type CLEAR - Clear stack
codeman 5:4a6254e2012f 511 * @returns widget id and even touch, release
codeman 3:28e71ce23bfd 512 */
codeman 1:c7659c8af0d3 513 unsigned int wstack( int type );
codeman 5:4a6254e2012f 514
codeman 0:65606abcae36 515 /** Send a character directly to the serial interface
codeman 1:c7659c8af0d3 516 * @param c The character to send to the
codeman 0:65606abcae36 517 */
codeman 0:65606abcae36 518 int putc(int c);
codeman 1:c7659c8af0d3 519
codeman 0:65606abcae36 520 /** Receive a character directly to the serial interface
codeman 1:c7659c8af0d3 521 * @returns c The character received from the
codeman 0:65606abcae36 522 */
codeman 0:65606abcae36 523 int getc();
codeman 0:65606abcae36 524
codeman 0:65606abcae36 525 /**
codeman 5:4a6254e2012f 526 * Numerical values for the EarthSEMPL commands.
codeman 0:65606abcae36 527 */
codeman 0:65606abcae36 528
codeman 0:65606abcae36 529 enum Commands {
codeman 0:65606abcae36 530 Command= 0, /**< Direct command. */
codeman 0:65606abcae36 531 Status= 1,
codeman 0:65606abcae36 532 Clr_Screen= 2, /**< Clear to provided color. */
codeman 0:65606abcae36 533 Ping= 3, /**< Return Pong */
codeman 0:65606abcae36 534 zBeep= 4, /**< Beep provided duration
codeman 0:65606abcae36 535 *(frequency fixed) */
codeman 0:65606abcae36 536 Light= 5, /**< \c 0 (off) to \c 100 (on) */
codeman 0:65606abcae36 537 Color= 6,
codeman 0:65606abcae36 538 eColor_ID= 7,
codeman 0:65606abcae36 539 Font= 10, /**< Font number. */
codeman 0:65606abcae36 540 Fontw= 11, /**< Font number widget. */
codeman 0:65606abcae36 541 Font_Orient= 12, /**< Horizontal or vertical. */
codeman 0:65606abcae36 542 Line_Width= 13, /**< 1 or 3. */
codeman 0:65606abcae36 543 Line_Type= 14, /**< 1=dot dot 2=dash dash. */
codeman 1:c7659c8af0d3 544 XY= 15, /**< X and Y. */
codeman 0:65606abcae36 545 StringID= 16, /**< SID ASCII String or File Name that
codeman 0:65606abcae36 546 * ends with 0. */
codeman 0:65606abcae36 547 Plot= 17, /**< Place Pixel at X and Y. */
codeman 0:65606abcae36 548 Line= 18, /**< Draw a line to X and Y. */
codeman 0:65606abcae36 549 Box= 19, /**< Draws a Box to X and Y optional
codeman 0:65606abcae36 550 * fill. */
codeman 0:65606abcae36 551 Circle= 20, /**< Draws a Circle with Radius optional
codeman 0:65606abcae36 552 * fill */
codeman 0:65606abcae36 553 Arc= 21, /**< Draws an Arc with Radius and Begin
codeman 0:65606abcae36 554 * Angle to End Angle. */
codeman 0:65606abcae36 555 Pie= 22, /**< Draws a Pie figure with Radius and
codeman 0:65606abcae36 556 * Begin Angle to End Angle and fills
codeman 0:65606abcae36 557 * it. */
codeman 0:65606abcae36 558 Picture= 24, /**< Places a Picture on display. */
codeman 0:65606abcae36 559 Print= 25, /**< Places the string on display which
codeman 0:65606abcae36 560 * ends with 0. */
codeman 0:65606abcae36 561 Beep_Freq= 26, /**< Set the beeper frequency. */
codeman 0:65606abcae36 562 Calibrate= 28, /**< Calibrate touch screen. */
codeman 0:65606abcae36 563 zReset= 29, /**< Reset. */
codeman 0:65606abcae36 564 Rec_Macro= 30, /**< Record Macro to flash drive. */
codeman 0:65606abcae36 565 Play_Macro= 31, /**< Play Macro. */
codeman 0:65606abcae36 566 Stop_Macro= 32, /**< Stop Macro. */
codeman 0:65606abcae36 567 Pause_Macro= 33, /**< Pause n msec. */
codeman 0:65606abcae36 568 Loop_Macro= 34, /**< Loop on Macro. */
codeman 0:65606abcae36 569 Speed_Macro= 35, /**< Set the macro speed. */
codeman 0:65606abcae36 570 Peri= 36,
codeman 0:65606abcae36 571 ConfigIO= 37,
codeman 0:65606abcae36 572 IO= 38,
codeman 0:65606abcae36 573 IOG= 39,
codeman 0:65606abcae36 574 Security= 40, /**< Set drive security string. */
codeman 0:65606abcae36 575 Location= 41, /**< LID Location Vlaue. */
codeman 0:65606abcae36 576 Upgrade= 43,
codeman 0:65606abcae36 577 Parameters= 45,
codeman 0:65606abcae36 578 ClipEnable= 46, /**< Set clip Enable. */
codeman 0:65606abcae36 579 ClipArea= 47, /**< Set clip area. */
codeman 0:65606abcae36 580 /* Filesystem operations */
codeman 0:65606abcae36 581 Comment= 50,
codeman 0:65606abcae36 582 Fsgetcwd= 51,
codeman 0:65606abcae36 583 Fschdir= 52,
codeman 0:65606abcae36 584 Fsmkdir= 53,
codeman 0:65606abcae36 585 Fsrmdir= 54,
codeman 0:65606abcae36 586 Fsdir= 55,
codeman 0:65606abcae36 587 Fscopy= 56,
codeman 0:65606abcae36 588 Fsrename= 57,
codeman 0:65606abcae36 589 Fsremove= 58,
codeman 0:65606abcae36 590 Fsmore= 59,
codeman 0:65606abcae36 591 Format= 60, /**< Format Flash Drive if string1 =
codeman 0:65606abcae36 592 * "ezLCD" */
codeman 0:65606abcae36 593 If= 61,
codeman 0:65606abcae36 594 Cmd= 62,
codeman 0:65606abcae36 595 /* Widget commands */
codeman 0:65606abcae36 596 Set_Button= 70, /**< Widget Button. */
codeman 0:65606abcae36 597 Set_CheckBox= 71, /**< Widget Checkbox. */
codeman 0:65606abcae36 598 Set_Gbox= 72, /**< Widget Group Box. */
codeman 0:65606abcae36 599 Set_RadioButton= 73, /**< Widget Radio Button. */
codeman 0:65606abcae36 600 Set_DMeter= 74, /**< Widget Digital Meter. */
codeman 0:65606abcae36 601 DMeter_Value= 75, /**< Set DMeter value. */
codeman 0:65606abcae36 602 Set_AMeter= 76, /**< Widget Analog Meter. */
codeman 0:65606abcae36 603 AMeter_Value= 77, /**< Set AMeter value. */
codeman 0:65606abcae36 604 AMeter_Color= 78, /**< Set AMeter color */
codeman 0:65606abcae36 605 Set_TouchZone= 79, /**< touch zone */
codeman 0:65606abcae36 606 Set_Dial= 80, /**< Widget RoundDial. */
codeman 0:65606abcae36 607 Set_Slider= 82, /**< Widget Slider. */
codeman 0:65606abcae36 608 Set_Progress= 85, /**< Widget Progress bar. */
codeman 0:65606abcae36 609 Progress_Value= 86, /**< Progress value. */
codeman 0:65606abcae36 610 Set_StaticText= 87, /**< Widget Static text. */
codeman 0:65606abcae36 611 StaticText_Value= 88, /**< Static text Value. */
codeman 0:65606abcae36 612 Choice= 89, /**< Widget get choice. */
codeman 0:65606abcae36 613 Widget_Theme= 90, /**< Widget Scheme. */
codeman 0:65606abcae36 614 Widget_Values= 91, /**<Widget Values (Slider and Dial in this version).*/
codeman 0:65606abcae36 615 Widget_State= 92, /**<Widget State (Button, checkbox, radiobutton in this version).*/
codeman 0:65606abcae36 616 // no id returns the id of the last touched
codeman 0:65606abcae36 617 Mode= 98,
codeman 0:65606abcae36 618 Comport= 99,
codeman 0:65606abcae36 619 Xmax= 100, /**< Return Xmax width. */
codeman 0:65606abcae36 620 Ymax= 101, /**< Return Ymax height. */
codeman 0:65606abcae36 621 Wait= 102, /**< Wait for touch. */
codeman 0:65606abcae36 622 Waitn= 103, /**< Wait for no touch. */
codeman 0:65606abcae36 623 Waitt= 104, /**< Wait for touch. */
codeman 0:65606abcae36 624 Threshold= 105, /**< Touch threshold. */
codeman 0:65606abcae36 625 Verbose= 106, /**< Controls the verbose mode. */
codeman 0:65606abcae36 626 Lecho= 107, /**< Controls the echo mode. */
codeman 0:65606abcae36 627 Xtouch= 110, /**< return touchX. */
codeman 0:65606abcae36 628 Ytouch= 111, /**< return touchY. */
codeman 0:65606abcae36 629 Stouch= 112, /**< return touchS. */
codeman 0:65606abcae36 630 Wquiet= 113,
codeman 0:65606abcae36 631 Wstack= 114,
codeman 0:65606abcae36 632 };
codeman 1:c7659c8af0d3 633
codeman 0:65606abcae36 634 private:
codeman 0:65606abcae36 635 Serial _ser;
codeman 0:65606abcae36 636 virtual int _putc(int c);
codeman 0:65606abcae36 637 virtual int _getc();
codeman 0:65606abcae36 638 };
codeman 0:65606abcae36 639
codeman 0:65606abcae36 640
codeman 0:65606abcae36 641 #endif