Updated with option to return from BP screen to main screen, resolved screen navigation issues

Dependencies:   SDFileSystem TFTLCD_8bit ds3231 program mbed

Fork of poc_dis_5 by SenseSemi

Committer:
nikitateggi
Date:
Wed Mar 01 18:49:33 2017 +0000
Revision:
4:6bd81bb1790d
Parent:
3:9a06c2bed650
Child:
5:a3ea7c82b7e1
POC code with eeprom

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikitateggi 0:c47fb0c1bbf6 1 #include "mbed.h"
nikitateggi 0:c47fb0c1bbf6 2 #include "ili9325.h"
nikitateggi 0:c47fb0c1bbf6 3 #include "lcd_base.h"
nikitateggi 0:c47fb0c1bbf6 4 #include "display_modules.h"
nikitateggi 0:c47fb0c1bbf6 5 #include "touch_modules.h"
nikitateggi 0:c47fb0c1bbf6 6 InterruptIn Touch_D(PTD6);
nikitateggi 0:c47fb0c1bbf6 7 int i;
nikitateggi 0:c47fb0c1bbf6 8 unsigned int xt;
nikitateggi 0:c47fb0c1bbf6 9 unsigned int yt;
nikitateggi 1:8316c23ec6b9 10 Serial kc(USBTX, USBRX);
nikitateggi 0:c47fb0c1bbf6 11
nikitateggi 0:c47fb0c1bbf6 12
nikitateggi 0:c47fb0c1bbf6 13 void touch1() //determining the touch co-ordinates
nikitateggi 4:6bd81bb1790d 14 {
nikitateggi 4:6bd81bb1790d 15 xt = (X_MAX*readTouchX()/TOTAL1);
nikitateggi 0:c47fb0c1bbf6 16 yt = (Y_MAX*readTouchY()/TOTAL1);
nikitateggi 1:8316c23ec6b9 17 kc.printf("%d\n", xt);
nikitateggi 1:8316c23ec6b9 18 kc.printf("%d\n", yt);
nikitateggi 4:6bd81bb1790d 19 }
nikitateggi 0:c47fb0c1bbf6 20
nikitateggi 0:c47fb0c1bbf6 21
nikitateggi 0:c47fb0c1bbf6 22 void detect_touch() // detect the touch //debounce
nikitateggi 0:c47fb0c1bbf6 23 {
nikitateggi 0:c47fb0c1bbf6 24
nikitateggi 0:c47fb0c1bbf6 25 while(i==1)
nikitateggi 0:c47fb0c1bbf6 26 {
nikitateggi 0:c47fb0c1bbf6 27 while(Touch_D)//touch detection
nikitateggi 0:c47fb0c1bbf6 28 {
nikitateggi 0:c47fb0c1bbf6 29 wait_ms(200); ///wait for debounce check
nikitateggi 0:c47fb0c1bbf6 30 if (Touch_D)
nikitateggi 3:9a06c2bed650 31 {
nikitateggi 3:9a06c2bed650 32
nikitateggi 3:9a06c2bed650 33 Touch_D.fall(&touch1);
nikitateggi 3:9a06c2bed650 34 //determine the touch co-ordinates
nikitateggi 0:c47fb0c1bbf6 35 break;
nikitateggi 0:c47fb0c1bbf6 36 }
nikitateggi 3:9a06c2bed650 37 DisableTouch();
nikitateggi 1:8316c23ec6b9 38 //kc.printf("touch");
nikitateggi 1:8316c23ec6b9 39
nikitateggi 0:c47fb0c1bbf6 40 }
nikitateggi 0:c47fb0c1bbf6 41 }
nikitateggi 3:9a06c2bed650 42 EnableTouch();
nikitateggi 1:8316c23ec6b9 43
nikitateggi 0:c47fb0c1bbf6 44 }
nikitateggi 0:c47fb0c1bbf6 45
nikitateggi 0:c47fb0c1bbf6 46
nikitateggi 0:c47fb0c1bbf6 47
nikitateggi 0:c47fb0c1bbf6 48 unsigned char touch_main() //determining the touch for home screen
nikitateggi 0:c47fb0c1bbf6 49 {
nikitateggi 0:c47fb0c1bbf6 50
nikitateggi 0:c47fb0c1bbf6 51 unsigned char state;
nikitateggi 0:c47fb0c1bbf6 52
nikitateggi 1:8316c23ec6b9 53 if ( ((xt >=70) && (xt<=170)) && ( (yt>= 140) && (yt<= 195) ) ) // system configuration
nikitateggi 1:8316c23ec6b9 54 {
nikitateggi 1:8316c23ec6b9 55
nikitateggi 1:8316c23ec6b9 56 state=2;
nikitateggi 1:8316c23ec6b9 57 }
nikitateggi 1:8316c23ec6b9 58
nikitateggi 1:8316c23ec6b9 59 else if ( ((xt >=70) && (xt<=170)) && ( (yt>=80) && (yt<=140) ) ) // test
nikitateggi 1:8316c23ec6b9 60 {
nikitateggi 1:8316c23ec6b9 61 state=3;
nikitateggi 1:8316c23ec6b9 62 }
nikitateggi 1:8316c23ec6b9 63 else
nikitateggi 1:8316c23ec6b9 64 state=10;
nikitateggi 1:8316c23ec6b9 65
nikitateggi 1:8316c23ec6b9 66 return state;
nikitateggi 1:8316c23ec6b9 67 }
nikitateggi 1:8316c23ec6b9 68
nikitateggi 1:8316c23ec6b9 69
nikitateggi 4:6bd81bb1790d 70 unsigned char touch_main_1() //determining the touch for System Configuration screen
nikitateggi 1:8316c23ec6b9 71 {
nikitateggi 1:8316c23ec6b9 72
nikitateggi 1:8316c23ec6b9 73 unsigned char state;
nikitateggi 1:8316c23ec6b9 74
nikitateggi 1:8316c23ec6b9 75 if ( ((xt >=35) && (xt<=100)) && ( (yt>= 135) && (yt<= 185) ) ) // ble
nikitateggi 1:8316c23ec6b9 76 {
nikitateggi 1:8316c23ec6b9 77
nikitateggi 1:8316c23ec6b9 78 // state=3;
nikitateggi 1:8316c23ec6b9 79 }
nikitateggi 1:8316c23ec6b9 80
nikitateggi 1:8316c23ec6b9 81 else if ( ((xt >=130) && (xt<=195)) && ( (yt>= 135) && (yt<= 185) ) ) // erase
nikitateggi 1:8316c23ec6b9 82 {
nikitateggi 1:8316c23ec6b9 83 // state=4;
nikitateggi 1:8316c23ec6b9 84
nikitateggi 1:8316c23ec6b9 85
nikitateggi 1:8316c23ec6b9 86 }
nikitateggi 1:8316c23ec6b9 87 else if ( ((xt >= 35) && (xt<=100)) && ( (yt>= 65) && (yt<= 118) ) ) // file
nikitateggi 1:8316c23ec6b9 88 {
nikitateggi 1:8316c23ec6b9 89 // state=5;
nikitateggi 1:8316c23ec6b9 90
nikitateggi 1:8316c23ec6b9 91 }
nikitateggi 1:8316c23ec6b9 92 else if ( ((xt >= 130) && (xt<=195)) && ( (yt>= 65) && (yt<= 118) ) ) // home
nikitateggi 1:8316c23ec6b9 93 {
nikitateggi 1:8316c23ec6b9 94 //state=6;
nikitateggi 1:8316c23ec6b9 95
nikitateggi 1:8316c23ec6b9 96 }
nikitateggi 1:8316c23ec6b9 97 else
nikitateggi 1:8316c23ec6b9 98 state=10;
nikitateggi 1:8316c23ec6b9 99
nikitateggi 1:8316c23ec6b9 100 return state;
nikitateggi 1:8316c23ec6b9 101 }
nikitateggi 1:8316c23ec6b9 102
nikitateggi 4:6bd81bb1790d 103
nikitateggi 4:6bd81bb1790d 104 unsigned char touch_main_2() //determining the touch for TEST screen
nikitateggi 1:8316c23ec6b9 105 {
nikitateggi 1:8316c23ec6b9 106
nikitateggi 1:8316c23ec6b9 107 unsigned char state;
nikitateggi 1:8316c23ec6b9 108
nikitateggi 0:c47fb0c1bbf6 109 if ( ((xt >=35) && (xt<=100)) && ( (yt>= 135) && (yt<= 185) ) ) // GLC
nikitateggi 0:c47fb0c1bbf6 110 {
nikitateggi 0:c47fb0c1bbf6 111
nikitateggi 1:8316c23ec6b9 112 state=4;
nikitateggi 0:c47fb0c1bbf6 113 }
nikitateggi 0:c47fb0c1bbf6 114
nikitateggi 0:c47fb0c1bbf6 115 else if ( ((xt >=130) && (xt<=195)) && ( (yt>= 135) && (yt<= 185) ) ) // ECG
nikitateggi 0:c47fb0c1bbf6 116 {
nikitateggi 1:8316c23ec6b9 117 state=5;
nikitateggi 0:c47fb0c1bbf6 118
nikitateggi 0:c47fb0c1bbf6 119
nikitateggi 0:c47fb0c1bbf6 120 }
nikitateggi 0:c47fb0c1bbf6 121 else if ( ((xt >= 35) && (xt<=100)) && ( (yt>= 65) && (yt<= 118) ) ) // BP
nikitateggi 0:c47fb0c1bbf6 122 {
nikitateggi 3:9a06c2bed650 123 state=6;
nikitateggi 0:c47fb0c1bbf6 124
nikitateggi 0:c47fb0c1bbf6 125 }
nikitateggi 1:8316c23ec6b9 126 else if ( ((xt >= 130) && (xt<=195)) && ( (yt>= 65) && (yt<= 118) ) ) // Home
nikitateggi 0:c47fb0c1bbf6 127 {
nikitateggi 1:8316c23ec6b9 128 state=1;
nikitateggi 0:c47fb0c1bbf6 129
nikitateggi 0:c47fb0c1bbf6 130 }
nikitateggi 0:c47fb0c1bbf6 131
nikitateggi 1:8316c23ec6b9 132 else
nikitateggi 4:6bd81bb1790d 133 state=10; // default - goes to wait for a valid touch
nikitateggi 1:8316c23ec6b9 134
nikitateggi 0:c47fb0c1bbf6 135 return state;
nikitateggi 0:c47fb0c1bbf6 136 }
nikitateggi 1:8316c23ec6b9 137
nikitateggi 1:8316c23ec6b9 138
nikitateggi 1:8316c23ec6b9 139
nikitateggi 1:8316c23ec6b9 140
nikitateggi 1:8316c23ec6b9 141
nikitateggi 0:c47fb0c1bbf6 142
nikitateggi 4:6bd81bb1790d 143 unsigned char touch_ecg() // determining the touch for ecg main screen
nikitateggi 0:c47fb0c1bbf6 144 {
nikitateggi 0:c47fb0c1bbf6 145
nikitateggi 0:c47fb0c1bbf6 146 unsigned char state;
nikitateggi 4:6bd81bb1790d 147 if ( ((xt >=70) && (xt<=170)) && ( (yt>= 140) && (yt<= 195) ) ) // START
nikitateggi 1:8316c23ec6b9 148 {
nikitateggi 1:8316c23ec6b9 149
nikitateggi 1:8316c23ec6b9 150 state=8;
nikitateggi 1:8316c23ec6b9 151 }
nikitateggi 1:8316c23ec6b9 152
nikitateggi 4:6bd81bb1790d 153 else if ( ((xt >=70) && (xt<=170)) && ( (yt>=90) && (yt<=140) ) ) // RETURN
nikitateggi 1:8316c23ec6b9 154 {
nikitateggi 1:8316c23ec6b9 155 // state=2;
nikitateggi 1:8316c23ec6b9 156 }
nikitateggi 1:8316c23ec6b9 157 else
nikitateggi 1:8316c23ec6b9 158 state=10;
nikitateggi 1:8316c23ec6b9 159
nikitateggi 0:c47fb0c1bbf6 160 return state;
nikitateggi 0:c47fb0c1bbf6 161 }
nikitateggi 0:c47fb0c1bbf6 162
nikitateggi 0:c47fb0c1bbf6 163
nikitateggi 4:6bd81bb1790d 164 unsigned char touch_ret() // determining the touch for ecg screen after the test
nikitateggi 1:8316c23ec6b9 165 {
nikitateggi 1:8316c23ec6b9 166
nikitateggi 1:8316c23ec6b9 167 unsigned char state;
nikitateggi 1:8316c23ec6b9 168
nikitateggi 1:8316c23ec6b9 169
nikitateggi 4:6bd81bb1790d 170 if ( ((xt >=70) && (xt<=170)) && ( (yt>=85) && (yt<=140) ) ) // press on return box
nikitateggi 1:8316c23ec6b9 171 {
nikitateggi 1:8316c23ec6b9 172 state=3;
nikitateggi 1:8316c23ec6b9 173 }
nikitateggi 1:8316c23ec6b9 174
nikitateggi 1:8316c23ec6b9 175 else
nikitateggi 1:8316c23ec6b9 176 state=10;
nikitateggi 1:8316c23ec6b9 177 return state;
nikitateggi 1:8316c23ec6b9 178 }
nikitateggi 1:8316c23ec6b9 179
nikitateggi 1:8316c23ec6b9 180
nikitateggi 1:8316c23ec6b9 181
nikitateggi 0:c47fb0c1bbf6 182
nikitateggi 4:6bd81bb1790d 183 unsigned char touch_bp() // //determining the touch for bp main screen
nikitateggi 0:c47fb0c1bbf6 184
nikitateggi 0:c47fb0c1bbf6 185 {
nikitateggi 0:c47fb0c1bbf6 186 unsigned char state;
nikitateggi 4:6bd81bb1790d 187 if ( ((xt >=70) && (xt<=170)) && ( (yt>= 140) && (yt<= 195) ) ) // START
nikitateggi 0:c47fb0c1bbf6 188 {
nikitateggi 0:c47fb0c1bbf6 189
nikitateggi 3:9a06c2bed650 190 state=11;
nikitateggi 0:c47fb0c1bbf6 191 }
nikitateggi 0:c47fb0c1bbf6 192
nikitateggi 4:6bd81bb1790d 193 else if ( ((xt >=70) && (xt<=170)) && ( (yt>=90) && (yt<=140) ) ) // RETURN
nikitateggi 0:c47fb0c1bbf6 194 {
nikitateggi 3:9a06c2bed650 195 // state=2;
nikitateggi 3:9a06c2bed650 196 }
nikitateggi 3:9a06c2bed650 197 else
nikitateggi 1:8316c23ec6b9 198 state=10;
nikitateggi 0:c47fb0c1bbf6 199
nikitateggi 0:c47fb0c1bbf6 200 return state;
nikitateggi 0:c47fb0c1bbf6 201 }
nikitateggi 0:c47fb0c1bbf6 202
nikitateggi 0:c47fb0c1bbf6 203
nikitateggi 0:c47fb0c1bbf6 204
nikitateggi 4:6bd81bb1790d 205 unsigned char touch_glc() //determining the touch for GLC screen
nikitateggi 0:c47fb0c1bbf6 206 {
nikitateggi 0:c47fb0c1bbf6 207 unsigned char state;
nikitateggi 1:8316c23ec6b9 208
nikitateggi 4:6bd81bb1790d 209 if ( ((xt >=70) && (xt<=170)) && ( (yt>= 140) && (yt<= 195) ) ) // START
nikitateggi 0:c47fb0c1bbf6 210 {
nikitateggi 0:c47fb0c1bbf6 211
nikitateggi 1:8316c23ec6b9 212 state=7;
nikitateggi 0:c47fb0c1bbf6 213 }
nikitateggi 0:c47fb0c1bbf6 214
nikitateggi 4:6bd81bb1790d 215 else if ( ((xt >=70) && (xt<=170)) && ( (yt>=85) && (yt<=140) ) ) // RETURN
nikitateggi 0:c47fb0c1bbf6 216 {
nikitateggi 1:8316c23ec6b9 217 // state=2;
nikitateggi 1:8316c23ec6b9 218 }
nikitateggi 1:8316c23ec6b9 219 else
nikitateggi 1:8316c23ec6b9 220 state=10;
nikitateggi 0:c47fb0c1bbf6 221
nikitateggi 0:c47fb0c1bbf6 222 return state;
nikitateggi 0:c47fb0c1bbf6 223 }
nikitateggi 0:c47fb0c1bbf6 224
nikitateggi 1:8316c23ec6b9 225
nikitateggi 1:8316c23ec6b9 226
nikitateggi 4:6bd81bb1790d 227 unsigned char touch_again() //determining the touch for Repeat test
nikitateggi 1:8316c23ec6b9 228 {
nikitateggi 1:8316c23ec6b9 229
nikitateggi 1:8316c23ec6b9 230 unsigned char state;
nikitateggi 1:8316c23ec6b9 231
nikitateggi 4:6bd81bb1790d 232 if ( ((xt >= 35) && (xt<=100)) && ( (yt>= 65) && (yt<= 118) ) ) // YES
nikitateggi 1:8316c23ec6b9 233 {
nikitateggi 1:8316c23ec6b9 234 state=8;
nikitateggi 1:8316c23ec6b9 235
nikitateggi 1:8316c23ec6b9 236 }
nikitateggi 4:6bd81bb1790d 237 else if ( ((xt >= 130) && (xt<=195)) && ( (yt>= 65) && (yt<= 118) ) ) // NO
nikitateggi 1:8316c23ec6b9 238 {
nikitateggi 1:8316c23ec6b9 239 state=3;
nikitateggi 1:8316c23ec6b9 240
nikitateggi 1:8316c23ec6b9 241 }
nikitateggi 1:8316c23ec6b9 242 else
nikitateggi 1:8316c23ec6b9 243 state=10;
nikitateggi 1:8316c23ec6b9 244 return state;
nikitateggi 1:8316c23ec6b9 245 }
nikitateggi 1:8316c23ec6b9 246
nikitateggi 1:8316c23ec6b9 247
nikitateggi 1:8316c23ec6b9 248
nikitateggi 1:8316c23ec6b9 249
nikitateggi 4:6bd81bb1790d 250 //TOUCH Functionalities//
nikitateggi 0:c47fb0c1bbf6 251
nikitateggi 4:6bd81bb1790d 252 int readTouchY(void) // read the Y co-ordinate
nikitateggi 4:6bd81bb1790d 253 {
nikitateggi 0:c47fb0c1bbf6 254 DigitalOut YD(PTD6);
nikitateggi 0:c47fb0c1bbf6 255 DigitalIn XL(PTD7);
nikitateggi 0:c47fb0c1bbf6 256 DigitalOut YU(PTC0);
nikitateggi 0:c47fb0c1bbf6 257 YU = 1;
nikitateggi 0:c47fb0c1bbf6 258 YD = 0;
nikitateggi 0:c47fb0c1bbf6 259 AnalogIn XR(PTB0);
nikitateggi 0:c47fb0c1bbf6 260 XL.mode(PullNone);
nikitateggi 0:c47fb0c1bbf6 261 return XR.read_u16();
nikitateggi 0:c47fb0c1bbf6 262 }
nikitateggi 0:c47fb0c1bbf6 263
nikitateggi 4:6bd81bb1790d 264
nikitateggi 4:6bd81bb1790d 265 int readTouchX(void) // // read the X co-ordinate
nikitateggi 4:6bd81bb1790d 266 {
nikitateggi 0:c47fb0c1bbf6 267 DigitalOut XR(PTB0);
nikitateggi 0:c47fb0c1bbf6 268 DigitalIn YD(PTD6);
nikitateggi 0:c47fb0c1bbf6 269 DigitalOut XL(PTD7);
nikitateggi 0:c47fb0c1bbf6 270
nikitateggi 0:c47fb0c1bbf6 271 XR = 1;
nikitateggi 0:c47fb0c1bbf6 272 XL = 0;
nikitateggi 0:c47fb0c1bbf6 273 AnalogIn YU(PTC0);
nikitateggi 0:c47fb0c1bbf6 274 YD.mode(PullNone);
nikitateggi 0:c47fb0c1bbf6 275 return YU.read_u16();
nikitateggi 0:c47fb0c1bbf6 276 }
nikitateggi 0:c47fb0c1bbf6 277
nikitateggi 4:6bd81bb1790d 278 void EnableTouch(void) // Enable touch
nikitateggi 4:6bd81bb1790d 279 {
nikitateggi 0:c47fb0c1bbf6 280
nikitateggi 0:c47fb0c1bbf6 281 DigitalIn YD(PTD6);
nikitateggi 0:c47fb0c1bbf6 282 DigitalOut XL(PTD7);
nikitateggi 0:c47fb0c1bbf6 283 DigitalIn YU(PTC0);
nikitateggi 0:c47fb0c1bbf6 284 DigitalIn XR(PTB0);
nikitateggi 0:c47fb0c1bbf6 285 XL=0;
nikitateggi 0:c47fb0c1bbf6 286 YD.mode(PullUp);
nikitateggi 0:c47fb0c1bbf6 287 YU.mode(PullNone);
nikitateggi 0:c47fb0c1bbf6 288 XR.mode(PullNone);
nikitateggi 4:6bd81bb1790d 289 i=1;
nikitateggi 0:c47fb0c1bbf6 290 Touch_D.fall(&touch1);
nikitateggi 0:c47fb0c1bbf6 291 Touch_D.enable_irq();
nikitateggi 0:c47fb0c1bbf6 292
nikitateggi 4:6bd81bb1790d 293 }
nikitateggi 4:6bd81bb1790d 294
nikitateggi 4:6bd81bb1790d 295 void DisableTouch (void) // Disable touch
nikitateggi 4:6bd81bb1790d 296 {
nikitateggi 0:c47fb0c1bbf6 297 Touch_D.disable_irq();
nikitateggi 0:c47fb0c1bbf6 298 i=0;
nikitateggi 0:c47fb0c1bbf6 299 DigitalOut YD(PTD6);
nikitateggi 0:c47fb0c1bbf6 300 DigitalOut XL(PTD7);
nikitateggi 0:c47fb0c1bbf6 301 DigitalOut YU(PTC0);
nikitateggi 0:c47fb0c1bbf6 302 DigitalOut XR(PTB0);
nikitateggi 0:c47fb0c1bbf6 303 }
nikitateggi 0:c47fb0c1bbf6 304
nikitateggi 0:c47fb0c1bbf6 305
nikitateggi 0:c47fb0c1bbf6 306
nikitateggi 0:c47fb0c1bbf6 307