A keypad to retrieve a single key and then disipears

Committer:
Armand
Date:
Tue Jun 20 12:01:11 2017 +0000
Revision:
1:b91bd75a5ab8
Parent:
0:85ae7121f6d6
Fixed some bugs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Armand 0:85ae7121f6d6 1 #include "F7_Keypad_SingleKey.h"
Armand 0:85ae7121f6d6 2 #include "mbed.h"
Armand 0:85ae7121f6d6 3
Armand 0:85ae7121f6d6 4
Armand 0:85ae7121f6d6 5
Armand 0:85ae7121f6d6 6 F7_Keypad_SingleKey::F7_Keypad_SingleKey()
Armand 0:85ae7121f6d6 7 {
Armand 0:85ae7121f6d6 8 btnsize = 50;
Armand 0:85ae7121f6d6 9 state = 0;
Armand 1:b91bd75a5ab8 10 key = 0;
Armand 0:85ae7121f6d6 11
Armand 0:85ae7121f6d6 12 status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
Armand 0:85ae7121f6d6 13 if (status != TS_OK)
Armand 0:85ae7121f6d6 14 {
Armand 0:85ae7121f6d6 15 lcd.Clear(LCD_COLOR_RED);
Armand 0:85ae7121f6d6 16 lcd.SetBackColor(LCD_COLOR_RED);
Armand 0:85ae7121f6d6 17 lcd.SetTextColor(LCD_COLOR_WHITE);
Armand 0:85ae7121f6d6 18 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE);
Armand 0:85ae7121f6d6 19 while(1);
Armand 0:85ae7121f6d6 20 }
Armand 0:85ae7121f6d6 21 else
Armand 0:85ae7121f6d6 22 {
Armand 0:85ae7121f6d6 23 OK = 1;
Armand 0:85ae7121f6d6 24
Armand 0:85ae7121f6d6 25 }
Armand 0:85ae7121f6d6 26
Armand 0:85ae7121f6d6 27 ticker.attach(callback(this, &F7_Keypad_SingleKey::Detect_isr),0.01);
Armand 0:85ae7121f6d6 28 }
Armand 0:85ae7121f6d6 29
Armand 0:85ae7121f6d6 30 void F7_Keypad_SingleKey::Detect_isr()
Armand 0:85ae7121f6d6 31 {
Armand 0:85ae7121f6d6 32
Armand 0:85ae7121f6d6 33 if(OK)
Armand 0:85ae7121f6d6 34 {
Armand 0:85ae7121f6d6 35 ts.GetState(&TS_State);
Armand 0:85ae7121f6d6 36
Armand 0:85ae7121f6d6 37
Armand 0:85ae7121f6d6 38
Armand 0:85ae7121f6d6 39
Armand 0:85ae7121f6d6 40 if (TS_State.touchDetected)
Armand 0:85ae7121f6d6 41 {
Armand 0:85ae7121f6d6 42
Armand 0:85ae7121f6d6 43 ///////////////////////check correct touch//////////////////////////////////////////////////////////////
Armand 0:85ae7121f6d6 44 if(TS_State.touchX[0]>= keypadstartX[0][0] && TS_State.touchX[0]<= keypadendX[0][0] && TS_State.touchY[0]>= keypadstartY[0][0] && TS_State.touchY[0]<= keypadendY[0][0] && keypad == 1)
Armand 0:85ae7121f6d6 45 {
Armand 0:85ae7121f6d6 46 correcttouch = 1;
Armand 0:85ae7121f6d6 47 button = 1;
Armand 0:85ae7121f6d6 48 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 49 lcd.FillRect(keypadstartX[0][0], keypadstartY[0][0], btnsize, btnsize);
Armand 0:85ae7121f6d6 50 }
Armand 0:85ae7121f6d6 51 else if(TS_State.touchX[0]>= keypadstartX[0][1] && TS_State.touchX[0]<= keypadendX[0][1] && TS_State.touchY[0]>= keypadstartY[0][1] && TS_State.touchY[0]<= keypadendY[0][1] && keypad == 1)
Armand 0:85ae7121f6d6 52 {
Armand 0:85ae7121f6d6 53 correcttouch = 1;
Armand 0:85ae7121f6d6 54 button = 2;
Armand 0:85ae7121f6d6 55 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 56 lcd.FillRect(keypadstartX[0][1], keypadstartY[0][1], btnsize, btnsize);
Armand 0:85ae7121f6d6 57 }
Armand 0:85ae7121f6d6 58 else if(TS_State.touchX[0]>= keypadstartX[0][2] && TS_State.touchX[0]<= keypadendX[0][2] && TS_State.touchY[0]>= keypadstartY[0][2] && TS_State.touchY[0]<= keypadendY[0][2] && keypad == 1)
Armand 0:85ae7121f6d6 59 {
Armand 0:85ae7121f6d6 60 correcttouch = 1;
Armand 0:85ae7121f6d6 61 button = 3;
Armand 0:85ae7121f6d6 62 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 63 lcd.FillRect(keypadstartX[0][2], keypadstartY[0][2], btnsize, btnsize);
Armand 0:85ae7121f6d6 64 }
Armand 0:85ae7121f6d6 65 else if(TS_State.touchX[0]>= keypadstartX[0][3] && TS_State.touchX[0]<= keypadendX[0][3] && TS_State.touchY[0]>= keypadstartY[0][3] && TS_State.touchY[0]<= keypadendY[0][3] && keypad == 1)
Armand 0:85ae7121f6d6 66 {
Armand 0:85ae7121f6d6 67 correcttouch = 1;
Armand 0:85ae7121f6d6 68 button = 4;
Armand 0:85ae7121f6d6 69 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 70 lcd.FillRect(keypadstartX[0][3], keypadstartY[0][3], btnsize, btnsize);
Armand 0:85ae7121f6d6 71 }
Armand 0:85ae7121f6d6 72 else if(TS_State.touchX[0]>= keypadstartX[1][0] && TS_State.touchX[0]<= keypadendX[1][0] && TS_State.touchY[0]>= keypadstartY[1][0] && TS_State.touchY[0]<= keypadendY[1][0] && keypad == 1)
Armand 0:85ae7121f6d6 73 {
Armand 0:85ae7121f6d6 74 correcttouch = 1;
Armand 0:85ae7121f6d6 75 button = 5;
Armand 0:85ae7121f6d6 76 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 77 lcd.FillRect(keypadstartX[1][0], keypadstartY[1][0], btnsize, btnsize);
Armand 0:85ae7121f6d6 78 }
Armand 0:85ae7121f6d6 79 else if(TS_State.touchX[0]>= keypadstartX[1][1] && TS_State.touchX[0]<= keypadendX[1][1] && TS_State.touchY[0]>= keypadstartY[1][1] && TS_State.touchY[0]<= keypadendY[1][1] && keypad == 1)
Armand 0:85ae7121f6d6 80 {
Armand 0:85ae7121f6d6 81 correcttouch = 1;
Armand 0:85ae7121f6d6 82 button = 6;
Armand 0:85ae7121f6d6 83 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 84 lcd.FillRect(keypadstartX[1][1], keypadstartY[1][1], btnsize, btnsize);
Armand 0:85ae7121f6d6 85 }
Armand 0:85ae7121f6d6 86 else if(TS_State.touchX[0]>= keypadstartX[1][2] && TS_State.touchX[0]<= keypadendX[1][2] && TS_State.touchY[0]>= keypadstartY[1][2] && TS_State.touchY[0]<= keypadendY[1][2] && keypad == 1)
Armand 0:85ae7121f6d6 87 {
Armand 0:85ae7121f6d6 88 correcttouch = 1;
Armand 0:85ae7121f6d6 89 button = 7;
Armand 0:85ae7121f6d6 90 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 91 lcd.FillRect(keypadstartX[1][2], keypadstartY[1][2], btnsize, btnsize);
Armand 0:85ae7121f6d6 92 }
Armand 0:85ae7121f6d6 93 else if(TS_State.touchX[0]>= keypadstartX[1][3] && TS_State.touchX[0]<= keypadendX[1][3] && TS_State.touchY[0]>= keypadstartY[1][3] && TS_State.touchY[0]<= keypadendY[1][3] && keypad == 1)
Armand 0:85ae7121f6d6 94 {
Armand 0:85ae7121f6d6 95 correcttouch = 1;
Armand 0:85ae7121f6d6 96 button = 8;
Armand 0:85ae7121f6d6 97 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 98 lcd.FillRect(keypadstartX[1][3], keypadstartY[1][3], btnsize, btnsize);
Armand 0:85ae7121f6d6 99 }
Armand 0:85ae7121f6d6 100 else if(TS_State.touchX[0]>= keypadstartX[2][0] && TS_State.touchX[0]<= keypadendX[2][0] && TS_State.touchY[0]>= keypadstartY[2][0] && TS_State.touchY[0]<= keypadendY[2][0] && keypad == 1)
Armand 0:85ae7121f6d6 101 {
Armand 0:85ae7121f6d6 102 correcttouch = 1;
Armand 0:85ae7121f6d6 103 button = 9;
Armand 0:85ae7121f6d6 104 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 105 lcd.FillRect(keypadstartX[2][0], keypadstartY[2][0], btnsize, btnsize);
Armand 0:85ae7121f6d6 106 }
Armand 0:85ae7121f6d6 107 else if(TS_State.touchX[0]>= keypadstartX[2][1] && TS_State.touchX[0]<= keypadendX[2][1] && TS_State.touchY[0]>= keypadstartY[2][1] && TS_State.touchY[0]<= keypadendY[2][1] && keypad == 1)
Armand 0:85ae7121f6d6 108 {
Armand 0:85ae7121f6d6 109 correcttouch = 1;
Armand 0:85ae7121f6d6 110 button = 10;
Armand 0:85ae7121f6d6 111 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 112 lcd.FillRect(keypadstartX[2][1], keypadstartY[2][1], btnsize, btnsize);
Armand 0:85ae7121f6d6 113 }
Armand 0:85ae7121f6d6 114 else if(TS_State.touchX[0]>= keypadstartX[2][2] && TS_State.touchX[0]<= keypadendX[2][2] && TS_State.touchY[0]>= keypadstartY[2][2] && TS_State.touchY[0]<= keypadendY[2][2] && keypad == 1)
Armand 0:85ae7121f6d6 115 {
Armand 0:85ae7121f6d6 116 correcttouch = 1;
Armand 0:85ae7121f6d6 117 button = 11;
Armand 0:85ae7121f6d6 118 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 119 lcd.FillRect(keypadstartX[2][2], keypadstartY[2][2], btnsize, btnsize);
Armand 0:85ae7121f6d6 120 }
Armand 0:85ae7121f6d6 121 else if(TS_State.touchX[0]>= keypadstartX[2][3] && TS_State.touchX[0]<= keypadendX[2][3] && TS_State.touchY[0]>= keypadstartY[2][3] && TS_State.touchY[0]<= keypadendY[2][3] && keypad == 1)
Armand 0:85ae7121f6d6 122 {
Armand 0:85ae7121f6d6 123 correcttouch = 1;
Armand 0:85ae7121f6d6 124 button = 12;
Armand 0:85ae7121f6d6 125 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 126 lcd.FillRect(keypadstartX[2][3], keypadstartY[2][3], btnsize, btnsize);
Armand 0:85ae7121f6d6 127 }
Armand 0:85ae7121f6d6 128 else if(TS_State.touchX[0]>= keypadstartX[3][0] && TS_State.touchX[0]<= keypadendX[3][0] && TS_State.touchY[0]>= keypadstartY[3][0] && TS_State.touchY[0]<= keypadendY[3][0] && keypad == 1)
Armand 0:85ae7121f6d6 129 {
Armand 0:85ae7121f6d6 130 correcttouch = 1;
Armand 0:85ae7121f6d6 131 button = 13;
Armand 0:85ae7121f6d6 132 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 133 lcd.FillRect(keypadstartX[3][0], keypadstartY[3][0], btnsize, btnsize);
Armand 0:85ae7121f6d6 134 }
Armand 0:85ae7121f6d6 135 else if(TS_State.touchX[0]>= keypadstartX[3][1] && TS_State.touchX[0]<= keypadendX[3][1] && TS_State.touchY[0]>= keypadstartY[3][1] && TS_State.touchY[0]<= keypadendY[3][1] && keypad == 1)
Armand 0:85ae7121f6d6 136 {
Armand 0:85ae7121f6d6 137 correcttouch = 1;
Armand 0:85ae7121f6d6 138 button = 14;
Armand 0:85ae7121f6d6 139 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 140 lcd.FillRect(keypadstartX[3][1], keypadstartY[3][1], btnsize, btnsize);
Armand 0:85ae7121f6d6 141 }
Armand 0:85ae7121f6d6 142 else if(TS_State.touchX[0]>= keypadstartX[3][2] && TS_State.touchX[0]<= keypadendX[3][2] && TS_State.touchY[0]>= keypadstartY[3][2] && TS_State.touchY[0]<= keypadendY[3][2] && keypad == 1)
Armand 0:85ae7121f6d6 143 {
Armand 0:85ae7121f6d6 144 correcttouch = 1;
Armand 0:85ae7121f6d6 145 button = 15;
Armand 0:85ae7121f6d6 146 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 147 lcd.FillRect(keypadstartX[3][2], keypadstartY[3][2], btnsize, btnsize);
Armand 0:85ae7121f6d6 148 }
Armand 0:85ae7121f6d6 149 else if(TS_State.touchX[0]>= keypadstartX[3][3] && TS_State.touchX[0]<= keypadendX[3][3] && TS_State.touchY[0]>= keypadstartY[3][3] && TS_State.touchY[0]<= keypadendY[3][3] && keypad == 1)
Armand 0:85ae7121f6d6 150 {
Armand 0:85ae7121f6d6 151 correcttouch = 1;
Armand 0:85ae7121f6d6 152 button = 16;
Armand 0:85ae7121f6d6 153 lcd.SetTextColor(LCD_COLOR_GRAY);
Armand 0:85ae7121f6d6 154 lcd.FillRect(keypadstartX[3][3], keypadstartY[3][3], btnsize, btnsize);
Armand 0:85ae7121f6d6 155 }
Armand 0:85ae7121f6d6 156 else
Armand 0:85ae7121f6d6 157 {
Armand 0:85ae7121f6d6 158 correcttouch = 0;
Armand 0:85ae7121f6d6 159 button = 0;
Armand 0:85ae7121f6d6 160 }
Armand 0:85ae7121f6d6 161 //////////////////////////////////////////////////////////////////////////////////////////////////////
Armand 0:85ae7121f6d6 162 }
Armand 0:85ae7121f6d6 163 }
Armand 0:85ae7121f6d6 164 }
Armand 0:85ae7121f6d6 165
Armand 0:85ae7121f6d6 166 char F7_Keypad_SingleKey::getkey(uint8_t Keypadx, uint8_t Keypady,char char1, char char2, char char3, char char4, char char5, char char6, char char7, char char8, char char9, char char10, char char11, char char12, char char13, char char14, char char15, char char16)
Armand 0:85ae7121f6d6 167 {
Armand 0:85ae7121f6d6 168
Armand 0:85ae7121f6d6 169
Armand 0:85ae7121f6d6 170 Bckclr = lcd.GetBackColor();
Armand 0:85ae7121f6d6 171 Txtclr = lcd.GetTextColor();
Armand 0:85ae7121f6d6 172 *FontSize = *lcd.GetFont();
Armand 0:85ae7121f6d6 173
Armand 0:85ae7121f6d6 174 DrawKeypad(Keypadx, Keypady, char1, char2, char3, char4, char5, char6, char7, char8, char9, char10, char11, char12, char13, char14, char15, char16);
Armand 0:85ae7121f6d6 175
Armand 0:85ae7121f6d6 176 recv = 1;
Armand 0:85ae7121f6d6 177
Armand 0:85ae7121f6d6 178 while(recv == 1)
Armand 0:85ae7121f6d6 179 {
Armand 0:85ae7121f6d6 180 wait(0.0001);
Armand 0:85ae7121f6d6 181
Armand 0:85ae7121f6d6 182 switch(state)
Armand 0:85ae7121f6d6 183 {////////check if pressed on screen///////
Armand 0:85ae7121f6d6 184 case 0:
Armand 0:85ae7121f6d6 185 {
Armand 0:85ae7121f6d6 186 if(TS_State.touchDetected)
Armand 0:85ae7121f6d6 187 {
Armand 0:85ae7121f6d6 188 frstprsx = TS_State.touchX[0];
Armand 0:85ae7121f6d6 189 frstprsy = TS_State.touchY[0];
Armand 0:85ae7121f6d6 190 state = 10;
Armand 0:85ae7121f6d6 191 }
Armand 0:85ae7121f6d6 192 ////////////////////////////////////////
Armand 0:85ae7121f6d6 193 }break;
Armand 0:85ae7121f6d6 194 ////////check if correctly pressed//////////
Armand 0:85ae7121f6d6 195 case 10:
Armand 0:85ae7121f6d6 196 {
Armand 0:85ae7121f6d6 197 for(b = 0; b < 4; b++)
Armand 0:85ae7121f6d6 198 {
Armand 0:85ae7121f6d6 199 for(a = 0; a < 4; a++)
Armand 0:85ae7121f6d6 200 {
Armand 0:85ae7121f6d6 201 if(frstprsx >= keypadstartX[a][b] && frstprsx <= keypadendX[a][b] && frstprsy >= keypadstartY[a][b] && frstprsy <= keypadendY[a][b])
Armand 0:85ae7121f6d6 202 {
Armand 0:85ae7121f6d6 203 state = 15;
Armand 0:85ae7121f6d6 204 correcttouch = 1;
Armand 1:b91bd75a5ab8 205 key = button;
Armand 0:85ae7121f6d6 206 a = 3;
Armand 0:85ae7121f6d6 207 b = 3;
Armand 0:85ae7121f6d6 208 }
Armand 0:85ae7121f6d6 209 else
Armand 0:85ae7121f6d6 210 {
Armand 0:85ae7121f6d6 211 state = 30;
Armand 0:85ae7121f6d6 212 }
Armand 0:85ae7121f6d6 213 }
Armand 0:85ae7121f6d6 214 }
Armand 0:85ae7121f6d6 215
Armand 0:85ae7121f6d6 216 }break;
Armand 0:85ae7121f6d6 217 case 15:
Armand 0:85ae7121f6d6 218 {
Armand 1:b91bd75a5ab8 219 if(button == key && button != 0)
Armand 0:85ae7121f6d6 220 {
Armand 0:85ae7121f6d6 221 if(TS_State.touchDetected== 0)
Armand 0:85ae7121f6d6 222 {
Armand 0:85ae7121f6d6 223 state = 20;
Armand 0:85ae7121f6d6 224 }
Armand 0:85ae7121f6d6 225 }
Armand 1:b91bd75a5ab8 226 else if(button != key || button == 0)
Armand 0:85ae7121f6d6 227 {
Armand 0:85ae7121f6d6 228 state = 30;
Armand 0:85ae7121f6d6 229 }
Armand 0:85ae7121f6d6 230
Armand 0:85ae7121f6d6 231 }break;
Armand 0:85ae7121f6d6 232 ////////////button functions//////////
Armand 0:85ae7121f6d6 233 case 20:
Armand 0:85ae7121f6d6 234 { ////////button 1/////////////
Armand 0:85ae7121f6d6 235 if(button == 1)
Armand 0:85ae7121f6d6 236 {
Armand 0:85ae7121f6d6 237 keypressed = char1;
Armand 0:85ae7121f6d6 238 a = 0;
Armand 0:85ae7121f6d6 239 b = 0;
Armand 0:85ae7121f6d6 240 recv = 0;
Armand 0:85ae7121f6d6 241 correcttouch = 0;
Armand 0:85ae7121f6d6 242 state = 0;
Armand 0:85ae7121f6d6 243 }
Armand 0:85ae7121f6d6 244 else if(button == 2)
Armand 0:85ae7121f6d6 245 {
Armand 0:85ae7121f6d6 246 keypressed = char2;
Armand 0:85ae7121f6d6 247 a = 0;
Armand 0:85ae7121f6d6 248 b = 0;
Armand 0:85ae7121f6d6 249 recv = 0;
Armand 0:85ae7121f6d6 250 correcttouch = 0;
Armand 0:85ae7121f6d6 251 state = 0;
Armand 0:85ae7121f6d6 252 }
Armand 0:85ae7121f6d6 253 else if(button == 3)
Armand 0:85ae7121f6d6 254 {
Armand 0:85ae7121f6d6 255 keypressed = char3;
Armand 0:85ae7121f6d6 256 a = 0;
Armand 0:85ae7121f6d6 257 b = 0;
Armand 0:85ae7121f6d6 258 recv = 0;
Armand 0:85ae7121f6d6 259 correcttouch = 0;
Armand 0:85ae7121f6d6 260 state = 0;
Armand 0:85ae7121f6d6 261 }
Armand 0:85ae7121f6d6 262 else if(button == 4)
Armand 0:85ae7121f6d6 263 {
Armand 0:85ae7121f6d6 264 keypressed = char4;
Armand 0:85ae7121f6d6 265 a = 0;
Armand 0:85ae7121f6d6 266 b = 0;
Armand 0:85ae7121f6d6 267 recv = 0;
Armand 0:85ae7121f6d6 268 correcttouch = 0;
Armand 0:85ae7121f6d6 269 state = 0;
Armand 0:85ae7121f6d6 270 }
Armand 0:85ae7121f6d6 271 else if(button == 5)
Armand 0:85ae7121f6d6 272 {
Armand 0:85ae7121f6d6 273 keypressed = char5;
Armand 0:85ae7121f6d6 274 a = 0;
Armand 0:85ae7121f6d6 275 b = 0;
Armand 0:85ae7121f6d6 276 recv = 0;
Armand 0:85ae7121f6d6 277 correcttouch = 0;
Armand 0:85ae7121f6d6 278 state = 0;
Armand 0:85ae7121f6d6 279 }
Armand 0:85ae7121f6d6 280 else if(button == 6)
Armand 0:85ae7121f6d6 281 {
Armand 0:85ae7121f6d6 282 keypressed = char6;
Armand 0:85ae7121f6d6 283 a = 0;
Armand 0:85ae7121f6d6 284 b = 0;
Armand 0:85ae7121f6d6 285 recv = 0;
Armand 0:85ae7121f6d6 286 correcttouch = 0;
Armand 0:85ae7121f6d6 287 state = 0;
Armand 0:85ae7121f6d6 288 }
Armand 0:85ae7121f6d6 289 else if(button == 7)
Armand 0:85ae7121f6d6 290 {
Armand 0:85ae7121f6d6 291 keypressed = char7;
Armand 0:85ae7121f6d6 292 a = 0;
Armand 0:85ae7121f6d6 293 b = 0;
Armand 0:85ae7121f6d6 294 recv = 0;
Armand 0:85ae7121f6d6 295 correcttouch = 0;
Armand 0:85ae7121f6d6 296 state = 0;
Armand 0:85ae7121f6d6 297 }
Armand 0:85ae7121f6d6 298 else if(button == 8)
Armand 0:85ae7121f6d6 299 {
Armand 0:85ae7121f6d6 300 keypressed = char8;
Armand 0:85ae7121f6d6 301 a = 0;
Armand 0:85ae7121f6d6 302 b = 0;
Armand 0:85ae7121f6d6 303 recv = 0;
Armand 0:85ae7121f6d6 304 correcttouch = 0;
Armand 0:85ae7121f6d6 305 state = 0;
Armand 0:85ae7121f6d6 306 }
Armand 0:85ae7121f6d6 307 else if(button == 9)
Armand 0:85ae7121f6d6 308 {
Armand 0:85ae7121f6d6 309 keypressed = char9;
Armand 0:85ae7121f6d6 310 a = 0;
Armand 0:85ae7121f6d6 311 b = 0;
Armand 0:85ae7121f6d6 312 recv = 0;
Armand 0:85ae7121f6d6 313 correcttouch = 0;
Armand 0:85ae7121f6d6 314 state = 0;
Armand 0:85ae7121f6d6 315 }
Armand 0:85ae7121f6d6 316 else if(button == 10)
Armand 0:85ae7121f6d6 317 {
Armand 0:85ae7121f6d6 318 keypressed = char10;
Armand 0:85ae7121f6d6 319 a = 0;
Armand 0:85ae7121f6d6 320 b = 0;
Armand 0:85ae7121f6d6 321 recv = 0;
Armand 0:85ae7121f6d6 322 correcttouch = 0;
Armand 0:85ae7121f6d6 323 state = 0;
Armand 0:85ae7121f6d6 324 }
Armand 0:85ae7121f6d6 325 else if(button == 11)
Armand 0:85ae7121f6d6 326 {
Armand 0:85ae7121f6d6 327 keypressed = char11;
Armand 0:85ae7121f6d6 328 a = 0;
Armand 0:85ae7121f6d6 329 b = 0;
Armand 0:85ae7121f6d6 330 recv = 0;
Armand 0:85ae7121f6d6 331 correcttouch = 0;
Armand 0:85ae7121f6d6 332 state = 0;
Armand 0:85ae7121f6d6 333 }
Armand 0:85ae7121f6d6 334 else if(button == 12)
Armand 0:85ae7121f6d6 335 {
Armand 0:85ae7121f6d6 336 keypressed = char12;
Armand 0:85ae7121f6d6 337 a = 0;
Armand 0:85ae7121f6d6 338 b = 0;
Armand 0:85ae7121f6d6 339 recv = 0;
Armand 0:85ae7121f6d6 340 correcttouch = 0;
Armand 0:85ae7121f6d6 341 state = 0;
Armand 0:85ae7121f6d6 342 }
Armand 0:85ae7121f6d6 343 else if(button == 13)
Armand 0:85ae7121f6d6 344 {
Armand 0:85ae7121f6d6 345 keypressed = char13;
Armand 0:85ae7121f6d6 346 a = 0;
Armand 0:85ae7121f6d6 347 b = 0;
Armand 0:85ae7121f6d6 348 recv = 0;
Armand 0:85ae7121f6d6 349 correcttouch = 0;
Armand 0:85ae7121f6d6 350 state = 0;
Armand 0:85ae7121f6d6 351 }
Armand 0:85ae7121f6d6 352 else if(button == 14)
Armand 0:85ae7121f6d6 353 {
Armand 0:85ae7121f6d6 354 keypressed = char14;
Armand 0:85ae7121f6d6 355 a = 0;
Armand 0:85ae7121f6d6 356 b = 0;
Armand 0:85ae7121f6d6 357 recv = 0;
Armand 0:85ae7121f6d6 358 correcttouch = 0;
Armand 0:85ae7121f6d6 359 state = 0;
Armand 0:85ae7121f6d6 360 }
Armand 0:85ae7121f6d6 361 else if(button == 15)
Armand 0:85ae7121f6d6 362 {
Armand 0:85ae7121f6d6 363 keypressed = char15;
Armand 0:85ae7121f6d6 364 a = 0;
Armand 0:85ae7121f6d6 365 b = 0;
Armand 0:85ae7121f6d6 366 recv = 0;
Armand 0:85ae7121f6d6 367 correcttouch = 0;
Armand 0:85ae7121f6d6 368 state = 0;
Armand 0:85ae7121f6d6 369 }
Armand 0:85ae7121f6d6 370 else if(button == 16)
Armand 0:85ae7121f6d6 371 {
Armand 0:85ae7121f6d6 372 keypressed = char16;
Armand 0:85ae7121f6d6 373 a = 0;
Armand 0:85ae7121f6d6 374 b = 0;
Armand 0:85ae7121f6d6 375 recv = 0;
Armand 0:85ae7121f6d6 376 correcttouch = 0;
Armand 0:85ae7121f6d6 377 state = 0;
Armand 1:b91bd75a5ab8 378 }
Armand 1:b91bd75a5ab8 379
Armand 1:b91bd75a5ab8 380 key = 0;
Armand 0:85ae7121f6d6 381
Armand 0:85ae7121f6d6 382 }break;
Armand 0:85ae7121f6d6 383 case 30:
Armand 0:85ae7121f6d6 384 {
Armand 0:85ae7121f6d6 385 if(keypad == 1)
Armand 0:85ae7121f6d6 386 {
Armand 0:85ae7121f6d6 387 DrawKeypad(Keypadx, Keypady, char1, char2, char3, char4, char5, char6, char7, char8, char9, char10, char11, char12, char13, char14, char15, char16);
Armand 0:85ae7121f6d6 388 keypad = 0;
Armand 0:85ae7121f6d6 389 }
Armand 0:85ae7121f6d6 390
Armand 0:85ae7121f6d6 391 if(TS_State.touchDetected== 0)
Armand 0:85ae7121f6d6 392 {
Armand 0:85ae7121f6d6 393 DrawKeypad(Keypadx, Keypady, char1, char2, char3, char4, char5, char6, char7, char8, char9, char10, char11, char12, char13, char14, char15, char16);
Armand 0:85ae7121f6d6 394 a = 0;
Armand 0:85ae7121f6d6 395 b = 0;
Armand 0:85ae7121f6d6 396 correcttouch = 0;
Armand 0:85ae7121f6d6 397 state = 0;
Armand 0:85ae7121f6d6 398 }
Armand 0:85ae7121f6d6 399
Armand 0:85ae7121f6d6 400 }break;
Armand 0:85ae7121f6d6 401 }
Armand 0:85ae7121f6d6 402 }
Armand 0:85ae7121f6d6 403
Armand 0:85ae7121f6d6 404 DrawKeypad(Keypadx, Keypady, char1, char2, char3, char4, char5, char6, char7, char8, char9, char10, char11, char12, char13, char14, char15, char16);
Armand 0:85ae7121f6d6 405 keypad = 0;
Armand 0:85ae7121f6d6 406 lcd.SetTextColor(Bckclr);
Armand 0:85ae7121f6d6 407 lcd.FillRect(keypadstartX[0][0],keypadstartY[0][0], 230, 230);
Armand 0:85ae7121f6d6 408 lcd.SetTextColor(Txtclr);
Armand 0:85ae7121f6d6 409
Armand 0:85ae7121f6d6 410 return(keypressed);
Armand 0:85ae7121f6d6 411 }
Armand 0:85ae7121f6d6 412
Armand 0:85ae7121f6d6 413 void F7_Keypad_SingleKey::DrawKeypad(uint8_t startpointx, uint8_t startpointy,char char1, char char2, char char3, char char4, char char5, char char6, char char7, char char8, char char9, char char10, char char11, char char12, char char13, char char14, char char15, char char16)
Armand 0:85ae7121f6d6 414 {
Armand 0:85ae7121f6d6 415 int i, o, stepx = 0, stepy = 0, drawstartx, drawstarty;
Armand 0:85ae7121f6d6 416 uint8_t text[30];
Armand 0:85ae7121f6d6 417
Armand 0:85ae7121f6d6 418 char keyval[4][4] = {{char1, char2, char3, char4},
Armand 0:85ae7121f6d6 419 {char5, char6, char7, char8},
Armand 0:85ae7121f6d6 420 {char9, char10, char11, char12},
Armand 0:85ae7121f6d6 421 {char13, char14, char15, char16}
Armand 0:85ae7121f6d6 422 };
Armand 0:85ae7121f6d6 423 keypad = 1;
Armand 0:85ae7121f6d6 424
Armand 0:85ae7121f6d6 425 for(o= 0; o< 4; o++)
Armand 0:85ae7121f6d6 426 {
Armand 0:85ae7121f6d6 427 for(i= 0; i < 4; i++)
Armand 0:85ae7121f6d6 428 {
Armand 0:85ae7121f6d6 429 lcd.SetTextColor(LCD_COLOR_WHITE);
Armand 0:85ae7121f6d6 430
Armand 0:85ae7121f6d6 431 lcd.FillRect(drawstartx = startpointx + stepx, drawstarty = startpointy + stepy, btnsize, btnsize);
Armand 0:85ae7121f6d6 432 keypadstartX[i][o] = drawstartx;
Armand 0:85ae7121f6d6 433 keypadstartY[i][o] = drawstarty;
Armand 0:85ae7121f6d6 434 keypadendX[i][o] = drawstartx + 50;
Armand 0:85ae7121f6d6 435 keypadendY[i][o] = drawstarty + 50;
Armand 0:85ae7121f6d6 436 stepy += 60;
Armand 0:85ae7121f6d6 437
Armand 0:85ae7121f6d6 438 lcd.SetBackColor(LCD_COLOR_WHITE);
Armand 0:85ae7121f6d6 439 lcd.SetTextColor(LCD_COLOR_BLACK);
Armand 0:85ae7121f6d6 440 lcd.SetFont(&Font20);
Armand 0:85ae7121f6d6 441 sprintf((char*)text, "%c", keyval[i][o]);
Armand 0:85ae7121f6d6 442 lcd.DisplayStringAt(drawstartx+ 20, drawstarty+ 20, (uint8_t *)&text, LEFT_MODE);
Armand 0:85ae7121f6d6 443
Armand 0:85ae7121f6d6 444
Armand 0:85ae7121f6d6 445 if(stepy > 180)
Armand 0:85ae7121f6d6 446 {
Armand 0:85ae7121f6d6 447 stepy = 0;
Armand 0:85ae7121f6d6 448 }
Armand 0:85ae7121f6d6 449 }
Armand 0:85ae7121f6d6 450
Armand 0:85ae7121f6d6 451 stepx += 60;
Armand 0:85ae7121f6d6 452 }
Armand 0:85ae7121f6d6 453
Armand 0:85ae7121f6d6 454 lcd.SetTextColor(Txtclr);
Armand 0:85ae7121f6d6 455 lcd.SetBackColor(Bckclr);
Armand 0:85ae7121f6d6 456 lcd.SetFont(FontSize);
Armand 0:85ae7121f6d6 457 }
Armand 0:85ae7121f6d6 458
Armand 0:85ae7121f6d6 459
Armand 0:85ae7121f6d6 460
Armand 0:85ae7121f6d6 461