Basic calculator example to show the LPC4088 Experiment Base Board with a touch LCD from DisplayModule
Dependencies: DmTftLibrary mbed
Fork of dm_calc by
main.cpp@4:71588a1e3618, 2014-09-10 (annotated)
- Committer:
- embeddedartists
- Date:
- Wed Sep 10 12:48:14 2014 +0000
- Revision:
- 4:71588a1e3618
- Parent:
- 2:b17b19212e5a
- Child:
- 5:d2802a0c5af2
Updated documentation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
displaymodule | 0:3713b01e72fe | 1 | /********************************************************************************************** |
displaymodule | 0:3713b01e72fe | 2 | Copyright (c) 2014 DisplayModule. All rights reserved. |
displaymodule | 0:3713b01e72fe | 3 | |
displaymodule | 0:3713b01e72fe | 4 | Redistribution and use of this source code, part of this source code or any compiled binary |
displaymodule | 0:3713b01e72fe | 5 | based on this source code is permitted as long as the above copyright notice and following |
displaymodule | 0:3713b01e72fe | 6 | disclaimer is retained. |
displaymodule | 0:3713b01e72fe | 7 | |
displaymodule | 0:3713b01e72fe | 8 | DISCLAIMER: |
displaymodule | 0:3713b01e72fe | 9 | THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES |
displaymodule | 0:3713b01e72fe | 10 | NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE. |
displaymodule | 0:3713b01e72fe | 11 | ********************************************************************************************/ |
displaymodule | 0:3713b01e72fe | 12 | |
displaymodule | 0:3713b01e72fe | 13 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 14 | * Includes |
displaymodule | 0:3713b01e72fe | 15 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 16 | |
displaymodule | 0:3713b01e72fe | 17 | #include "mbed.h" |
displaymodule | 0:3713b01e72fe | 18 | |
displaymodule | 0:3713b01e72fe | 19 | #include "DmTftHX8353C.h" |
displaymodule | 0:3713b01e72fe | 20 | #include "DmTftS6D0164.h" |
displaymodule | 0:3713b01e72fe | 21 | #include "DmTftIli9325.h" |
displaymodule | 0:3713b01e72fe | 22 | #include "DmTftIli9341.h" |
displaymodule | 0:3713b01e72fe | 23 | #include "DmTftSsd2119.h" |
displaymodule | 0:3713b01e72fe | 24 | #include "DmTouch.h" |
displaymodule | 0:3713b01e72fe | 25 | |
displaymodule | 0:3713b01e72fe | 26 | #include "Button.h" |
displaymodule | 0:3713b01e72fe | 27 | |
displaymodule | 0:3713b01e72fe | 28 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 29 | * Typedefs and defines |
displaymodule | 0:3713b01e72fe | 30 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 31 | |
displaymodule | 0:3713b01e72fe | 32 | typedef enum { |
displaymodule | 0:3713b01e72fe | 33 | MODE_WANT_ARG1, |
displaymodule | 0:3713b01e72fe | 34 | MODE_WANT_ARG1_OR_OP, |
displaymodule | 0:3713b01e72fe | 35 | MODE_WANT_ARG2, |
displaymodule | 0:3713b01e72fe | 36 | MODE_WANT_ARG2_OR_OP, |
displaymodule | 0:3713b01e72fe | 37 | } calc_mode_t; |
displaymodule | 0:3713b01e72fe | 38 | |
displaymodule | 0:3713b01e72fe | 39 | #define MARGIN 5 |
displaymodule | 0:3713b01e72fe | 40 | |
displaymodule | 0:3713b01e72fe | 41 | #define RESULT_MARGIN_X (MARGIN*3) |
displaymodule | 0:3713b01e72fe | 42 | #define RESULT_MARGIN_Y (MARGIN*3) |
displaymodule | 0:3713b01e72fe | 43 | |
displaymodule | 0:3713b01e72fe | 44 | #define NUM_BUTTONS (sizeof(captions)/sizeof(captions[0])) |
displaymodule | 0:3713b01e72fe | 45 | |
embeddedartists | 4:71588a1e3618 | 46 | #if 0 |
embeddedartists | 4:71588a1e3618 | 47 | /* Displays without adapter (DM_TFT28_105 & DM_TFT35_107) */ |
displaymodule | 1:9a3ae682a75e | 48 | #define DM_PIN_CS_TOUCH D4 |
displaymodule | 1:9a3ae682a75e | 49 | #define DM_PIN_CS_TFT D10 |
displaymodule | 1:9a3ae682a75e | 50 | #define DM_PIN_CS_SDCARD D8 |
displaymodule | 1:9a3ae682a75e | 51 | #define DM_PIN_CS_FLASH D6 |
displaymodule | 1:9a3ae682a75e | 52 | #else |
embeddedartists | 4:71588a1e3618 | 53 | /* Displays with adapter (all other displays) */ |
embeddedartists | 4:71588a1e3618 | 54 | #define DM_PIN_CS_TFT D4 |
displaymodule | 1:9a3ae682a75e | 55 | #define DM_PIN_CS_SDCARD D10 |
displaymodule | 1:9a3ae682a75e | 56 | #endif |
displaymodule | 0:3713b01e72fe | 57 | |
displaymodule | 1:9a3ae682a75e | 58 | //#define LANDSCAPE |
displaymodule | 0:3713b01e72fe | 59 | |
displaymodule | 0:3713b01e72fe | 60 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 61 | * Local variables |
displaymodule | 0:3713b01e72fe | 62 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 63 | |
embeddedartists | 4:71588a1e3618 | 64 | DmTftIli9325 tft; /* DM_TFT28_103 and DM_TFT24_104 with adapter in arduino J1 contact */ |
embeddedartists | 4:71588a1e3618 | 65 | //DmTftIli9341 tft; /* DM_TFT28_105 directly in arduino J1 contact (no adapter) */ |
embeddedartists | 4:71588a1e3618 | 66 | //DmTftSsd2119 tft; /* DM_TFT35_107 directly in arduino J1 contact (no adapter) */ |
displaymodule | 0:3713b01e72fe | 67 | |
embeddedartists | 4:71588a1e3618 | 68 | //DmTouch touch(DmTouch::DM_TFT28_103, DmTouch::Software); |
embeddedartists | 4:71588a1e3618 | 69 | DmTouch touch(DmTouch::DM_TFT24_104, DmTouch::Software); |
embeddedartists | 4:71588a1e3618 | 70 | //DmTouch touch(DmTouch::DM_TFT28_105); |
displaymodule | 0:3713b01e72fe | 71 | //DmTouch touch(DmTouch::DM_TFT35_107); |
displaymodule | 0:3713b01e72fe | 72 | |
embeddedartists | 4:71588a1e3618 | 73 | #ifdef DM_PIN_CS_TOUCH |
embeddedartists | 4:71588a1e3618 | 74 | DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1); |
embeddedartists | 4:71588a1e3618 | 75 | #endif |
displaymodule | 0:3713b01e72fe | 76 | DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1); |
displaymodule | 0:3713b01e72fe | 77 | DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1); |
displaymodule | 0:3713b01e72fe | 78 | #ifdef DM_PIN_CS_FLASH |
displaymodule | 0:3713b01e72fe | 79 | DigitalInOut csFlash(DM_PIN_CS_FLASH, PIN_OUTPUT, PullUp, 1); |
displaymodule | 0:3713b01e72fe | 80 | #endif |
displaymodule | 0:3713b01e72fe | 81 | |
displaymodule | 1:9a3ae682a75e | 82 | #ifdef LANDSCAPE |
displaymodule | 1:9a3ae682a75e | 83 | #define BUTTONS_PER_LINE 6 |
displaymodule | 1:9a3ae682a75e | 84 | #define BUTTONS_NUM_LINES 3 |
displaymodule | 1:9a3ae682a75e | 85 | /* |
displaymodule | 1:9a3ae682a75e | 86 | * 1 2 3 4 5 + |
displaymodule | 1:9a3ae682a75e | 87 | * 6 7 8 9 0 - |
displaymodule | 1:9a3ae682a75e | 88 | * * / = clr |
displaymodule | 1:9a3ae682a75e | 89 | */ |
displaymodule | 1:9a3ae682a75e | 90 | const char* captions[] = { |
displaymodule | 1:9a3ae682a75e | 91 | "1","2","3","4","5","+", |
displaymodule | 1:9a3ae682a75e | 92 | "6","7","8","9","0","-", |
displaymodule | 1:9a3ae682a75e | 93 | "*","/","=","clr", |
displaymodule | 1:9a3ae682a75e | 94 | }; |
displaymodule | 1:9a3ae682a75e | 95 | #else |
displaymodule | 1:9a3ae682a75e | 96 | #define BUTTONS_PER_LINE 4 |
displaymodule | 1:9a3ae682a75e | 97 | #define BUTTONS_NUM_LINES 4 |
displaymodule | 1:9a3ae682a75e | 98 | /* |
displaymodule | 1:9a3ae682a75e | 99 | * 1 2 3 + |
displaymodule | 1:9a3ae682a75e | 100 | * 4 5 6 - |
displaymodule | 1:9a3ae682a75e | 101 | * 7 8 9 * |
displaymodule | 1:9a3ae682a75e | 102 | * 0 = clr / |
displaymodule | 1:9a3ae682a75e | 103 | */ |
displaymodule | 1:9a3ae682a75e | 104 | const char* captions[] = { |
displaymodule | 1:9a3ae682a75e | 105 | "1","2","3","+", |
displaymodule | 1:9a3ae682a75e | 106 | "4","5","6","-", |
displaymodule | 1:9a3ae682a75e | 107 | "7","8","9","*", |
displaymodule | 1:9a3ae682a75e | 108 | "0","=","clr","/", |
displaymodule | 1:9a3ae682a75e | 109 | }; |
displaymodule | 1:9a3ae682a75e | 110 | #endif |
displaymodule | 1:9a3ae682a75e | 111 | |
displaymodule | 0:3713b01e72fe | 112 | Button* buttons[NUM_BUTTONS]; |
displaymodule | 0:3713b01e72fe | 113 | |
displaymodule | 0:3713b01e72fe | 114 | static char buff[25] = {0}; |
displaymodule | 0:3713b01e72fe | 115 | static bool redrawResult = true; |
displaymodule | 0:3713b01e72fe | 116 | static bool clearResult = true; |
displaymodule | 0:3713b01e72fe | 117 | |
displaymodule | 0:3713b01e72fe | 118 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 119 | * Global variables |
displaymodule | 0:3713b01e72fe | 120 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 121 | |
displaymodule | 0:3713b01e72fe | 122 | |
displaymodule | 0:3713b01e72fe | 123 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 124 | * Local functions |
displaymodule | 0:3713b01e72fe | 125 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 126 | |
displaymodule | 0:3713b01e72fe | 127 | void handleClick(uint32_t arg) |
displaymodule | 0:3713b01e72fe | 128 | { |
displaymodule | 0:3713b01e72fe | 129 | static int val1 = 0; |
displaymodule | 0:3713b01e72fe | 130 | static int val2 = 0; |
displaymodule | 0:3713b01e72fe | 131 | static int op = 0; |
displaymodule | 0:3713b01e72fe | 132 | static calc_mode_t mode = MODE_WANT_ARG1; |
displaymodule | 0:3713b01e72fe | 133 | static int strpos = 0; |
displaymodule | 0:3713b01e72fe | 134 | |
displaymodule | 0:3713b01e72fe | 135 | switch (arg) |
displaymodule | 0:3713b01e72fe | 136 | { |
displaymodule | 0:3713b01e72fe | 137 | case '0': |
displaymodule | 0:3713b01e72fe | 138 | case '1': |
displaymodule | 0:3713b01e72fe | 139 | case '2': |
displaymodule | 0:3713b01e72fe | 140 | case '3': |
displaymodule | 0:3713b01e72fe | 141 | case '4': |
displaymodule | 0:3713b01e72fe | 142 | case '5': |
displaymodule | 0:3713b01e72fe | 143 | case '6': |
displaymodule | 0:3713b01e72fe | 144 | case '7': |
displaymodule | 0:3713b01e72fe | 145 | case '8': |
displaymodule | 0:3713b01e72fe | 146 | case '9': |
displaymodule | 0:3713b01e72fe | 147 | if ((mode == MODE_WANT_ARG1) || (mode == MODE_WANT_ARG1_OR_OP)) { |
displaymodule | 0:3713b01e72fe | 148 | val1 = val1*10 + (arg - '0'); |
displaymodule | 0:3713b01e72fe | 149 | mode = MODE_WANT_ARG1_OR_OP; |
displaymodule | 0:3713b01e72fe | 150 | buff[strpos++] = arg; |
displaymodule | 0:3713b01e72fe | 151 | } else if ((mode == MODE_WANT_ARG2) || (mode == MODE_WANT_ARG2_OR_OP)) { |
displaymodule | 0:3713b01e72fe | 152 | val2 = val2*10 + (arg - '0'); |
displaymodule | 0:3713b01e72fe | 153 | mode = MODE_WANT_ARG2_OR_OP; |
displaymodule | 0:3713b01e72fe | 154 | buff[strpos++] = arg; |
displaymodule | 0:3713b01e72fe | 155 | } |
displaymodule | 0:3713b01e72fe | 156 | break; |
displaymodule | 0:3713b01e72fe | 157 | case '+': |
displaymodule | 0:3713b01e72fe | 158 | case '-': |
displaymodule | 0:3713b01e72fe | 159 | case '*': |
displaymodule | 0:3713b01e72fe | 160 | case '/': |
displaymodule | 0:3713b01e72fe | 161 | if (mode == MODE_WANT_ARG1_OR_OP) { |
displaymodule | 0:3713b01e72fe | 162 | op = arg; |
displaymodule | 0:3713b01e72fe | 163 | mode = MODE_WANT_ARG2; |
displaymodule | 0:3713b01e72fe | 164 | buff[strpos++] = arg; |
displaymodule | 0:3713b01e72fe | 165 | } else if (mode == MODE_WANT_ARG2_OR_OP) { |
displaymodule | 0:3713b01e72fe | 166 | // already have "a op b", calculate it and go to "c op" |
displaymodule | 0:3713b01e72fe | 167 | switch (op) { |
displaymodule | 0:3713b01e72fe | 168 | case '+': val1 = val1 + val2; break; |
displaymodule | 0:3713b01e72fe | 169 | case '-': val1 = val1 - val2; break; |
displaymodule | 0:3713b01e72fe | 170 | case '*': val1 = val1 * val2; break; |
displaymodule | 0:3713b01e72fe | 171 | case '/': val1 = val1 / val2; break; |
displaymodule | 0:3713b01e72fe | 172 | } |
displaymodule | 0:3713b01e72fe | 173 | op = arg; |
displaymodule | 0:3713b01e72fe | 174 | val2 = 0; |
displaymodule | 0:3713b01e72fe | 175 | mode = MODE_WANT_ARG2; |
displaymodule | 0:3713b01e72fe | 176 | strpos = sprintf(buff, "%d%c", val1, op); |
displaymodule | 0:3713b01e72fe | 177 | clearResult = true; |
displaymodule | 0:3713b01e72fe | 178 | } |
displaymodule | 0:3713b01e72fe | 179 | break; |
displaymodule | 0:3713b01e72fe | 180 | case 'c': |
displaymodule | 0:3713b01e72fe | 181 | val1 = val2 = op = 0; |
displaymodule | 0:3713b01e72fe | 182 | mode = MODE_WANT_ARG1; |
displaymodule | 0:3713b01e72fe | 183 | strpos = 0; |
displaymodule | 0:3713b01e72fe | 184 | clearResult = true; |
displaymodule | 0:3713b01e72fe | 185 | break; |
displaymodule | 0:3713b01e72fe | 186 | case '=': |
displaymodule | 0:3713b01e72fe | 187 | default: |
displaymodule | 0:3713b01e72fe | 188 | if (mode == MODE_WANT_ARG2_OR_OP) { |
displaymodule | 0:3713b01e72fe | 189 | // already have "a op b", calculate it and go to "c" |
displaymodule | 0:3713b01e72fe | 190 | switch (op) { |
displaymodule | 0:3713b01e72fe | 191 | case '+': val1 = val1 + val2; break; |
displaymodule | 0:3713b01e72fe | 192 | case '-': val1 = val1 - val2; break; |
displaymodule | 0:3713b01e72fe | 193 | case '*': val1 = val1 * val2; break; |
displaymodule | 0:3713b01e72fe | 194 | case '/': val1 = val1 / val2; break; |
displaymodule | 0:3713b01e72fe | 195 | } |
displaymodule | 0:3713b01e72fe | 196 | mode = MODE_WANT_ARG1_OR_OP; |
displaymodule | 0:3713b01e72fe | 197 | val2 = 0; |
displaymodule | 0:3713b01e72fe | 198 | strpos = sprintf(buff, "%d", val1); |
displaymodule | 0:3713b01e72fe | 199 | clearResult = true; |
displaymodule | 0:3713b01e72fe | 200 | } |
displaymodule | 0:3713b01e72fe | 201 | break; |
displaymodule | 0:3713b01e72fe | 202 | } |
displaymodule | 0:3713b01e72fe | 203 | buff[strpos] = '\0'; |
displaymodule | 0:3713b01e72fe | 204 | redrawResult = true; |
displaymodule | 0:3713b01e72fe | 205 | } |
displaymodule | 0:3713b01e72fe | 206 | |
displaymodule | 0:3713b01e72fe | 207 | /****************************************************************************** |
displaymodule | 0:3713b01e72fe | 208 | * Main |
displaymodule | 0:3713b01e72fe | 209 | *****************************************************************************/ |
displaymodule | 0:3713b01e72fe | 210 | |
embeddedartists | 4:71588a1e3618 | 211 | /* |
embeddedartists | 4:71588a1e3618 | 212 | Hardware Setup: |
embeddedartists | 4:71588a1e3618 | 213 | |
embeddedartists | 4:71588a1e3618 | 214 | - Jumpers JP1..JP6 should be in position 1-2 |
embeddedartists | 4:71588a1e3618 | 215 | - Jumpers in J14 should NOT be inserted |
embeddedartists | 4:71588a1e3618 | 216 | - Jumper J7 should be inserted |
embeddedartists | 4:71588a1e3618 | 217 | - Display in arduino socket J1 depending on display |
embeddedartists | 4:71588a1e3618 | 218 | */ |
embeddedartists | 4:71588a1e3618 | 219 | |
embeddedartists | 4:71588a1e3618 | 220 | /* |
embeddedartists | 4:71588a1e3618 | 221 | Test Comments: |
embeddedartists | 4:71588a1e3618 | 222 | |
embeddedartists | 4:71588a1e3618 | 223 | - This example cannot be used with the DM-TFT18-101 or DM-TFT22-102 displays |
embeddedartists | 4:71588a1e3618 | 224 | as they don't have touch support. |
embeddedartists | 4:71588a1e3618 | 225 | - The DM-TFT22-102, DM-TFT28-103 and DM-TFT24-104 must all be used on top |
embeddedartists | 4:71588a1e3618 | 226 | of the DM-ADTAU-001 board in the arduino J1 socket. |
embeddedartists | 4:71588a1e3618 | 227 | - The DM-TFT28-105 and DM-TFT35-107 displays have direct arduino pinning and |
embeddedartists | 4:71588a1e3618 | 228 | can be inserted directly in the J1 socket. |
embeddedartists | 4:71588a1e3618 | 229 | */ |
embeddedartists | 4:71588a1e3618 | 230 | |
displaymodule | 0:3713b01e72fe | 231 | int main() { |
displaymodule | 0:3713b01e72fe | 232 | uint16_t x = 0; |
displaymodule | 0:3713b01e72fe | 233 | uint16_t y = 0; |
displaymodule | 0:3713b01e72fe | 234 | uint16_t w = tft.width(); |
displaymodule | 0:3713b01e72fe | 235 | uint16_t h = tft.height(); |
displaymodule | 1:9a3ae682a75e | 236 | uint16_t size = (w - (BUTTONS_PER_LINE + 1)*MARGIN)/BUTTONS_PER_LINE; |
displaymodule | 1:9a3ae682a75e | 237 | uint16_t yoff = h - (size + MARGIN)*BUTTONS_NUM_LINES; |
displaymodule | 0:3713b01e72fe | 238 | bool down = false; |
displaymodule | 0:3713b01e72fe | 239 | |
displaymodule | 0:3713b01e72fe | 240 | for (int i = 0; i < NUM_BUTTONS;i++) { |
displaymodule | 1:9a3ae682a75e | 241 | x = MARGIN + (size + MARGIN) * (i % BUTTONS_PER_LINE); |
displaymodule | 1:9a3ae682a75e | 242 | y = yoff + (size + MARGIN) * (i / BUTTONS_PER_LINE); |
displaymodule | 0:3713b01e72fe | 243 | buttons[i] = new Button(captions[i], x, y, size, size); |
displaymodule | 0:3713b01e72fe | 244 | buttons[i]->setAction(handleClick, captions[i][0]); |
displaymodule | 0:3713b01e72fe | 245 | } |
displaymodule | 0:3713b01e72fe | 246 | |
displaymodule | 0:3713b01e72fe | 247 | tft.init(); |
displaymodule | 0:3713b01e72fe | 248 | tft.clearScreen(BRIGHT_RED); |
displaymodule | 0:3713b01e72fe | 249 | tft.fillRectangle(RESULT_MARGIN_X, RESULT_MARGIN_Y, w-RESULT_MARGIN_X, yoff-RESULT_MARGIN_Y, BLACK); |
displaymodule | 0:3713b01e72fe | 250 | touch.init(); |
displaymodule | 0:3713b01e72fe | 251 | |
displaymodule | 0:3713b01e72fe | 252 | for (int i = 0; i < NUM_BUTTONS; i++) { |
displaymodule | 0:3713b01e72fe | 253 | buttons[i]->draw(&tft); |
displaymodule | 0:3713b01e72fe | 254 | } |
displaymodule | 0:3713b01e72fe | 255 | |
displaymodule | 0:3713b01e72fe | 256 | while(true) { |
displaymodule | 0:3713b01e72fe | 257 | touch.readTouchData(x, y, down); |
displaymodule | 0:3713b01e72fe | 258 | |
displaymodule | 2:b17b19212e5a | 259 | /* The following printouts are for some unexplainable reason needed |
displaymodule | 2:b17b19212e5a | 260 | on the LPC4088 QuickStart Board in combination with the MBED online compiler. |
displaymodule | 2:b17b19212e5a | 261 | The printouts are not needed when using an external compiler, e.g. Keil uVision |
displaymodule | 2:b17b19212e5a | 262 | or LPCXpresso IDE. */ |
displaymodule | 2:b17b19212e5a | 263 | #if defined(__LPC407x_8x_177x_8x_H__) |
displaymodule | 2:b17b19212e5a | 264 | if (down) { |
displaymodule | 2:b17b19212e5a | 265 | printf("DOWN %4d, %4d\n", x, y); |
displaymodule | 2:b17b19212e5a | 266 | } else { |
displaymodule | 2:b17b19212e5a | 267 | printf("UP %4d, %4d\n", x, y); |
displaymodule | 2:b17b19212e5a | 268 | } |
displaymodule | 2:b17b19212e5a | 269 | #endif |
displaymodule | 2:b17b19212e5a | 270 | |
displaymodule | 0:3713b01e72fe | 271 | for (int i = 0; i < NUM_BUTTONS; i++) { |
displaymodule | 0:3713b01e72fe | 272 | if (buttons[i]->handle(x, y, down)) { |
displaymodule | 0:3713b01e72fe | 273 | buttons[i]->draw(&tft); |
displaymodule | 0:3713b01e72fe | 274 | } |
displaymodule | 0:3713b01e72fe | 275 | } |
displaymodule | 0:3713b01e72fe | 276 | if (clearResult) { |
displaymodule | 0:3713b01e72fe | 277 | clearResult = false; |
displaymodule | 0:3713b01e72fe | 278 | tft.fillRectangle(RESULT_MARGIN_X, RESULT_MARGIN_Y, w-RESULT_MARGIN_X, yoff-RESULT_MARGIN_Y, BLACK); |
displaymodule | 0:3713b01e72fe | 279 | } |
displaymodule | 0:3713b01e72fe | 280 | if (redrawResult) { |
displaymodule | 0:3713b01e72fe | 281 | redrawResult = false; |
displaymodule | 0:3713b01e72fe | 282 | tft.drawStringCentered(RESULT_MARGIN_X, RESULT_MARGIN_Y, w-RESULT_MARGIN_X, yoff-RESULT_MARGIN_Y, &buff[0]); |
displaymodule | 0:3713b01e72fe | 283 | } |
displaymodule | 0:3713b01e72fe | 284 | wait(0.02); |
displaymodule | 0:3713b01e72fe | 285 | } |
displaymodule | 0:3713b01e72fe | 286 | } |