STM32F7-Discovery - TFT + Touch and Count down Timer Ver.1.0.5

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed

Fork of F746NG_TIMER by Enrico Marinoni

Committer:
emcu
Date:
Fri Mar 04 10:20:28 2016 +0000
Revision:
4:0d9d4ea58fdb
Parent:
3:a99d1624ff73
STM32F7-Discovery - TFT + Touch and Count down Timer; Ver.1.0.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emcu 0:ef97dc9b062e 1 /*
emcu 0:ef97dc9b062e 2
emcu 2:a448d80c91b5 3 Countdown Timer from 1 to 199 minutes
emcu 0:ef97dc9b062e 4
emcu 0:ef97dc9b062e 5 STM32F7-Discovery Demo by www.emcu.it
emcu 0:ef97dc9b062e 6
emcu 0:ef97dc9b062e 7 Date: Feb.2016
emcu 4:0d9d4ea58fdb 8 Ver.: 1.0.5
emcu 0:ef97dc9b062e 9
emcu 0:ef97dc9b062e 10 *
emcu 0:ef97dc9b062e 11 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
emcu 0:ef97dc9b062e 12 * and associated documentation files (the "Software"), to deal in the Software without
emcu 0:ef97dc9b062e 13 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
emcu 0:ef97dc9b062e 14 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
emcu 0:ef97dc9b062e 15 * Software is furnished to do so, subject to the following conditions:
emcu 0:ef97dc9b062e 16 *
emcu 0:ef97dc9b062e 17 * The above copyright notice and this permission notice shall be included in all copies or
emcu 0:ef97dc9b062e 18 * substantial portions of the Software.
emcu 0:ef97dc9b062e 19 *
emcu 0:ef97dc9b062e 20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
emcu 0:ef97dc9b062e 21 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
emcu 0:ef97dc9b062e 22 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
emcu 0:ef97dc9b062e 23 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
emcu 0:ef97dc9b062e 24 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
emcu 0:ef97dc9b062e 25 *
emcu 0:ef97dc9b062e 26
emcu 0:ef97dc9b062e 27 */
emcu 0:ef97dc9b062e 28
emcu 0:ef97dc9b062e 29 #include "TS_DISCO_F746NG.h"
emcu 0:ef97dc9b062e 30 #include "LCD_DISCO_F746NG.h"
emcu 1:478d8983fdde 31 #include <string>
emcu 1:478d8983fdde 32
emcu 1:478d8983fdde 33 // LCD color
emcu 1:478d8983fdde 34 #define LCD_BLUE ((uint32_t)0xFF0000FF)
emcu 1:478d8983fdde 35 #define LCD_GREEN ((uint32_t)0xFF00FF00)
emcu 1:478d8983fdde 36 #define LCD_RED ((uint32_t)0xFFFF0000)
emcu 1:478d8983fdde 37 #define LCD_CYAN ((uint32_t)0xFF00FFFF)
emcu 1:478d8983fdde 38 #define LCD_MAGENTA ((uint32_t)0xFFFF00FF)
emcu 1:478d8983fdde 39 #define LCD_YELLOW ((uint32_t)0xFFFFFF00)
emcu 1:478d8983fdde 40 #define LCD_LIGHTBLUE ((uint32_t)0xFF8080FF)
emcu 1:478d8983fdde 41 #define LCD_LIGHTGREEN ((uint32_t)0xFF80FF80)
emcu 1:478d8983fdde 42 #define LCD_LIGHTRED ((uint32_t)0xFFFF8080)
emcu 1:478d8983fdde 43 #define LCD_LIGHTCYAN ((uint32_t)0xFF80FFFF)
emcu 1:478d8983fdde 44 #define LCD_LIGHTMAGENTA ((uint32_t)0xFFFF80FF)
emcu 1:478d8983fdde 45 #define LCD_LIGHTYELLOW ((uint32_t)0xFFFFFF80)
emcu 1:478d8983fdde 46 #define LCD_DARKBLUE ((uint32_t)0xFF000080)
emcu 1:478d8983fdde 47 #define LCD_COLOR_DARKGREEN ((uint32_t)0xFF008000)
emcu 1:478d8983fdde 48 #define LCD_COLOR_DARKRED ((uint32_t)0xFF800000)
emcu 1:478d8983fdde 49 #define LCD_COLOR_DARKCYAN ((uint32_t)0xFF008080)
emcu 1:478d8983fdde 50 #define LCD_COLOR_DARKMAGENTA ((uint32_t)0xFF800080)
emcu 1:478d8983fdde 51 #define LCD_COLOR_DARKYELLOW ((uint32_t)0xFF808000)
emcu 1:478d8983fdde 52 #define LCD_COLOR_WHITE ((uint32_t)0xFFFFFFFF)
emcu 1:478d8983fdde 53 #define LCD_COLOR_LIGHTGRAY ((uint32_t)0xFFD3D3D3)
emcu 1:478d8983fdde 54 #define LCD_COLOR_GRAY ((uint32_t)0xFF808080)
emcu 1:478d8983fdde 55 #define LCD_COLOR_DARKGRAY ((uint32_t)0xFF404040)
emcu 1:478d8983fdde 56 #define LCD_COLOR_BLACK ((uint32_t)0xFF000000)
emcu 1:478d8983fdde 57 #define LCD_COLOR_BROWN ((uint32_t)0xFFA52A2A)
emcu 1:478d8983fdde 58 #define LCD_COLOR_ORANGE ((uint32_t)0xFFFFA500)
emcu 1:478d8983fdde 59 #define LCD_COLOR_TRANSPARENT ((uint32_t)0xFF000000)
emcu 0:ef97dc9b062e 60
emcu 0:ef97dc9b062e 61 LCD_DISCO_F746NG lcd;
emcu 0:ef97dc9b062e 62 TS_DISCO_F746NG ts;
emcu 0:ef97dc9b062e 63 DigitalOut led1(LED1);
emcu 0:ef97dc9b062e 64
emcu 0:ef97dc9b062e 65 int pos = 1;
emcu 1:478d8983fdde 66 // uint8_t min = 45;
emcu 1:478d8983fdde 67 uint8_t _min = 45;
emcu 0:ef97dc9b062e 68 uint8_t Mem_min = 45;
emcu 0:ef97dc9b062e 69 uint16_t xpos=20, ypos=5;
emcu 0:ef97dc9b062e 70 int n=0;
emcu 1:478d8983fdde 71 int tcount = 45;
emcu 1:478d8983fdde 72
emcu 0:ef97dc9b062e 73
emcu 0:ef97dc9b062e 74 void Logo(void);
emcu 1:478d8983fdde 75 void FillBox(uint32_t color, int x, int y, int larg, int alt);
emcu 1:478d8983fdde 76 void DisplayBigNumber(uint8_t Numero);
emcu 1:478d8983fdde 77 void VisNumber(int x, int y, uint32_t color, uint8_t v, uint32_t colorBackground);
emcu 1:478d8983fdde 78 void draw1(int x, int y, uint32_t color);
emcu 1:478d8983fdde 79 void draw2(int x, int y, uint32_t color);
emcu 1:478d8983fdde 80 void draw3(int x, int y, uint32_t color);
emcu 1:478d8983fdde 81 void draw4(int x, int y, uint32_t color);
emcu 1:478d8983fdde 82 void draw5(int x, int y, uint32_t color);
emcu 1:478d8983fdde 83 void draw6(int x, int y, uint32_t color);
emcu 1:478d8983fdde 84 void draw7(int x, int y, uint32_t color);
emcu 1:478d8983fdde 85 void draw8(int x, int y, uint32_t color);
emcu 1:478d8983fdde 86 void draw9(int x, int y, uint32_t color);
emcu 1:478d8983fdde 87 void draw0(int x, int y, uint32_t color);
emcu 0:ef97dc9b062e 88
emcu 0:ef97dc9b062e 89 int main()
emcu 0:ef97dc9b062e 90 {
emcu 0:ef97dc9b062e 91 led1 = 1;
emcu 0:ef97dc9b062e 92
emcu 0:ef97dc9b062e 93 TS_StateTypeDef TS_State;
emcu 0:ef97dc9b062e 94
emcu 0:ef97dc9b062e 95 uint16_t x, y;
emcu 0:ef97dc9b062e 96 uint8_t idx;
emcu 0:ef97dc9b062e 97 uint8_t text[30];
emcu 0:ef97dc9b062e 98 int Count=0;
emcu 0:ef97dc9b062e 99 int Minuti=0;
emcu 0:ef97dc9b062e 100 int n=0;
emcu 0:ef97dc9b062e 101
emcu 0:ef97dc9b062e 102
emcu 0:ef97dc9b062e 103 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 104 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 105
emcu 0:ef97dc9b062e 106 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 107 lcd.DisplayStringAt(0, LINE(1), (uint8_t *)" By: www.emcu.it ", CENTER_MODE);
emcu 0:ef97dc9b062e 108 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 109 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" Written using mBed ", CENTER_MODE);
emcu 0:ef97dc9b062e 110 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 111 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" Touch the screen ", CENTER_MODE);
emcu 0:ef97dc9b062e 112 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" for continue. ", CENTER_MODE);
emcu 0:ef97dc9b062e 113 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 114
emcu 1:478d8983fdde 115 /*
emcu 1:478d8983fdde 116 draw1(10, 200, LCD_YELLOW);
emcu 1:478d8983fdde 117 draw2(60, 200, LCD_GREEN);
emcu 1:478d8983fdde 118 draw3(110, 200, LCD_RED);
emcu 1:478d8983fdde 119 draw4(160, 200, LCD_BLUE);
emcu 1:478d8983fdde 120 draw5(210, 200, LCD_CYAN);
emcu 1:478d8983fdde 121 draw6(260, 200, LCD_YELLOW);
emcu 1:478d8983fdde 122 draw7(310, 200, LCD_GREEN);
emcu 1:478d8983fdde 123 draw8(360, 200, LCD_RED);
emcu 1:478d8983fdde 124 draw9(410, 200, LCD_BLUE);
emcu 1:478d8983fdde 125 draw0(10, 200, LCD_CYAN);
emcu 1:478d8983fdde 126 */
emcu 1:478d8983fdde 127
emcu 0:ef97dc9b062e 128 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 129 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 130 {
emcu 0:ef97dc9b062e 131 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 132 }
emcu 0:ef97dc9b062e 133
emcu 0:ef97dc9b062e 134 // ReStart:
emcu 0:ef97dc9b062e 135
emcu 0:ef97dc9b062e 136 while(1)
emcu 0:ef97dc9b062e 137 {
emcu 0:ef97dc9b062e 138 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 139 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 140 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 141 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)" By: www.emcu.it ", CENTER_MODE);
emcu 0:ef97dc9b062e 142 lcd.DisplayStringAt(0, LINE(1), (uint8_t *)" Touch the screen for: ", CENTER_MODE);
emcu 0:ef97dc9b062e 143 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" LEFT for decrease MIN ", CENTER_MODE);
emcu 0:ef97dc9b062e 144 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" RIGHT for increase MIN ", CENTER_MODE);
emcu 0:ef97dc9b062e 145 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" REDbox for start TIMER ", CENTER_MODE);
emcu 0:ef97dc9b062e 146 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" ", CENTER_MODE);
emcu 3:a99d1624ff73 147 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 3:a99d1624ff73 148 lcd.SetTextColor(LCD_COLOR_BLACK);
emcu 1:478d8983fdde 149 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 1:478d8983fdde 150 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" ", CENTER_MODE);
emcu 3:a99d1624ff73 151 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 3:a99d1624ff73 152 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 153 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 154 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 155
emcu 0:ef97dc9b062e 156 // Draw the RED box that indicate the area to touch for start Timer
emcu 4:0d9d4ea58fdb 157 FillBox(0xFFFF0000, (lcd.GetXSize()/2)-25, 200, 50, 50);
emcu 0:ef97dc9b062e 158
emcu 0:ef97dc9b062e 159 // Whait touch
emcu 0:ef97dc9b062e 160 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 161 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 162 {
emcu 0:ef97dc9b062e 163 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 164 }
emcu 0:ef97dc9b062e 165
emcu 0:ef97dc9b062e 166
emcu 0:ef97dc9b062e 167 // Increment
emcu 0:ef97dc9b062e 168 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 169 if ((TS_State.touchDetected) && (TS_State.touchX[0] > 400))
emcu 0:ef97dc9b062e 170 {
emcu 1:478d8983fdde 171 _min++;
emcu 2:a448d80c91b5 172 if (_min>199)
emcu 2:a448d80c91b5 173 _min=199;
emcu 0:ef97dc9b062e 174 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 175 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 176 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 177 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 178 }
emcu 0:ef97dc9b062e 179 // Decrement
emcu 0:ef97dc9b062e 180 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 181 if ((TS_State.touchDetected) && (TS_State.touchX[0] < 200))
emcu 0:ef97dc9b062e 182 {
emcu 1:478d8983fdde 183 _min--;
emcu 1:478d8983fdde 184 if (_min<1)
emcu 1:478d8983fdde 185 _min=1;
emcu 0:ef97dc9b062e 186 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 187 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 188 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 189 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 190 }
emcu 0:ef97dc9b062e 191
emcu 0:ef97dc9b062e 192 // Whait touch
emcu 0:ef97dc9b062e 193 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 194 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 195 {
emcu 0:ef97dc9b062e 196 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 197 }
emcu 0:ef97dc9b062e 198
emcu 0:ef97dc9b062e 199 wait(0.1);
emcu 0:ef97dc9b062e 200
emcu 0:ef97dc9b062e 201 // Draw the RED box that indicate the area to touch for start Timer
emcu 4:0d9d4ea58fdb 202 FillBox(0xFFFF0000, (lcd.GetXSize()/2)-25, 200, 50, 50);
emcu 0:ef97dc9b062e 203
emcu 0:ef97dc9b062e 204 Count=0;
emcu 0:ef97dc9b062e 205
emcu 0:ef97dc9b062e 206 // Get the touch position for Start Timer
emcu 0:ef97dc9b062e 207 for (idx = 0; idx < TS_State.touchDetected; idx++)
emcu 0:ef97dc9b062e 208 {
emcu 0:ef97dc9b062e 209 x = TS_State.touchX[idx];
emcu 0:ef97dc9b062e 210 y = TS_State.touchY[idx];
emcu 4:0d9d4ea58fdb 211 if ((x>((lcd.GetXSize()/2)-25)) & (x<((lcd.GetXSize()/2)+25)) && (y>175 & y<225))
emcu 0:ef97dc9b062e 212 {
emcu 0:ef97dc9b062e 213 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 214 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 215 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 216 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 217 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 218 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 219 Logo();
emcu 0:ef97dc9b062e 220
emcu 1:478d8983fdde 221 tcount=_min;
emcu 0:ef97dc9b062e 222 tcount=tcount*60;
emcu 1:478d8983fdde 223 Mem_min=_min;
emcu 0:ef97dc9b062e 224 Minuti=0;
emcu 0:ef97dc9b062e 225 for (n=0; n<tcount; n++)
emcu 0:ef97dc9b062e 226 {
emcu 0:ef97dc9b062e 227 wait(1); // 60 == 1min
emcu 0:ef97dc9b062e 228
emcu 0:ef97dc9b062e 229 // Show an * for highlight that the program is running
emcu 0:ef97dc9b062e 230 Count++;
emcu 0:ef97dc9b062e 231 if (Count == 1)
emcu 0:ef97dc9b062e 232 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"*", CENTER_MODE);
emcu 0:ef97dc9b062e 233 if (Count == 2)
emcu 0:ef97dc9b062e 234 {
emcu 0:ef97dc9b062e 235 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 236 Count=0;
emcu 0:ef97dc9b062e 237 }
emcu 0:ef97dc9b062e 238
emcu 0:ef97dc9b062e 239 // Counter for minutes
emcu 0:ef97dc9b062e 240 Minuti++;
emcu 0:ef97dc9b062e 241 if (Minuti==60)
emcu 0:ef97dc9b062e 242 {
emcu 1:478d8983fdde 243 _min--;
emcu 0:ef97dc9b062e 244 Minuti=0;
emcu 0:ef97dc9b062e 245 }
emcu 0:ef97dc9b062e 246 else;
emcu 0:ef97dc9b062e 247
emcu 0:ef97dc9b062e 248 // Display the time remaining
emcu 1:478d8983fdde 249 if (_min < 10)
emcu 0:ef97dc9b062e 250 {
emcu 0:ef97dc9b062e 251 //lcd.Clear(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 252 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 253 lcd.SetBackColor(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 254 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 255 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 256 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 3:a99d1624ff73 257 if (Count == 0)
emcu 4:0d9d4ea58fdb 258 // Clear 1° cifra
emcu 3:a99d1624ff73 259 FillBox(LCD_COLOR_BLACK, 300, 200, 40, 70);
emcu 3:a99d1624ff73 260 else
emcu 3:a99d1624ff73 261 DisplayBigNumber(_min);
emcu 0:ef97dc9b062e 262 Logo();
emcu 0:ef97dc9b062e 263 }
emcu 0:ef97dc9b062e 264 else
emcu 0:ef97dc9b062e 265 {
emcu 0:ef97dc9b062e 266 //lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 267 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 268 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 269 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 270 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 271 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 1:478d8983fdde 272 DisplayBigNumber(_min);
emcu 0:ef97dc9b062e 273 Logo();
emcu 0:ef97dc9b062e 274 }
emcu 0:ef97dc9b062e 275 }
emcu 0:ef97dc9b062e 276
emcu 1:478d8983fdde 277 _min=Mem_min;
emcu 0:ef97dc9b062e 278 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 279
emcu 0:ef97dc9b062e 280 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 281 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 282
emcu 0:ef97dc9b062e 283 // Highlight the end of time
emcu 0:ef97dc9b062e 284
emcu 0:ef97dc9b062e 285 // Waiting Touch the screen for restart the program
emcu 0:ef97dc9b062e 286 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 287 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 288 {
emcu 0:ef97dc9b062e 289 lcd.Clear(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 290 lcd.SetBackColor(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 291 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 292 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 293 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" END time... ", CENTER_MODE);
emcu 0:ef97dc9b062e 294 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" STOP the presentation !!! ", CENTER_MODE);
emcu 0:ef97dc9b062e 295 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 296 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 297 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" Touch screen to restart ", CENTER_MODE);
emcu 0:ef97dc9b062e 298 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 299 wait(0.5);
emcu 0:ef97dc9b062e 300
emcu 0:ef97dc9b062e 301 lcd.Clear(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 302 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 303 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 304 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 305 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" END time... ", CENTER_MODE);
emcu 0:ef97dc9b062e 306 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" STOP the presentation !!! ", CENTER_MODE);
emcu 0:ef97dc9b062e 307 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 308 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 309 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" Touch screen to restart ", CENTER_MODE);
emcu 0:ef97dc9b062e 310 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 311 wait(0.5);
emcu 0:ef97dc9b062e 312
emcu 0:ef97dc9b062e 313 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 314 }
emcu 0:ef97dc9b062e 315
emcu 0:ef97dc9b062e 316
emcu 0:ef97dc9b062e 317
emcu 0:ef97dc9b062e 318 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 319 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 320 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 321 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 322 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" Remove your finger from ", CENTER_MODE);
emcu 0:ef97dc9b062e 323 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" the screen ", CENTER_MODE);
emcu 0:ef97dc9b062e 324 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 325 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 326 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 327 // Whait remove touch
emcu 0:ef97dc9b062e 328 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 329 while(TS_State.touchDetected == 1)
emcu 0:ef97dc9b062e 330 {
emcu 0:ef97dc9b062e 331 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 332 }
emcu 0:ef97dc9b062e 333 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 334
emcu 0:ef97dc9b062e 335 // goto ReStart;
emcu 0:ef97dc9b062e 336 }
emcu 0:ef97dc9b062e 337 }
emcu 0:ef97dc9b062e 338 }
emcu 0:ef97dc9b062e 339 }
emcu 0:ef97dc9b062e 340
emcu 1:478d8983fdde 341
emcu 1:478d8983fdde 342
emcu 1:478d8983fdde 343 void DisplayBigNumber(uint8_t Numero)
emcu 1:478d8983fdde 344 {
emcu 1:478d8983fdde 345 uint8_t v=0;
emcu 1:478d8983fdde 346 uint8_t mv=0;
emcu 1:478d8983fdde 347
emcu 1:478d8983fdde 348 if (Numero >= 100)
emcu 1:478d8983fdde 349 {
emcu 1:478d8983fdde 350 draw1(200, 200, LCD_YELLOW); // Display 1 pos. x=200 y=200
emcu 1:478d8983fdde 351 v = Numero - 100;
emcu 1:478d8983fdde 352 v = (Numero - 100) / 10; // Display second number pos.x=250 y=200
emcu 1:478d8983fdde 353 mv = v;
emcu 1:478d8983fdde 354 VisNumber(250, 200, LCD_YELLOW, v, LCD_COLOR_BLACK);
emcu 1:478d8983fdde 355
emcu 1:478d8983fdde 356
emcu 1:478d8983fdde 357 v = (Numero - 100) - (mv * 10); // Display third number pos.300 y=200
emcu 1:478d8983fdde 358 VisNumber(300, 200, LCD_YELLOW, v, LCD_COLOR_BLACK);
emcu 1:478d8983fdde 359 }
emcu 1:478d8983fdde 360 else // Number < 100
emcu 1:478d8983fdde 361 {
emcu 4:0d9d4ea58fdb 362 // Clear 3° cifra
emcu 1:478d8983fdde 363 FillBox(LCD_COLOR_BLACK, 200, 200, 40, 70);
emcu 1:478d8983fdde 364
emcu 1:478d8983fdde 365 if (Numero >= 10)
emcu 1:478d8983fdde 366 {
emcu 1:478d8983fdde 367 v = Numero / 10;
emcu 1:478d8983fdde 368 mv = v;
emcu 4:0d9d4ea58fdb 369 VisNumber(250, 200, LCD_YELLOW, v, LCD_COLOR_BLACK); // Vis. 2° cifra
emcu 1:478d8983fdde 370
emcu 1:478d8983fdde 371 v = Numero - (mv * 10);
emcu 4:0d9d4ea58fdb 372 VisNumber(300, 200, LCD_YELLOW, v, LCD_COLOR_BLACK); // Vis. 3° cifra
emcu 1:478d8983fdde 373 }
emcu 2:a448d80c91b5 374 else
emcu 1:478d8983fdde 375 {
emcu 4:0d9d4ea58fdb 376 // Clear 2° cifra
emcu 2:a448d80c91b5 377 FillBox(LCD_COLOR_BLACK, 250, 200, 40, 70);
emcu 4:0d9d4ea58fdb 378 VisNumber(300, 200, LCD_YELLOW, Numero, LCD_COLOR_BLACK); // Vis. 3° cifra
emcu 1:478d8983fdde 379 }
emcu 1:478d8983fdde 380 }
emcu 1:478d8983fdde 381
emcu 1:478d8983fdde 382 }
emcu 1:478d8983fdde 383
emcu 1:478d8983fdde 384 void VisNumber(int x, int y, uint32_t color, uint8_t v, uint32_t colorBackground)
emcu 1:478d8983fdde 385 {
emcu 1:478d8983fdde 386 // Clear Position
emcu 1:478d8983fdde 387 FillBox(colorBackground, x, y, 40, 70);
emcu 1:478d8983fdde 388
emcu 1:478d8983fdde 389 switch ( v )
emcu 1:478d8983fdde 390 {
emcu 1:478d8983fdde 391 case 1:
emcu 1:478d8983fdde 392 draw1(x, y, color); // Display 1
emcu 1:478d8983fdde 393 break;
emcu 1:478d8983fdde 394 case 2:
emcu 1:478d8983fdde 395 draw2(x, y, color); // Display 2
emcu 1:478d8983fdde 396 break;
emcu 1:478d8983fdde 397 case 3:
emcu 1:478d8983fdde 398 draw3(x, y, color); // Display 3
emcu 1:478d8983fdde 399 break;
emcu 1:478d8983fdde 400 case 4:
emcu 1:478d8983fdde 401 draw4(x, y, color); // Display 4
emcu 1:478d8983fdde 402 break;
emcu 1:478d8983fdde 403 case 5:
emcu 1:478d8983fdde 404 draw5(x, y, color); // Display 5
emcu 1:478d8983fdde 405 break;
emcu 1:478d8983fdde 406 case 6:
emcu 1:478d8983fdde 407 draw6(x, y, color); // Display 6
emcu 1:478d8983fdde 408 break;
emcu 1:478d8983fdde 409 case 7:
emcu 1:478d8983fdde 410 draw7(x, y, color); // Display 7
emcu 1:478d8983fdde 411 break;
emcu 1:478d8983fdde 412 case 8:
emcu 1:478d8983fdde 413 draw8(x, y, color); // Display 8
emcu 1:478d8983fdde 414 break;
emcu 1:478d8983fdde 415 case 9:
emcu 1:478d8983fdde 416 draw9(x, y, color); // Display 9
emcu 1:478d8983fdde 417 break;
emcu 1:478d8983fdde 418 case 0:
emcu 1:478d8983fdde 419 draw0(x, y, color); // Display 0
emcu 1:478d8983fdde 420 break;
emcu 1:478d8983fdde 421 default:
emcu 1:478d8983fdde 422 // Code
emcu 1:478d8983fdde 423 break;
emcu 1:478d8983fdde 424 }
emcu 1:478d8983fdde 425 }
emcu 1:478d8983fdde 426
emcu 0:ef97dc9b062e 427 void Logo(void)
emcu 0:ef97dc9b062e 428 {
emcu 0:ef97dc9b062e 429 lcd.SetFont(&Font16);
emcu 0:ef97dc9b062e 430 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 431 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 432 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)" By: www.emcu.it", LEFT_MODE);
emcu 0:ef97dc9b062e 433 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 434 }
emcu 0:ef97dc9b062e 435
emcu 1:478d8983fdde 436 // void FillBox(string color, int x, int y, int larg, int alt)
emcu 1:478d8983fdde 437 void FillBox(uint32_t color, int x, int y, int larg, int alt)
emcu 0:ef97dc9b062e 438 {
emcu 0:ef97dc9b062e 439 // Draw the RED box that indicate the area to touch for start Timer
emcu 1:478d8983fdde 440 // lcd.SetTextColor(LCD_COLOR_RED);
emcu 1:478d8983fdde 441 lcd.SetTextColor(color);
emcu 0:ef97dc9b062e 442 lcd.FillRect(x, y, larg, alt);
emcu 0:ef97dc9b062e 443 }
emcu 0:ef97dc9b062e 444
emcu 1:478d8983fdde 445 void draw1(int x, int y, uint32_t color)
emcu 1:478d8983fdde 446 {
emcu 1:478d8983fdde 447 FillBox(color, x+20, y, 10, 70);
emcu 1:478d8983fdde 448 FillBox(color, x+10, y+60, 30, 10); // ***
emcu 1:478d8983fdde 449 FillBox(color, x+10, y+10, 10, 10);
emcu 1:478d8983fdde 450 FillBox(color, x, y+20, 10, 10);
emcu 1:478d8983fdde 451 }
emcu 1:478d8983fdde 452
emcu 1:478d8983fdde 453 void draw2(int x, int y, uint32_t color)
emcu 1:478d8983fdde 454 {
emcu 1:478d8983fdde 455 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 456 FillBox(color, x+30, y+10, 10, 20);
emcu 1:478d8983fdde 457 FillBox(color, x+10, y+30, 20, 10);
emcu 1:478d8983fdde 458 FillBox(color, x, y+40, 10, 20);
emcu 1:478d8983fdde 459 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 460 }
emcu 1:478d8983fdde 461
emcu 1:478d8983fdde 462 void draw3(int x, int y, uint32_t color)
emcu 1:478d8983fdde 463 {
emcu 1:478d8983fdde 464 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 465 FillBox(color, x+30, y+10, 10, 60);
emcu 1:478d8983fdde 466 FillBox(color, x+10, y+30, 30, 10);
emcu 1:478d8983fdde 467 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 468 }
emcu 1:478d8983fdde 469
emcu 1:478d8983fdde 470 void draw4(int x, int y, uint32_t color)
emcu 1:478d8983fdde 471 {
emcu 1:478d8983fdde 472 FillBox(color, x, y, 10, 60);
emcu 1:478d8983fdde 473 FillBox(color, x, y+50, 40, 10);
emcu 1:478d8983fdde 474 FillBox(color, x+20, y+40, 10, 30);
emcu 1:478d8983fdde 475 }
emcu 1:478d8983fdde 476
emcu 1:478d8983fdde 477 void draw5(int x, int y, uint32_t color)
emcu 1:478d8983fdde 478 {
emcu 1:478d8983fdde 479 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 480 FillBox(color, x, y, 10, 40);
emcu 1:478d8983fdde 481 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 482 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 483 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 484 }
emcu 1:478d8983fdde 485
emcu 1:478d8983fdde 486 void draw6(int x, int y, uint32_t color)
emcu 1:478d8983fdde 487 {
emcu 1:478d8983fdde 488 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 489 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 490 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 491 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 492 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 493 }
emcu 1:478d8983fdde 494
emcu 1:478d8983fdde 495 void draw7(int x, int y, uint32_t color)
emcu 1:478d8983fdde 496 {
emcu 1:478d8983fdde 497 FillBox(color, x, y, 30, 10);
emcu 1:478d8983fdde 498 FillBox(color, x+20, y, 10, 70);
emcu 1:478d8983fdde 499 FillBox(color, x+10, y+30, 30, 10);
emcu 1:478d8983fdde 500 }
emcu 1:478d8983fdde 501
emcu 1:478d8983fdde 502 void draw8(int x, int y, uint32_t color)
emcu 1:478d8983fdde 503 {
emcu 1:478d8983fdde 504 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 505 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 506 FillBox(color, x+30, y, 10, 70);
emcu 1:478d8983fdde 507 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 508 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 509 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 510 }
emcu 1:478d8983fdde 511
emcu 1:478d8983fdde 512 void draw9(int x, int y, uint32_t color)
emcu 1:478d8983fdde 513 {
emcu 1:478d8983fdde 514 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 515 FillBox(color, x, y, 10, 40);
emcu 1:478d8983fdde 516 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 517 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 518 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 519 FillBox(color, x+30, y, 10, 30);
emcu 1:478d8983fdde 520 }
emcu 1:478d8983fdde 521
emcu 1:478d8983fdde 522 void draw0(int x, int y, uint32_t color)
emcu 1:478d8983fdde 523 {
emcu 1:478d8983fdde 524 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 525 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 526 FillBox(color, x+30, y, 10, 70);
emcu 1:478d8983fdde 527 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 528 }