Full layout 'HUB' with functioning navigation between all screens and active temp/state display

Dependencies:   ID12RFID SPI_TFT_ILI9341 TFT_fonts mbed

Fork of Welcome_Screen_TFT by 'SmOuse'

Committer:
bendavis96
Date:
Thu Jun 16 20:56:50 2016 +0000
Revision:
8:95cd847648cd
Parent:
7:ceeced183454
added active temp and fan/light display, also functioning sub screens.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bendavis96 7:ceeced183454 1
bendavis96 7:ceeced183454 2 //%%%%%% SERVER HUB %%%%%%%
bendavis96 7:ceeced183454 3
dreschpe 0:7c3b9bfd6ead 4
bendavis96 7:ceeced183454 5
bendavis96 7:ceeced183454 6 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bendavis96 7:ceeced183454 7 //%%%%%% Initialisations %%%%%%%%
dreschpe 0:7c3b9bfd6ead 8 #include "stdio.h"
dreschpe 0:7c3b9bfd6ead 9 #include "mbed.h"
dreschpe 0:7c3b9bfd6ead 10 #include "SPI_TFT_ILI9341.h"
bendavis96 7:ceeced183454 11 #include "ID12RFID.h"
dreschpe 0:7c3b9bfd6ead 12 #include "string"
dreschpe 0:7c3b9bfd6ead 13 #include "Arial12x12.h"
dreschpe 0:7c3b9bfd6ead 14 #include "Arial24x23.h"
dreschpe 0:7c3b9bfd6ead 15 #include "Arial28x28.h"
dreschpe 0:7c3b9bfd6ead 16 #include "font_big.h"
cstevens 4:14043cafbec7 17
cstevens 6:18c7288b5e00 18
cstevens 6:18c7288b5e00 19 Serial pc (USBTX,USBRX);
bendavis96 8:95cd847648cd 20 ID12RFID rfid(PTE23);
bendavis96 7:ceeced183454 21 DigitalOut rled(LED1);
bendavis96 7:ceeced183454 22 DigitalOut gled(LED2);
bendavis96 7:ceeced183454 23 DigitalOut bled(LED3);
bendavis96 7:ceeced183454 24
bendavis96 7:ceeced183454 25 int touching = 0;
cstevens 4:14043cafbec7 26
dreschpe 0:7c3b9bfd6ead 27
dreschpe 0:7c3b9bfd6ead 28
pegcjs 3:676adf84c914 29
cstevens 6:18c7288b5e00 30 // the display has a backlight switch on board
bendavis96 7:ceeced183454 31 DigitalOut LCD_LED(PTA13); // LED Display
bendavis96 7:ceeced183454 32 DigitalOut pwr(PTD7); // Power
dreschpe 0:7c3b9bfd6ead 33
dreschpe 0:7c3b9bfd6ead 34 // the TFT is connected to SPI pin 5-7
pegcjs 1:e0479f60cd48 35 //SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p9, p10,"TFT"); // mosi, miso, sclk, cs, reset, dc for lpc1768
cstevens 5:424af4fa03ab 36 SPI_TFT_ILI9341 TFT(PTD2, PTD3, PTD1, PTD5, PTD0, PTA13,"TFT"); // mosi, miso, sclk, cs, reset, dc for frdmkl25z
cstevens 6:18c7288b5e00 37 //NB better combination to use a coherent 2x4 block for lcd
pegcjs 3:676adf84c914 38 // SPI_TFT_ILI9341 TFT(PTD2, PTD3, PTD1, PTA16, PTA17, PTC16,"TFT"); // mosi, miso, sclk, cs, reset, dc for frdmkl25z
bendavis96 7:ceeced183454 39
bendavis96 7:ceeced183454 40 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bendavis96 7:ceeced183454 41 //%%%%%%%%%%% Subroutine to read the x location of the touch point %%%%%%%%%%
bendavis96 7:ceeced183454 42
cstevens 6:18c7288b5e00 43
cstevens 6:18c7288b5e00 44
cstevens 6:18c7288b5e00 45 // need to set x+ to 3V and ground x- then read analogue voltage on ym
cstevens 6:18c7288b5e00 46 //nb need to add a check for actual touch as opposed to random crap
bendavis96 7:ceeced183454 47
cstevens 6:18c7288b5e00 48 int readX()
cstevens 6:18c7288b5e00 49 {
bendavis96 7:ceeced183454 50 int delta=0,xv1=0,xv2=0,k=0;
bendavis96 7:ceeced183454 51
bendavis96 7:ceeced183454 52 AnalogIn yp(PTB3);
bendavis96 7:ceeced183454 53 AnalogIn ym(PTB2);
cstevens 6:18c7288b5e00 54 DigitalOut xp(PTB0);
cstevens 6:18c7288b5e00 55 DigitalOut xm(PTB1);
cstevens 6:18c7288b5e00 56
cstevens 6:18c7288b5e00 57 xp=1; // set positive sdie of x high
cstevens 6:18c7288b5e00 58 xm=0;
cstevens 6:18c7288b5e00 59 // dont need to do anyhting to set low side as it should be fine.
cstevens 6:18c7288b5e00 60 // but do need to disconnect yp
cstevens 6:18c7288b5e00 61 //yp.PinMode(PullNone)
bendavis96 7:ceeced183454 62 for(k=0; k<10; k++) { // make 10 readings to average
bendavis96 7:ceeced183454 63 xv1+=(int)ym.read_u16(); // get value
bendavis96 7:ceeced183454 64 xv2+=(int)yp.read_u16(); // get other value
bendavis96 7:ceeced183454 65 }
bendavis96 7:ceeced183454 66 delta=abs(xv2-xv1)/10;
bendavis96 7:ceeced183454 67 if(delta<300) touching=1;
bendavis96 7:ceeced183454 68 else touching=0;
bendavis96 7:ceeced183454 69 // pc.printf("delta=%d \t %d\n\r",delta,touching);
bendavis96 7:ceeced183454 70 xp=0;
bendavis96 7:ceeced183454 71 xm=0;
bendavis96 7:ceeced183454 72 return(xv2/10); //maybe better to return the average of both....
cstevens 6:18c7288b5e00 73 }
cstevens 6:18c7288b5e00 74 // subroutine to read y values - has different pin functions ..
cstevens 6:18c7288b5e00 75 int readY()
cstevens 6:18c7288b5e00 76 {
bendavis96 7:ceeced183454 77 DigitalOut yp(PTB3);
bendavis96 7:ceeced183454 78 DigitalOut ym(PTB2);
cstevens 6:18c7288b5e00 79 AnalogIn xp(PTB0);
cstevens 6:18c7288b5e00 80 AnalogIn xm(PTB1);
cstevens 6:18c7288b5e00 81
cstevens 6:18c7288b5e00 82 yp=1; // set positive sdie of x high
cstevens 6:18c7288b5e00 83 ym=0;
cstevens 6:18c7288b5e00 84 // dont need to do anyhting to set low side as it should be fine.
cstevens 6:18c7288b5e00 85 // but do need to disconnect yp
cstevens 6:18c7288b5e00 86 //yp.PinMode(PullNone)
cstevens 6:18c7288b5e00 87 int yval=(int)xm.read_u16(); // get value
bendavis96 7:ceeced183454 88
bendavis96 7:ceeced183454 89 yp=0;
bendavis96 7:ceeced183454 90 ym=0;
cstevens 6:18c7288b5e00 91 return(yval);
cstevens 6:18c7288b5e00 92 }
bendavis96 7:ceeced183454 93 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bendavis96 7:ceeced183454 94 //%%%%%% Home Display %%%%%%%
bendavis96 7:ceeced183454 95
bendavis96 7:ceeced183454 96 void start()
bendavis96 7:ceeced183454 97 {
bendavis96 7:ceeced183454 98
bendavis96 7:ceeced183454 99 pwr=1;
bendavis96 7:ceeced183454 100 wait(0.2);
bendavis96 7:ceeced183454 101
bendavis96 7:ceeced183454 102 LCD_LED = 1; // backlight on
bendavis96 7:ceeced183454 103 rled = 1;
bendavis96 7:ceeced183454 104 bled = 1;
bendavis96 7:ceeced183454 105 gled = 1;
bendavis96 7:ceeced183454 106
bendavis96 7:ceeced183454 107 TFT.claim(stdout); // send stdout to the TFT display
bendavis96 7:ceeced183454 108 TFT.set_orientation(1);
bendavis96 7:ceeced183454 109 TFT.background(Black); // set background to black
bendavis96 7:ceeced183454 110 TFT.foreground(Cyan); // set chars to white
bendavis96 7:ceeced183454 111 TFT.locate(80,110);
bendavis96 7:ceeced183454 112 TFT.set_font((unsigned char*) Neu42x35);
bendavis96 7:ceeced183454 113 TFT.cls(); // clear the screen
bendavis96 7:ceeced183454 114 TFT.printf("SmOuse");
bendavis96 7:ceeced183454 115
bendavis96 7:ceeced183454 116 }
bendavis96 7:ceeced183454 117
bendavis96 7:ceeced183454 118 void welcome()
bendavis96 7:ceeced183454 119 {
bendavis96 7:ceeced183454 120 //Greeting
bendavis96 7:ceeced183454 121 TFT.set_font((unsigned char*) Arial24x23);
bendavis96 7:ceeced183454 122 TFT.set_orientation(1);
bendavis96 7:ceeced183454 123 TFT.locate(50,100);
bendavis96 7:ceeced183454 124 TFT.printf("W");
bendavis96 7:ceeced183454 125 wait(0.05);
bendavis96 7:ceeced183454 126 TFT.printf("e");
bendavis96 7:ceeced183454 127 wait(0.05);
bendavis96 7:ceeced183454 128 TFT.printf("l");
bendavis96 7:ceeced183454 129 wait(0.05);
bendavis96 7:ceeced183454 130 TFT.printf("c");
bendavis96 7:ceeced183454 131 wait(0.05);
bendavis96 7:ceeced183454 132 TFT.printf("o");
bendavis96 7:ceeced183454 133 wait(0.05);
bendavis96 7:ceeced183454 134 TFT.printf("m");
bendavis96 7:ceeced183454 135 wait(0.05);
bendavis96 7:ceeced183454 136 TFT.printf("e");
bendavis96 7:ceeced183454 137 wait(0.05);
bendavis96 7:ceeced183454 138 TFT.printf(",");
bendavis96 7:ceeced183454 139 wait(0.05);
bendavis96 7:ceeced183454 140 TFT.printf(" ");
bendavis96 7:ceeced183454 141 wait(0.05);
bendavis96 7:ceeced183454 142 }
bendavis96 7:ceeced183454 143
bendavis96 7:ceeced183454 144
bendavis96 7:ceeced183454 145 void home()
bendavis96 7:ceeced183454 146 {
bendavis96 7:ceeced183454 147 TFT.cls();
bendavis96 7:ceeced183454 148 //show corners
bendavis96 7:ceeced183454 149 TFT.circle(10,10,10,0xffff);
bendavis96 7:ceeced183454 150 wait(0.1);
bendavis96 7:ceeced183454 151 TFT.circle(308,10,10,0xffff);
bendavis96 7:ceeced183454 152 wait(0.1);
bendavis96 7:ceeced183454 153 TFT.circle(10,229,10,0xffff);
bendavis96 7:ceeced183454 154 wait(0.1);
bendavis96 7:ceeced183454 155 TFT.circle(308,229,10,0xffff);
bendavis96 7:ceeced183454 156 wait(0.1);
bendavis96 7:ceeced183454 157 //add menu buttons
bendavis96 8:95cd847648cd 158 TFT.rect(25,200,155,140,0xffff); //lighting
bendavis96 8:95cd847648cd 159 TFT.rect(165,200,295,140,0xffff); //AC
bendavis96 8:95cd847648cd 160 TFT.rect(25,25,93,0,Red); //auto controls
bendavis96 8:95cd847648cd 161
bendavis96 7:ceeced183454 162 //text for buttons
bendavis96 7:ceeced183454 163 TFT.set_font((unsigned char*) Arial12x12);
bendavis96 7:ceeced183454 164 TFT.locate(65,165);
bendavis96 7:ceeced183454 165 TFT.printf("Lighting");
bendavis96 7:ceeced183454 166 TFT.locate(195,165);
bendavis96 7:ceeced183454 167 TFT.printf("AC Control");
bendavis96 8:95cd847648cd 168 TFT.locate(40,10);
bendavis96 8:95cd847648cd 169 TFT.printf("AUTO");
bendavis96 7:ceeced183454 170 }
bendavis96 7:ceeced183454 171
bendavis96 7:ceeced183454 172 void lights()
bendavis96 7:ceeced183454 173 {
bendavis96 7:ceeced183454 174
bendavis96 7:ceeced183454 175 TFT.cls();
bendavis96 7:ceeced183454 176 TFT.locate(55,15);
bendavis96 7:ceeced183454 177 TFT.set_font((unsigned char*) Arial24x23);
bendavis96 7:ceeced183454 178 TFT.printf("Lighting System");
bendavis96 7:ceeced183454 179 //show corners
bendavis96 7:ceeced183454 180 TFT.circle(10,10,10,0xffff);
bendavis96 7:ceeced183454 181 wait(0.1);
bendavis96 7:ceeced183454 182 TFT.circle(308,10,10,0xffff);
bendavis96 7:ceeced183454 183 wait(0.1);
bendavis96 7:ceeced183454 184 TFT.circle(10,229,10,0xffff);
bendavis96 7:ceeced183454 185 wait(0.1);
bendavis96 7:ceeced183454 186 TFT.circle(308,229,10,0xffff);
bendavis96 7:ceeced183454 187 wait(0.1);
bendavis96 7:ceeced183454 188 //add menu buttons
bendavis96 7:ceeced183454 189 TFT.rect(25,200,155,140,0xffff);
bendavis96 8:95cd847648cd 190 TFT.rect(165,110,295,80,0xffff);
bendavis96 8:95cd847648cd 191 TFT.rect(165,155,295,125,0xffff);
bendavis96 8:95cd847648cd 192 TFT.rect(165,200,295,170,0xffff);
bendavis96 7:ceeced183454 193 //text for buttons
bendavis96 7:ceeced183454 194 TFT.set_font((unsigned char*) Arial12x12);
bendavis96 7:ceeced183454 195 TFT.locate(50,165);
bendavis96 7:ceeced183454 196 TFT.printf("LIGHTS OFF");
bendavis96 8:95cd847648cd 197 TFT.locate(230,92);
bendavis96 8:95cd847648cd 198 TFT.printf("3");
bendavis96 8:95cd847648cd 199 TFT.locate(230,137);
bendavis96 8:95cd847648cd 200 TFT.printf("2");
bendavis96 8:95cd847648cd 201 TFT.locate(230,182);
bendavis96 8:95cd847648cd 202 TFT.printf("1");
bendavis96 8:95cd847648cd 203 TFT.locate(6,6);
bendavis96 8:95cd847648cd 204 TFT.printf("X");
bendavis96 7:ceeced183454 205 }
bendavis96 7:ceeced183454 206
bendavis96 7:ceeced183454 207 void temps()
bendavis96 7:ceeced183454 208 {
bendavis96 7:ceeced183454 209
bendavis96 7:ceeced183454 210 TFT.cls();
bendavis96 7:ceeced183454 211 TFT.locate(90,15);
bendavis96 7:ceeced183454 212 TFT.set_font((unsigned char*) Arial24x23);
bendavis96 7:ceeced183454 213 TFT.printf("AC System");
bendavis96 7:ceeced183454 214 //show corners
bendavis96 7:ceeced183454 215 TFT.circle(10,10,10,0xffff);
bendavis96 7:ceeced183454 216 wait(0.1);
bendavis96 7:ceeced183454 217 TFT.circle(308,10,10,0xffff);
bendavis96 7:ceeced183454 218 wait(0.1);
bendavis96 7:ceeced183454 219 TFT.circle(10,229,10,0xffff);
bendavis96 7:ceeced183454 220 wait(0.1);
bendavis96 7:ceeced183454 221 TFT.circle(308,229,10,0xffff);
bendavis96 7:ceeced183454 222 wait(0.1);
bendavis96 7:ceeced183454 223 //add menu buttons
bendavis96 7:ceeced183454 224 TFT.rect(25,200,155,140,0xffff);
bendavis96 7:ceeced183454 225 TFT.rect(165,200,295,140,0xffff);
bendavis96 7:ceeced183454 226 //text for buttons
bendavis96 7:ceeced183454 227 TFT.set_font((unsigned char*) Arial12x12);
bendavis96 7:ceeced183454 228 TFT.locate(60,165);
bendavis96 7:ceeced183454 229 TFT.printf("FAN OFF");
bendavis96 7:ceeced183454 230 TFT.locate(200,165);
bendavis96 7:ceeced183454 231 TFT.printf("FAN ON");
bendavis96 8:95cd847648cd 232 TFT.locate(6,6);
bendavis96 8:95cd847648cd 233 TFT.printf("X");
bendavis96 8:95cd847648cd 234 }
bendavis96 8:95cd847648cd 235
bendavis96 8:95cd847648cd 236 void autos()
bendavis96 8:95cd847648cd 237 {
bendavis96 8:95cd847648cd 238
bendavis96 8:95cd847648cd 239 TFT.cls();
bendavis96 8:95cd847648cd 240 TFT.locate(30,15);
bendavis96 8:95cd847648cd 241 TFT.set_font((unsigned char*) Arial24x23);
bendavis96 8:95cd847648cd 242 TFT.printf("Automatic Control");
bendavis96 8:95cd847648cd 243 //show corners
bendavis96 8:95cd847648cd 244 TFT.circle(10,10,10,0xffff);
bendavis96 8:95cd847648cd 245 wait(0.1);
bendavis96 8:95cd847648cd 246 TFT.circle(308,10,10,0xffff);
bendavis96 8:95cd847648cd 247 wait(0.1);
bendavis96 8:95cd847648cd 248 TFT.circle(10,229,10,0xffff);
bendavis96 8:95cd847648cd 249 wait(0.1);
bendavis96 8:95cd847648cd 250 TFT.circle(308,229,10,0xffff);
bendavis96 8:95cd847648cd 251 wait(0.1);
bendavis96 8:95cd847648cd 252 //add menu buttons
bendavis96 8:95cd847648cd 253 TFT.rect(25,200,155,140,0xffff);
bendavis96 8:95cd847648cd 254 TFT.rect(165,200,295,140,0xffff);
bendavis96 8:95cd847648cd 255 //text for buttons
bendavis96 8:95cd847648cd 256 TFT.set_font((unsigned char*) Arial12x12);
bendavis96 8:95cd847648cd 257 TFT.locate(75,165);
bendavis96 8:95cd847648cd 258 TFT.printf("OFF");
bendavis96 8:95cd847648cd 259 TFT.locate(215,165);
bendavis96 8:95cd847648cd 260 TFT.printf("ON");
bendavis96 8:95cd847648cd 261 TFT.locate(6,6);
bendavis96 8:95cd847648cd 262 TFT.printf("X");
bendavis96 7:ceeced183454 263 }
bendavis96 7:ceeced183454 264
bendavis96 7:ceeced183454 265 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bendavis96 7:ceeced183454 266 //%%%%% IDs %%%%%%
bendavis96 7:ceeced183454 267
bendavis96 7:ceeced183454 268 void ben()
bendavis96 7:ceeced183454 269 {
bendavis96 7:ceeced183454 270
bendavis96 7:ceeced183454 271 rled = 0;
bendavis96 7:ceeced183454 272 bled = 1;
bendavis96 7:ceeced183454 273 gled = 1;
bendavis96 7:ceeced183454 274
bendavis96 7:ceeced183454 275 TFT.printf("B");
bendavis96 7:ceeced183454 276 wait(0.05);
bendavis96 7:ceeced183454 277 TFT.printf("e");
bendavis96 7:ceeced183454 278 wait(0.05);
bendavis96 7:ceeced183454 279 TFT.printf("n");
bendavis96 7:ceeced183454 280 }
bendavis96 7:ceeced183454 281
bendavis96 7:ceeced183454 282 void joe()
bendavis96 7:ceeced183454 283 {
bendavis96 7:ceeced183454 284 rled = 1;
bendavis96 7:ceeced183454 285 bled = 0;
bendavis96 7:ceeced183454 286 gled = 1;
bendavis96 7:ceeced183454 287
bendavis96 7:ceeced183454 288 TFT.printf("J");
bendavis96 7:ceeced183454 289 wait(0.05);
bendavis96 7:ceeced183454 290 TFT.printf("o");
bendavis96 7:ceeced183454 291 wait(0.05);
bendavis96 7:ceeced183454 292 TFT.printf("e");
bendavis96 7:ceeced183454 293
bendavis96 7:ceeced183454 294 }
bendavis96 7:ceeced183454 295
bendavis96 7:ceeced183454 296 void arthur()
bendavis96 7:ceeced183454 297 {
bendavis96 7:ceeced183454 298 rled = 1;
bendavis96 7:ceeced183454 299 bled = 0;
bendavis96 7:ceeced183454 300 gled = 1;
bendavis96 7:ceeced183454 301
bendavis96 7:ceeced183454 302 TFT.printf("A");
bendavis96 7:ceeced183454 303 wait(0.05);
bendavis96 7:ceeced183454 304 TFT.printf("r");
bendavis96 7:ceeced183454 305 wait(0.05);
bendavis96 7:ceeced183454 306 TFT.printf("t");
bendavis96 7:ceeced183454 307 wait(0.05);
bendavis96 7:ceeced183454 308 TFT.printf("h");
bendavis96 7:ceeced183454 309 wait(0.05);
bendavis96 7:ceeced183454 310 TFT.printf("u");
bendavis96 7:ceeced183454 311 wait(0.05);
bendavis96 7:ceeced183454 312 TFT.printf("r");
bendavis96 7:ceeced183454 313
bendavis96 7:ceeced183454 314 }
bendavis96 7:ceeced183454 315
bendavis96 7:ceeced183454 316 void intruder()
bendavis96 7:ceeced183454 317 {
bendavis96 7:ceeced183454 318 rled = 0;
bendavis96 7:ceeced183454 319 bled = 0;
bendavis96 7:ceeced183454 320 gled = 0;
bendavis96 7:ceeced183454 321 TFT.cls(); // clear the screen
bendavis96 7:ceeced183454 322 TFT.set_font((unsigned char*) Neu42x35);
bendavis96 7:ceeced183454 323 TFT.locate(45,105);
bendavis96 7:ceeced183454 324 TFT.foreground(Red);
bendavis96 7:ceeced183454 325 TFT.printf("INTRUDER!");
bendavis96 7:ceeced183454 326 wait(0.4);
bendavis96 7:ceeced183454 327 TFT.cls();
bendavis96 7:ceeced183454 328 wait(0.2);
bendavis96 7:ceeced183454 329 TFT.locate(45,105);
bendavis96 7:ceeced183454 330 TFT.printf("INTRUDER!");
bendavis96 7:ceeced183454 331 wait(0.4);
bendavis96 7:ceeced183454 332 TFT.cls();
bendavis96 7:ceeced183454 333 wait(0.2);
bendavis96 7:ceeced183454 334 TFT.locate(45,105);
bendavis96 7:ceeced183454 335 TFT.printf("INTRUDER!");
bendavis96 7:ceeced183454 336 wait(0.4);
bendavis96 7:ceeced183454 337 TFT.cls();
bendavis96 7:ceeced183454 338 wait(0.2);
bendavis96 7:ceeced183454 339 TFT.locate(45,105);
bendavis96 7:ceeced183454 340 TFT.printf("INTRUDER!");
bendavis96 7:ceeced183454 341 wait(0.4);
bendavis96 7:ceeced183454 342 TFT.cls();
bendavis96 7:ceeced183454 343 wait(0.2);
bendavis96 7:ceeced183454 344 TFT.locate(45,105);
bendavis96 7:ceeced183454 345 TFT.foreground(White);
bendavis96 7:ceeced183454 346 TFT.cls();
bendavis96 7:ceeced183454 347 rled = 1;
bendavis96 7:ceeced183454 348 bled = 1;
bendavis96 7:ceeced183454 349 gled = 1;
bendavis96 7:ceeced183454 350 }
bendavis96 7:ceeced183454 351
bendavis96 7:ceeced183454 352 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bendavis96 7:ceeced183454 353
cstevens 6:18c7288b5e00 354
cstevens 6:18c7288b5e00 355
cstevens 4:14043cafbec7 356
dreschpe 0:7c3b9bfd6ead 357 int main()
dreschpe 0:7c3b9bfd6ead 358 {
bendavis96 7:ceeced183454 359 int display = 0;
bendavis96 7:ceeced183454 360 int reading = 0;
bendavis96 7:ceeced183454 361 int id = 0;
bendavis96 7:ceeced183454 362
cstevens 6:18c7288b5e00 363 pc.baud(115200);
cstevens 6:18c7288b5e00 364
cstevens 6:18c7288b5e00 365 int xpos=0,ypos=0,xp=0,yp=0;
bendavis96 7:ceeced183454 366
bendavis96 7:ceeced183454 367 while (1) {
bendavis96 7:ceeced183454 368
bendavis96 7:ceeced183454 369 pc.printf("%d",id);
bendavis96 7:ceeced183454 370
bendavis96 7:ceeced183454 371 switch (display) {
bendavis96 7:ceeced183454 372
bendavis96 7:ceeced183454 373 case 0 : //start screen
bendavis96 7:ceeced183454 374
bendavis96 7:ceeced183454 375 start();
bendavis96 7:ceeced183454 376
bendavis96 7:ceeced183454 377 while (display == 0) {
cstevens 6:18c7288b5e00 378
bendavis96 7:ceeced183454 379 reading = rfid.readable();
bendavis96 7:ceeced183454 380 if (reading) {
bendavis96 7:ceeced183454 381 display = 1; //FOR TESTING LIGHTING, SHOULD BE 1
bendavis96 7:ceeced183454 382 id = rfid.read();
bendavis96 7:ceeced183454 383 }
bendavis96 7:ceeced183454 384
bendavis96 7:ceeced183454 385 }
bendavis96 7:ceeced183454 386 break;
bendavis96 7:ceeced183454 387
bendavis96 7:ceeced183454 388 case 1 : //welcome screen
bendavis96 7:ceeced183454 389
bendavis96 7:ceeced183454 390 home();
cstevens 6:18c7288b5e00 391
bendavis96 7:ceeced183454 392 //Personalised
bendavis96 7:ceeced183454 393 switch (id) {
bendavis96 7:ceeced183454 394
bendavis96 7:ceeced183454 395 case 22311780 : //Ben
bendavis96 7:ceeced183454 396 welcome();
bendavis96 7:ceeced183454 397 ben();
bendavis96 7:ceeced183454 398 break;
bendavis96 7:ceeced183454 399
bendavis96 7:ceeced183454 400 case 22320978 : //Joe
bendavis96 7:ceeced183454 401 welcome();
bendavis96 7:ceeced183454 402 joe();
bendavis96 7:ceeced183454 403 break;
dreschpe 0:7c3b9bfd6ead 404
bendavis96 7:ceeced183454 405 case 22352757 : //Arthur
bendavis96 7:ceeced183454 406 welcome();
bendavis96 7:ceeced183454 407 arthur();
bendavis96 7:ceeced183454 408 break;
bendavis96 7:ceeced183454 409
bendavis96 7:ceeced183454 410 default : //intruder case
bendavis96 7:ceeced183454 411 intruder();
bendavis96 7:ceeced183454 412 display = 0;
bendavis96 7:ceeced183454 413 break;
bendavis96 7:ceeced183454 414 }
bendavis96 7:ceeced183454 415 if (display == 0) { //intruder restarts system
bendavis96 7:ceeced183454 416 break;
bendavis96 7:ceeced183454 417 }
bendavis96 7:ceeced183454 418 while (display == 1) {
bendavis96 8:95cd847648cd 419 //%%%%% INCOMING DATA %%%%%%
bendavis96 8:95cd847648cd 420 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 421 TFT.foreground(White);
bendavis96 8:95cd847648cd 422 TFT.locate(145,0);
bendavis96 8:95cd847648cd 423 TFT.set_font((unsigned char*) Arial12x12);
bendavis96 8:95cd847648cd 424 TFT.printf("Temperature: 25.0 C");
bendavis96 8:95cd847648cd 425 TFT.locate(145,15);
bendavis96 8:95cd847648cd 426 TFT.printf("Fan: On");
bendavis96 8:95cd847648cd 427 TFT.locate(145, 30);
bendavis96 8:95cd847648cd 428 TFT.printf("Lights: Low");
bendavis96 8:95cd847648cd 429 TFT.foreground(Cyan);
bendavis96 8:95cd847648cd 430
bendavis96 7:ceeced183454 431 //%%%%% TOUCH %%%%%%
bendavis96 7:ceeced183454 432 TFT.set_orientation(0);
bendavis96 7:ceeced183454 433 xpos= readX();
bendavis96 7:ceeced183454 434 ypos= readY();
dreschpe 0:7c3b9bfd6ead 435
bendavis96 7:ceeced183454 436 xp=(240*(xpos-5800))/51200;
bendavis96 7:ceeced183454 437 yp=320-(320*(ypos-3000))/58300;
bendavis96 7:ceeced183454 438
bendavis96 8:95cd847648cd 439 if (yp<120 && xp<120 && touching==1) { //button for lighting
bendavis96 7:ceeced183454 440
bendavis96 7:ceeced183454 441 display = 2; //jump to lights
bendavis96 7:ceeced183454 442 TFT.set_orientation(1);
bendavis96 7:ceeced183454 443 }
bendavis96 8:95cd847648cd 444
bendavis96 8:95cd847648cd 445 if (yp>230 && xp<120 && touching==1) { //button for ac system
bendavis96 7:ceeced183454 446
bendavis96 7:ceeced183454 447 display = 3; //jump to ac
bendavis96 7:ceeced183454 448 TFT.set_orientation(1);
bendavis96 7:ceeced183454 449 }
bendavis96 8:95cd847648cd 450
bendavis96 8:95cd847648cd 451 if (yp<100 && xp>120 && touching==1) { //button for auto control
bendavis96 8:95cd847648cd 452
bendavis96 8:95cd847648cd 453 display = 4; //jump to automatic control
bendavis96 8:95cd847648cd 454 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 455 }
bendavis96 8:95cd847648cd 456
bendavis96 7:ceeced183454 457 //%%%%%% RFID Override %%%%%%%%
bendavis96 7:ceeced183454 458 reading = rfid.readable();
bendavis96 7:ceeced183454 459 if (reading) {
bendavis96 7:ceeced183454 460 id = rfid.read();
bendavis96 7:ceeced183454 461 TFT.set_orientation(1);
bendavis96 7:ceeced183454 462 break;
bendavis96 7:ceeced183454 463 }
bendavis96 7:ceeced183454 464 }
bendavis96 7:ceeced183454 465 break;
bendavis96 7:ceeced183454 466
bendavis96 7:ceeced183454 467 case 2 : //lighting screen
bendavis96 7:ceeced183454 468
bendavis96 7:ceeced183454 469
bendavis96 7:ceeced183454 470 lights();
bendavis96 7:ceeced183454 471
bendavis96 7:ceeced183454 472 while (display == 2) {
bendavis96 7:ceeced183454 473
bendavis96 8:95cd847648cd 474 //%%%%% TOUCH %%%%%%
bendavis96 8:95cd847648cd 475 TFT.set_orientation(0);
bendavis96 8:95cd847648cd 476 xpos= readX();
bendavis96 8:95cd847648cd 477 ypos= readY();
bendavis96 8:95cd847648cd 478
bendavis96 8:95cd847648cd 479 xp=(240*(xpos-5800))/51200;
bendavis96 8:95cd847648cd 480 yp=320-(320*(ypos-3000))/58300;
bendavis96 8:95cd847648cd 481
bendavis96 8:95cd847648cd 482 if (yp<120 && xp<120 && touching==1) { //button for LIGHTS OFF
bendavis96 8:95cd847648cd 483
bendavis96 8:95cd847648cd 484 //LIGHTS OFF ACTION
bendavis96 8:95cd847648cd 485 }
bendavis96 8:95cd847648cd 486
bendavis96 8:95cd847648cd 487 if (yp>230 && xp<60 && touching==1) { //button for LIGHTS 1
bendavis96 8:95cd847648cd 488
bendavis96 8:95cd847648cd 489 //LIGHTS 1 ACTION
bendavis96 8:95cd847648cd 490 }
bendavis96 8:95cd847648cd 491
bendavis96 8:95cd847648cd 492 if (yp>230 && 70<xp<110 && touching==1) { //button for LIGHTS 2
bendavis96 8:95cd847648cd 493
bendavis96 8:95cd847648cd 494 //LIGHTS 2 ACTION
bendavis96 8:95cd847648cd 495 }
bendavis96 8:95cd847648cd 496
bendavis96 8:95cd847648cd 497 if (yp>230 && xp>115 && touching==1) { //button for LIGHTS 3
bendavis96 8:95cd847648cd 498
bendavis96 8:95cd847648cd 499 //LIGHTS 3 ACTION
bendavis96 8:95cd847648cd 500 }
bendavis96 8:95cd847648cd 501
bendavis96 8:95cd847648cd 502 if (yp<30 && xp>210 && touching==1) { //RETURN TO MAIN SCREEN
bendavis96 8:95cd847648cd 503
bendavis96 8:95cd847648cd 504 display = 1;
bendavis96 8:95cd847648cd 505 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 506 }
bendavis96 8:95cd847648cd 507
bendavis96 8:95cd847648cd 508
bendavis96 8:95cd847648cd 509 //%%%%%% RFID Override %%%%%%%%
bendavis96 8:95cd847648cd 510 reading = rfid.readable();
bendavis96 8:95cd847648cd 511 if (reading) {
bendavis96 8:95cd847648cd 512 id = rfid.read();
bendavis96 8:95cd847648cd 513 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 514 display = 1;
bendavis96 8:95cd847648cd 515 }
bendavis96 7:ceeced183454 516 }
bendavis96 7:ceeced183454 517 break;
bendavis96 8:95cd847648cd 518
bendavis96 7:ceeced183454 519 case 3 : //temperature screen
bendavis96 7:ceeced183454 520
bendavis96 7:ceeced183454 521
bendavis96 7:ceeced183454 522 temps();
bendavis96 7:ceeced183454 523
bendavis96 7:ceeced183454 524 while (display == 3) {
bendavis96 7:ceeced183454 525
bendavis96 8:95cd847648cd 526 //%%%%% TOUCH %%%%%%
bendavis96 8:95cd847648cd 527 TFT.set_orientation(0);
bendavis96 8:95cd847648cd 528 xpos= readX();
bendavis96 8:95cd847648cd 529 ypos= readY();
bendavis96 8:95cd847648cd 530
bendavis96 8:95cd847648cd 531 xp=(240*(xpos-5800))/51200;
bendavis96 8:95cd847648cd 532 yp=320-(320*(ypos-3000))/58300;
bendavis96 8:95cd847648cd 533
bendavis96 8:95cd847648cd 534 if (yp<120 && xp<120 && touching==1) { //button for FAN OFF
bendavis96 8:95cd847648cd 535
bendavis96 8:95cd847648cd 536 //FAN OFF ACTION
bendavis96 8:95cd847648cd 537 }
bendavis96 8:95cd847648cd 538
bendavis96 8:95cd847648cd 539 if (yp>230 && xp<120 && touching==1) { //button for FAN ON
bendavis96 8:95cd847648cd 540
bendavis96 8:95cd847648cd 541 //FAN ON ACTION
bendavis96 8:95cd847648cd 542 }
bendavis96 8:95cd847648cd 543
bendavis96 8:95cd847648cd 544 if (yp<30 && xp>210 && touching==1) { //RETURN TO MAIN SCREEN
bendavis96 8:95cd847648cd 545
bendavis96 8:95cd847648cd 546 display = 1;
bendavis96 8:95cd847648cd 547 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 548 }
bendavis96 8:95cd847648cd 549
bendavis96 8:95cd847648cd 550
bendavis96 8:95cd847648cd 551 //%%%%%% RFID Override %%%%%%%%
bendavis96 8:95cd847648cd 552 reading = rfid.readable();
bendavis96 8:95cd847648cd 553 if (reading) {
bendavis96 8:95cd847648cd 554 id = rfid.read();
bendavis96 8:95cd847648cd 555 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 556 display = 1;
bendavis96 8:95cd847648cd 557 }
bendavis96 7:ceeced183454 558 }
bendavis96 7:ceeced183454 559 break;
bendavis96 7:ceeced183454 560
bendavis96 8:95cd847648cd 561 case 4 : //auto controls
bendavis96 7:ceeced183454 562
bendavis96 8:95cd847648cd 563
bendavis96 8:95cd847648cd 564 autos();
bendavis96 8:95cd847648cd 565
bendavis96 8:95cd847648cd 566 while (display == 4) {
bendavis96 8:95cd847648cd 567
bendavis96 8:95cd847648cd 568 //%%%%% TOUCH %%%%%%
bendavis96 8:95cd847648cd 569 TFT.set_orientation(0);
bendavis96 8:95cd847648cd 570 xpos= readX();
bendavis96 8:95cd847648cd 571 ypos= readY();
bendavis96 8:95cd847648cd 572
bendavis96 8:95cd847648cd 573 xp=(240*(xpos-5800))/51200;
bendavis96 8:95cd847648cd 574 yp=320-(320*(ypos-3000))/58300;
bendavis96 8:95cd847648cd 575
bendavis96 8:95cd847648cd 576 if (yp<120 && xp<120 && touching==1) { //button for AUTO OFF
bendavis96 8:95cd847648cd 577
bendavis96 8:95cd847648cd 578 //AUTO OFF ACTION
bendavis96 8:95cd847648cd 579 }
bendavis96 8:95cd847648cd 580
bendavis96 8:95cd847648cd 581 if (yp>230 && xp<120 && touching==1) { //button for AUTO ON
bendavis96 8:95cd847648cd 582
bendavis96 8:95cd847648cd 583 //AUTO ON ACTION
bendavis96 8:95cd847648cd 584 }
bendavis96 8:95cd847648cd 585
bendavis96 8:95cd847648cd 586 if (yp<30 && xp>210 && touching==1) { //RETURN TO MAIN SCREEN
bendavis96 8:95cd847648cd 587
bendavis96 8:95cd847648cd 588 display = 1;
bendavis96 8:95cd847648cd 589 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 590 }
bendavis96 8:95cd847648cd 591
bendavis96 8:95cd847648cd 592
bendavis96 8:95cd847648cd 593 //%%%%%% RFID Override %%%%%%%%
bendavis96 8:95cd847648cd 594 reading = rfid.readable();
bendavis96 8:95cd847648cd 595 if (reading) {
bendavis96 8:95cd847648cd 596 id = rfid.read();
bendavis96 8:95cd847648cd 597 TFT.set_orientation(1);
bendavis96 8:95cd847648cd 598 display = 1;
bendavis96 8:95cd847648cd 599 }
bendavis96 8:95cd847648cd 600 }
bendavis96 8:95cd847648cd 601 break;
bendavis96 7:ceeced183454 602 }
cstevens 6:18c7288b5e00 603 }
bendavis96 7:ceeced183454 604 }