mbed library for earthlcd ezLCD3xx line of displays
Dependencies: MMA8451Q SDFileSystem TSI ezLCDLib mbed
go here for library http://mbed.org/users/codeman/code/ezLCDLib/
main.cpp@2:839437baa4db, 2013-05-13 (annotated)
- Committer:
- codeman
- Date:
- Mon May 13 18:01:07 2013 +0000
- Revision:
- 2:839437baa4db
- Parent:
- 1:d8871919d781
Public Beta;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
codeman | 1:d8871919d781 | 1 | /** |
codeman | 1:d8871919d781 | 2 | * |
codeman | 1:d8871919d781 | 3 | * |
codeman | 1:d8871919d781 | 4 | * |
codeman | 1:d8871919d781 | 5 | * |
codeman | 1:d8871919d781 | 6 | */ |
codeman | 0:b4366af9dee8 | 7 | #include "mbed.h" |
codeman | 0:b4366af9dee8 | 8 | #include "ezLCDLib.h" |
codeman | 1:d8871919d781 | 9 | |
codeman | 2:839437baa4db | 10 | enum { BLACK, GRAY, SILVER, WHITE, RED, MAROON, YELLOW, OLIVE, LIME, GREEN, AQUA, TEAL, BLUE, NAVY, FUCHSIA, PURPLE }; |
codeman | 2:839437baa4db | 11 | |
codeman | 2:839437baa4db | 12 | #ifdef MKL25Z4_H_ |
codeman | 1:d8871919d781 | 13 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
codeman | 2:839437baa4db | 14 | #include "TSISensor.h" |
codeman | 2:839437baa4db | 15 | #include "MMA8451Q.h" |
codeman | 2:839437baa4db | 16 | #include "SDFileSystem.h" |
codeman | 2:839437baa4db | 17 | SDFileSystem sd(PTD2, PTD3, PTD1, PTD5, "sd"); |
codeman | 1:d8871919d781 | 18 | InterruptIn ezLCD3Int( PTD4 ); // interrupt instance for touch |
codeman | 1:d8871919d781 | 19 | DigitalOut _nrst(PTC7); |
codeman | 2:839437baa4db | 20 | DigitalOut rstVS(PTA13); |
codeman | 1:d8871919d781 | 21 | ezLCD3 lcd(PTA2, PTA1); //rx,tx |
codeman | 1:d8871919d781 | 22 | TSISensor tsi; |
codeman | 1:d8871919d781 | 23 | AnalogIn adc1(PTB0); |
codeman | 1:d8871919d781 | 24 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
codeman | 2:839437baa4db | 25 | DigitalOut myled(LED_RED); |
codeman | 1:d8871919d781 | 26 | #endif |
codeman | 1:d8871919d781 | 27 | |
codeman | 2:839437baa4db | 28 | #ifdef __LPC17xx_H__ |
codeman | 2:839437baa4db | 29 | InterruptIn ezLCD3Int( p7 ); // interrupt instance for touch |
codeman | 2:839437baa4db | 30 | DigitalOut _nrst(p8); |
codeman | 2:839437baa4db | 31 | ezLCD3 lcd(p9, p10); //rx,tx |
codeman | 2:839437baa4db | 32 | AnalogIn adc1(p20); |
codeman | 2:839437baa4db | 33 | DigitalOut myled1(LED1); |
codeman | 2:839437baa4db | 34 | DigitalOut myled2(LED2); |
codeman | 2:839437baa4db | 35 | DigitalOut myled3(LED3); |
codeman | 2:839437baa4db | 36 | DigitalOut myled4(LED4); |
codeman | 2:839437baa4db | 37 | #endif |
codeman | 2:839437baa4db | 38 | |
codeman | 2:839437baa4db | 39 | // Serial for Debug |
codeman | 2:839437baa4db | 40 | //Serial pc(USBTX, USBRX); |
codeman | 2:839437baa4db | 41 | |
codeman | 1:d8871919d781 | 42 | volatile bool ezLCD3Touch = false; |
codeman | 1:d8871919d781 | 43 | |
codeman | 1:d8871919d781 | 44 | int color = BLACK; |
codeman | 1:d8871919d781 | 45 | int temp; |
codeman | 1:d8871919d781 | 46 | int touch=0; |
codeman | 1:d8871919d781 | 47 | int adc1Count = 0; |
codeman | 1:d8871919d781 | 48 | float adc1Average = 0; |
codeman | 1:d8871919d781 | 49 | |
codeman | 1:d8871919d781 | 50 | char ezID[20]; |
codeman | 1:d8871919d781 | 51 | char ezVER[20]; |
codeman | 1:d8871919d781 | 52 | char adcBuf[20]; |
codeman | 2:839437baa4db | 53 | char buffer[80]; |
codeman | 1:d8871919d781 | 54 | void ezLCD3Isr( void ) |
codeman | 1:d8871919d781 | 55 | { |
codeman | 1:d8871919d781 | 56 | ezLCD3Touch = true; |
codeman | 1:d8871919d781 | 57 | } |
codeman | 2:839437baa4db | 58 | void drawKeyPad( int x, int y, int bs, int s, bool echo ) |
codeman | 2:839437baa4db | 59 | { |
codeman | 2:839437baa4db | 60 | lcd.setStringID(50,"0"); |
codeman | 2:839437baa4db | 61 | lcd.setStringID(51,"1"); |
codeman | 2:839437baa4db | 62 | lcd.setStringID(52,"2"); |
codeman | 2:839437baa4db | 63 | lcd.setStringID(53,"3"); |
codeman | 2:839437baa4db | 64 | lcd.setStringID(54,"4"); |
codeman | 2:839437baa4db | 65 | lcd.setStringID(55,"5"); |
codeman | 2:839437baa4db | 66 | lcd.setStringID(56,"6"); |
codeman | 2:839437baa4db | 67 | lcd.setStringID(57,"7"); |
codeman | 2:839437baa4db | 68 | lcd.setStringID(58,"8"); |
codeman | 2:839437baa4db | 69 | lcd.setStringID(59,"9"); |
codeman | 2:839437baa4db | 70 | lcd.setStringID(60,"<"); |
codeman | 2:839437baa4db | 71 | lcd.setStringID(61,"0"); |
codeman | 2:839437baa4db | 72 | lcd.setStringID(62,"EN"); |
codeman | 1:d8871919d781 | 73 | |
codeman | 2:839437baa4db | 74 | lcd.staticText( 50, x, y, (bs*3)-5, s, 8, 0, 4); |
codeman | 2:839437baa4db | 75 | y +=bs; |
codeman | 2:839437baa4db | 76 | lcd.button(51, x, y, s, s,1,0,10,0,51); |
codeman | 2:839437baa4db | 77 | lcd.button(52, x + bs, y, s, s,1,0,10,0,52); |
codeman | 2:839437baa4db | 78 | lcd.button(53, x + (bs*2), y, s, s,1,0,10,0,53); |
codeman | 2:839437baa4db | 79 | |
codeman | 2:839437baa4db | 80 | lcd.button(54, x, y + bs, s, s,1,0,10,0,54); |
codeman | 2:839437baa4db | 81 | lcd.button(55, x + bs ,y + bs, s, s,1,0,10,0,55); |
codeman | 2:839437baa4db | 82 | lcd.button(56, x + (bs*2), y + bs, s, s,1,0,10,0,56); |
codeman | 2:839437baa4db | 83 | |
codeman | 2:839437baa4db | 84 | lcd.button(57, x, y+(bs*2), s, s,1,0,10,0,57); |
codeman | 2:839437baa4db | 85 | lcd.button(58, x+bs, y+(bs*2), s, s,1,0,10,0,58); |
codeman | 2:839437baa4db | 86 | lcd.button(59, x+(bs*2), y+(bs*2), s, s,1,0,10,0,59); |
codeman | 2:839437baa4db | 87 | |
codeman | 2:839437baa4db | 88 | lcd.button(60, x, y+(bs*3), s, s,1,0,10,0,60); |
codeman | 2:839437baa4db | 89 | lcd.button(61, x+bs, y+(bs*3), s, s,1,0,10,0,61); |
codeman | 2:839437baa4db | 90 | lcd.button(62, x+(bs*2), y+(bs*3), s, s,1,0,10,0,62); |
codeman | 2:839437baa4db | 91 | |
codeman | 2:839437baa4db | 92 | } |
codeman | 1:d8871919d781 | 93 | int main() |
codeman | 1:d8871919d781 | 94 | { |
codeman | 2:839437baa4db | 95 | //pc.baud(115200); |
codeman | 1:d8871919d781 | 96 | _nrst=0; |
codeman | 2:839437baa4db | 97 | wait(0.1); |
codeman | 1:d8871919d781 | 98 | _nrst=1; |
codeman | 2:839437baa4db | 99 | //KL25Z rstVS = 0; |
codeman | 2:839437baa4db | 100 | /* |
codeman | 2:839437baa4db | 101 | FILE *fp = fopen("/sd/sdtest.txt", "r"); |
codeman | 2:839437baa4db | 102 | if(fp == NULL) { |
codeman | 2:839437baa4db | 103 | error("\r\nCould not open file for read\n"); |
codeman | 2:839437baa4db | 104 | } |
codeman | 2:839437baa4db | 105 | */ |
codeman | 2:839437baa4db | 106 | wait(4); |
codeman | 1:d8871919d781 | 107 | while(!lcd.sync()); |
codeman | 1:d8871919d781 | 108 | ezLCD3Int.fall(&ezLCD3Isr); |
codeman | 1:d8871919d781 | 109 | ezLCD3Touch = false; |
codeman | 2:839437baa4db | 110 | myled=0; |
codeman | 1:d8871919d781 | 111 | lcd.cls(BLACK); |
codeman | 2:839437baa4db | 112 | // fgets(buffer, 64, fp); |
codeman | 2:839437baa4db | 113 | // lcd.print(buffer); |
codeman | 2:839437baa4db | 114 | lcd.font("0"); |
codeman | 2:839437baa4db | 115 | lcd.fontw(0,0); |
codeman | 2:839437baa4db | 116 | lcd.theme(0, 111, 106, 3, 130, 0, 13, 12, 101, 100, 0); |
codeman | 1:d8871919d781 | 117 | lcd.xy(0,0);//11 |
codeman | 1:d8871919d781 | 118 | lcd.color(WHITE);//3 |
codeman | 1:d8871919d781 | 119 | lcd.light(50);//8 |
codeman | 1:d8871919d781 | 120 | lcd.xy(40,10);//9 |
codeman | 1:d8871919d781 | 121 | lcd.print("--==[\\[28m Hello \\[65mMBED\\[28m World \\[3m]==--");//10 |
codeman | 1:d8871919d781 | 122 | lcd.xy(20,100);//11 |
codeman | 1:d8871919d781 | 123 | lcd.color(YELLOW);//12 |
codeman | 1:d8871919d781 | 124 | lcd.setStringID( 2,"Button1"); |
codeman | 1:d8871919d781 | 125 | lcd.setStringID( 3,"Button2"); |
codeman | 1:d8871919d781 | 126 | lcd.button(2,20,40,100,40,1,0,10,0,2); |
codeman | 1:d8871919d781 | 127 | lcd.button(3,200,40,100,40,1,0,10,0,3); |
codeman | 1:d8871919d781 | 128 | lcd.getStringID( 65,ezID); |
codeman | 1:d8871919d781 | 129 | lcd.getStringID( 66,ezVER); |
codeman | 1:d8871919d781 | 130 | lcd.print(ezID); |
codeman | 1:d8871919d781 | 131 | lcd.color(PURPLE); |
codeman | 1:d8871919d781 | 132 | lcd.xy(20,120);//11 |
codeman | 1:d8871919d781 | 133 | lcd.print(ezVER); |
codeman | 1:d8871919d781 | 134 | lcd.color(TEAL); |
codeman | 1:d8871919d781 | 135 | lcd.xy(20,140); |
codeman | 1:d8871919d781 | 136 | lcd.printf("MaxX %d MaxY %d", lcd.getXmax()+1, lcd.getYmax()+1); //13 14 |
codeman | 1:d8871919d781 | 137 | lcd.light(5);//15 |
codeman | 1:d8871919d781 | 138 | lcd.light(100);//16 |
codeman | 2:839437baa4db | 139 | lcd.image(20,165,"0.gif"); |
codeman | 2:839437baa4db | 140 | lcd.image(55,165,"1.gif"); |
codeman | 2:839437baa4db | 141 | lcd.image(90,165,"2.gif"); |
codeman | 2:839437baa4db | 142 | lcd.image(125,165,"3.gif"); |
codeman | 1:d8871919d781 | 143 | lcd.color(WHITE);//17 |
codeman | 1:d8871919d781 | 144 | lcd.setStringID(4, "meter"); |
codeman | 1:d8871919d781 | 145 | lcd.setStringID(5, "%"); |
codeman | 1:d8871919d781 | 146 | lcd.setStringID(6, "X"); |
codeman | 1:d8871919d781 | 147 | lcd.setStringID(7, "Y"); |
codeman | 2:839437baa4db | 148 | lcd.setStringID(8, "Z"); |
codeman | 2:839437baa4db | 149 | lcd.wstack(CLEAR); |
codeman | 2:839437baa4db | 150 | |
codeman | 1:d8871919d781 | 151 | lcd.staticText( 4, 200, 210, 100, 25, 8, 0, 4); |
codeman | 1:d8871919d781 | 152 | lcd.progressBar( 5, 200, 180, 100, 25, 1, 0, 100, 0 , 5); |
codeman | 1:d8871919d781 | 153 | lcd.progressBar( 6, 200, 90, 100, 25, 1, 0, 100, 0 , 6); |
codeman | 2:839437baa4db | 154 | lcd.progressBar( 7, 200, 120, 100, 25, 1, 0, 100, 0 , 7); |
codeman | 2:839437baa4db | 155 | lcd.progressBar( 8, 200, 150, 100, 25, 1, 0, 100, 0 , 8); |
codeman | 1:d8871919d781 | 156 | |
codeman | 2:839437baa4db | 157 | // drawKeyPad(320,10,50,45,true); |
codeman | 1:d8871919d781 | 158 | while(1) { |
codeman | 1:d8871919d781 | 159 | if(ezLCD3Touch) { |
codeman | 1:d8871919d781 | 160 | ezLCD3Touch = false; |
codeman | 1:d8871919d781 | 161 | touch=lcd.wstack(LIFO); |
codeman | 1:d8871919d781 | 162 | lcd.xy(10,210); |
codeman | 1:d8871919d781 | 163 | lcd.color(BLACK); |
codeman | 1:d8871919d781 | 164 | lcd.box(180,20,1); |
codeman | 1:d8871919d781 | 165 | lcd.color(WHITE); |
codeman | 1:d8871919d781 | 166 | switch( touch ) { |
codeman | 1:d8871919d781 | 167 | case 240: |
codeman | 1:d8871919d781 | 168 | lcd.print("Button1 Pressed"); |
codeman | 2:839437baa4db | 169 | myled = 1; |
codeman | 1:d8871919d781 | 170 | break; |
codeman | 1:d8871919d781 | 171 | case 214: |
codeman | 1:d8871919d781 | 172 | lcd.print("Button1 Released"); |
codeman | 2:839437baa4db | 173 | myled = 0; |
codeman | 1:d8871919d781 | 174 | break; |
codeman | 1:d8871919d781 | 175 | case 224: |
codeman | 1:d8871919d781 | 176 | lcd.print("Button1 Cancel"); |
codeman | 1:d8871919d781 | 177 | break; |
codeman | 1:d8871919d781 | 178 | case 340: |
codeman | 1:d8871919d781 | 179 | lcd.print("Button2 Pressed"); |
codeman | 2:839437baa4db | 180 | myled = 1; |
codeman | 1:d8871919d781 | 181 | break; |
codeman | 1:d8871919d781 | 182 | case 314: |
codeman | 1:d8871919d781 | 183 | lcd.print("Button2 Released"); |
codeman | 2:839437baa4db | 184 | myled = 0; |
codeman | 1:d8871919d781 | 185 | break; |
codeman | 1:d8871919d781 | 186 | case 324: |
codeman | 1:d8871919d781 | 187 | lcd.print("Button2 Cancel"); |
codeman | 1:d8871919d781 | 188 | break; |
codeman | 2:839437baa4db | 189 | /* |
codeman | 2:839437baa4db | 190 | case 5140: |
codeman | 2:839437baa4db | 191 | lcd.print("1"); |
codeman | 2:839437baa4db | 192 | myled1 = 0; |
codeman | 2:839437baa4db | 193 | break; |
codeman | 2:839437baa4db | 194 | case 5114: |
codeman | 2:839437baa4db | 195 | lcd.print("1"); |
codeman | 2:839437baa4db | 196 | myled1 = 0; |
codeman | 2:839437baa4db | 197 | break; |
codeman | 2:839437baa4db | 198 | case 5214: |
codeman | 2:839437baa4db | 199 | lcd.print("2"); |
codeman | 2:839437baa4db | 200 | myled1 = 0; |
codeman | 2:839437baa4db | 201 | break; |
codeman | 2:839437baa4db | 202 | case 5314: |
codeman | 2:839437baa4db | 203 | lcd.print("3"); |
codeman | 2:839437baa4db | 204 | myled1 = 0; |
codeman | 2:839437baa4db | 205 | break; |
codeman | 2:839437baa4db | 206 | case 5414: |
codeman | 2:839437baa4db | 207 | lcd.print("4"); |
codeman | 2:839437baa4db | 208 | myled1 = 0; |
codeman | 2:839437baa4db | 209 | break; |
codeman | 2:839437baa4db | 210 | case 5514: |
codeman | 2:839437baa4db | 211 | lcd.print("5"); |
codeman | 2:839437baa4db | 212 | myled1 = 0; |
codeman | 2:839437baa4db | 213 | break; |
codeman | 2:839437baa4db | 214 | case 5614: |
codeman | 2:839437baa4db | 215 | lcd.print("6"); |
codeman | 2:839437baa4db | 216 | myled1 = 0; |
codeman | 2:839437baa4db | 217 | break; |
codeman | 2:839437baa4db | 218 | case 5714: |
codeman | 2:839437baa4db | 219 | lcd.print("7"); |
codeman | 2:839437baa4db | 220 | myled1 = 0; |
codeman | 2:839437baa4db | 221 | break; |
codeman | 2:839437baa4db | 222 | case 5814: |
codeman | 2:839437baa4db | 223 | lcd.print("8"); |
codeman | 2:839437baa4db | 224 | myled1 = 0; |
codeman | 2:839437baa4db | 225 | break; |
codeman | 2:839437baa4db | 226 | case 5914: |
codeman | 2:839437baa4db | 227 | lcd.print("9"); |
codeman | 2:839437baa4db | 228 | myled1 = 0; |
codeman | 2:839437baa4db | 229 | break; |
codeman | 2:839437baa4db | 230 | case 6014: |
codeman | 2:839437baa4db | 231 | lcd.print("<"); |
codeman | 2:839437baa4db | 232 | myled1 = 0; |
codeman | 2:839437baa4db | 233 | break; |
codeman | 2:839437baa4db | 234 | case 6114: |
codeman | 2:839437baa4db | 235 | lcd.print("0"); |
codeman | 2:839437baa4db | 236 | myled1 = 0; |
codeman | 2:839437baa4db | 237 | break; |
codeman | 2:839437baa4db | 238 | case 6214: |
codeman | 2:839437baa4db | 239 | lcd.print("EN"); |
codeman | 2:839437baa4db | 240 | myled1 = 0; |
codeman | 2:839437baa4db | 241 | break; |
codeman | 2:839437baa4db | 242 | */ |
codeman | 1:d8871919d781 | 243 | default: |
codeman | 1:d8871919d781 | 244 | lcd.print("default"); |
codeman | 1:d8871919d781 | 245 | break; |
codeman | 1:d8871919d781 | 246 | } |
codeman | 1:d8871919d781 | 247 | } |
codeman | 2:839437baa4db | 248 | adc1Average += adc1.read(); |
codeman | 2:839437baa4db | 249 | adc1Count ++; |
codeman | 2:839437baa4db | 250 | if (adc1Count == 500) { |
codeman | 2:839437baa4db | 251 | adc1Count=0; |
codeman | 2:839437baa4db | 252 | sprintf(adcBuf, "%1.3f V",(adc1Average/500)*3.3); |
codeman | 2:839437baa4db | 253 | lcd.setStringID(4, adcBuf); |
codeman | 2:839437baa4db | 254 | lcd.wstate(4,REDRAW); |
codeman | 2:839437baa4db | 255 | adc1Average =0; |
codeman | 2:839437baa4db | 256 | } |
codeman | 2:839437baa4db | 257 | if(adc1Count ==250) { |
codeman | 2:839437baa4db | 258 | lcd.wvalue(5,abs( tsi.readPercentage()*100)); |
codeman | 2:839437baa4db | 259 | lcd.wvalue(6,abs(acc.getAccX())*100); |
codeman | 2:839437baa4db | 260 | lcd.wvalue(7,abs(acc.getAccY())*100); |
codeman | 2:839437baa4db | 261 | lcd.wvalue(8,abs(acc.getAccZ())*100); |
codeman | 2:839437baa4db | 262 | } |
codeman | 1:d8871919d781 | 263 | } |
codeman | 1:d8871919d781 | 264 | |
codeman | 1:d8871919d781 | 265 | } |