Enrico Marinoni / Mbed 2 deprecated F746NG_TIMER

Dependencies:   BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed

Fork of F746NG_TIMER by Enrico Marinoni

Committer:
emcu
Date:
Sun Feb 28 17:08:47 2016 +0000
Revision:
2:a448d80c91b5
Parent:
1:478d8983fdde
Child:
3:a99d1624ff73
Countdown Timer from 1 to 199 minutes; V.1.0.3

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 2:a448d80c91b5 8 Ver.: 1.0.3
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 1:478d8983fdde 147 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 1:478d8983fdde 148 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" ", CENTER_MODE);
emcu 1:478d8983fdde 149 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 150 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 151
emcu 0:ef97dc9b062e 152 // Draw the RED box that indicate the area to touch for start Timer
emcu 1:478d8983fdde 153 FillBox(0xFFFF0000, 250, 220, 50, 50);
emcu 0:ef97dc9b062e 154
emcu 0:ef97dc9b062e 155 // Whait touch
emcu 0:ef97dc9b062e 156 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 157 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 158 {
emcu 0:ef97dc9b062e 159 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 160 }
emcu 0:ef97dc9b062e 161
emcu 0:ef97dc9b062e 162
emcu 0:ef97dc9b062e 163 // Increment
emcu 0:ef97dc9b062e 164 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 165 if ((TS_State.touchDetected) && (TS_State.touchX[0] > 400))
emcu 0:ef97dc9b062e 166 {
emcu 1:478d8983fdde 167 _min++;
emcu 2:a448d80c91b5 168 if (_min>199)
emcu 2:a448d80c91b5 169 _min=199;
emcu 0:ef97dc9b062e 170 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 171 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 172 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 173 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 174 }
emcu 0:ef97dc9b062e 175 // Decrement
emcu 0:ef97dc9b062e 176 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 177 if ((TS_State.touchDetected) && (TS_State.touchX[0] < 200))
emcu 0:ef97dc9b062e 178 {
emcu 1:478d8983fdde 179 _min--;
emcu 1:478d8983fdde 180 if (_min<1)
emcu 1:478d8983fdde 181 _min=1;
emcu 0:ef97dc9b062e 182 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 183 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 184 sprintf((char*)text, " MIN: %d ", _min);
emcu 0:ef97dc9b062e 185 lcd.DisplayStringAt(xpos, LINE(7), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 186 }
emcu 0:ef97dc9b062e 187
emcu 0:ef97dc9b062e 188 // Whait touch
emcu 0:ef97dc9b062e 189 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 190 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 191 {
emcu 0:ef97dc9b062e 192 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 193 }
emcu 0:ef97dc9b062e 194
emcu 0:ef97dc9b062e 195 wait(0.1);
emcu 0:ef97dc9b062e 196
emcu 0:ef97dc9b062e 197 // Draw the RED box that indicate the area to touch for start Timer
emcu 1:478d8983fdde 198 FillBox(0xFFFF0000,250, 220, 50, 50);
emcu 0:ef97dc9b062e 199
emcu 0:ef97dc9b062e 200 Count=0;
emcu 0:ef97dc9b062e 201
emcu 0:ef97dc9b062e 202 // Get the touch position for Start Timer
emcu 0:ef97dc9b062e 203 for (idx = 0; idx < TS_State.touchDetected; idx++)
emcu 0:ef97dc9b062e 204 {
emcu 0:ef97dc9b062e 205 x = TS_State.touchX[idx];
emcu 0:ef97dc9b062e 206 y = TS_State.touchY[idx];
emcu 0:ef97dc9b062e 207 if ((x>260 & x<300) && (y>250 & y<280))
emcu 0:ef97dc9b062e 208 {
emcu 0:ef97dc9b062e 209 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 210 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 211 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 212 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 213 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 214 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 0:ef97dc9b062e 215 Logo();
emcu 0:ef97dc9b062e 216
emcu 1:478d8983fdde 217 tcount=_min;
emcu 0:ef97dc9b062e 218 tcount=tcount*60;
emcu 1:478d8983fdde 219 Mem_min=_min;
emcu 0:ef97dc9b062e 220 Minuti=0;
emcu 0:ef97dc9b062e 221 for (n=0; n<tcount; n++)
emcu 0:ef97dc9b062e 222 {
emcu 0:ef97dc9b062e 223 wait(1); // 60 == 1min
emcu 0:ef97dc9b062e 224
emcu 0:ef97dc9b062e 225 // Show an * for highlight that the program is running
emcu 0:ef97dc9b062e 226 Count++;
emcu 0:ef97dc9b062e 227 if (Count == 1)
emcu 0:ef97dc9b062e 228 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"*", CENTER_MODE);
emcu 0:ef97dc9b062e 229 if (Count == 2)
emcu 0:ef97dc9b062e 230 {
emcu 0:ef97dc9b062e 231 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 232 Count=0;
emcu 0:ef97dc9b062e 233 }
emcu 0:ef97dc9b062e 234
emcu 0:ef97dc9b062e 235 // Counter for minutes
emcu 0:ef97dc9b062e 236 Minuti++;
emcu 0:ef97dc9b062e 237 if (Minuti==60)
emcu 0:ef97dc9b062e 238 {
emcu 1:478d8983fdde 239 _min--;
emcu 0:ef97dc9b062e 240 Minuti=0;
emcu 0:ef97dc9b062e 241 }
emcu 0:ef97dc9b062e 242 else;
emcu 0:ef97dc9b062e 243
emcu 0:ef97dc9b062e 244 // Display the time remaining
emcu 1:478d8983fdde 245 if (_min < 10)
emcu 0:ef97dc9b062e 246 {
emcu 0:ef97dc9b062e 247 //lcd.Clear(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 248 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 249 lcd.SetBackColor(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 250 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 251 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 252 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 1:478d8983fdde 253 DisplayBigNumber(_min);
emcu 0:ef97dc9b062e 254 Logo();
emcu 0:ef97dc9b062e 255 }
emcu 0:ef97dc9b062e 256 else
emcu 0:ef97dc9b062e 257 {
emcu 0:ef97dc9b062e 258 //lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 259 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 260 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 261 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 1:478d8983fdde 262 sprintf((char*)text, " Minutes that remain: %d ", _min);
emcu 0:ef97dc9b062e 263 lcd.DisplayStringAt(xpos, LINE(5), (uint8_t *)&text, LEFT_MODE);
emcu 1:478d8983fdde 264 DisplayBigNumber(_min);
emcu 0:ef97dc9b062e 265 Logo();
emcu 0:ef97dc9b062e 266 }
emcu 0:ef97dc9b062e 267 }
emcu 0:ef97dc9b062e 268
emcu 1:478d8983fdde 269 _min=Mem_min;
emcu 0:ef97dc9b062e 270 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 271
emcu 0:ef97dc9b062e 272 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 273 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 274
emcu 0:ef97dc9b062e 275 // Highlight the end of time
emcu 0:ef97dc9b062e 276
emcu 0:ef97dc9b062e 277 // Waiting Touch the screen for restart the program
emcu 0:ef97dc9b062e 278 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 279 while(TS_State.touchDetected == 0)
emcu 0:ef97dc9b062e 280 {
emcu 0:ef97dc9b062e 281 lcd.Clear(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 282 lcd.SetBackColor(LCD_COLOR_RED);
emcu 0:ef97dc9b062e 283 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 284 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 285 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" END time... ", CENTER_MODE);
emcu 0:ef97dc9b062e 286 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" STOP the presentation !!! ", CENTER_MODE);
emcu 0:ef97dc9b062e 287 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 288 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 289 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" Touch screen to restart ", CENTER_MODE);
emcu 0:ef97dc9b062e 290 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 291 wait(0.5);
emcu 0:ef97dc9b062e 292
emcu 0:ef97dc9b062e 293 lcd.Clear(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 294 lcd.SetBackColor(LCD_COLOR_BLUE);
emcu 0:ef97dc9b062e 295 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 296 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 297 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" END time... ", CENTER_MODE);
emcu 0:ef97dc9b062e 298 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" STOP the presentation !!! ", CENTER_MODE);
emcu 0:ef97dc9b062e 299 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 300 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 301 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" Touch screen to restart ", CENTER_MODE);
emcu 0:ef97dc9b062e 302 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 303 wait(0.5);
emcu 0:ef97dc9b062e 304
emcu 0:ef97dc9b062e 305 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 306 }
emcu 0:ef97dc9b062e 307
emcu 0:ef97dc9b062e 308
emcu 0:ef97dc9b062e 309
emcu 0:ef97dc9b062e 310 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 311 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 312 lcd.DisplayStringAt(0, LINE(2), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 313 lcd.DisplayStringAt(0, LINE(3), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 314 lcd.DisplayStringAt(0, LINE(4), (uint8_t *)" Remove your finger from ", CENTER_MODE);
emcu 0:ef97dc9b062e 315 lcd.DisplayStringAt(0, LINE(5), (uint8_t *)" the screen ", CENTER_MODE);
emcu 0:ef97dc9b062e 316 lcd.DisplayStringAt(0, LINE(6), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 317 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 318 lcd.DisplayStringAt(0, LINE(8), (uint8_t *)" ", CENTER_MODE);
emcu 0:ef97dc9b062e 319 // Whait remove touch
emcu 0:ef97dc9b062e 320 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 321 while(TS_State.touchDetected == 1)
emcu 0:ef97dc9b062e 322 {
emcu 0:ef97dc9b062e 323 ts.GetState(&TS_State);
emcu 0:ef97dc9b062e 324 }
emcu 0:ef97dc9b062e 325 lcd.Clear(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 326
emcu 0:ef97dc9b062e 327 // goto ReStart;
emcu 0:ef97dc9b062e 328 }
emcu 0:ef97dc9b062e 329 }
emcu 0:ef97dc9b062e 330 }
emcu 0:ef97dc9b062e 331 }
emcu 0:ef97dc9b062e 332
emcu 1:478d8983fdde 333
emcu 1:478d8983fdde 334
emcu 1:478d8983fdde 335 void DisplayBigNumber(uint8_t Numero)
emcu 1:478d8983fdde 336 {
emcu 1:478d8983fdde 337 uint8_t v=0;
emcu 1:478d8983fdde 338 uint8_t mv=0;
emcu 1:478d8983fdde 339
emcu 1:478d8983fdde 340 if (Numero >= 100)
emcu 1:478d8983fdde 341 {
emcu 1:478d8983fdde 342 draw1(200, 200, LCD_YELLOW); // Display 1 pos. x=200 y=200
emcu 1:478d8983fdde 343 v = Numero - 100;
emcu 1:478d8983fdde 344 v = (Numero - 100) / 10; // Display second number pos.x=250 y=200
emcu 1:478d8983fdde 345 mv = v;
emcu 1:478d8983fdde 346 VisNumber(250, 200, LCD_YELLOW, v, LCD_COLOR_BLACK);
emcu 1:478d8983fdde 347
emcu 1:478d8983fdde 348
emcu 1:478d8983fdde 349 v = (Numero - 100) - (mv * 10); // Display third number pos.300 y=200
emcu 1:478d8983fdde 350 VisNumber(300, 200, LCD_YELLOW, v, LCD_COLOR_BLACK);
emcu 1:478d8983fdde 351 }
emcu 1:478d8983fdde 352 else // Number < 100
emcu 1:478d8983fdde 353 {
emcu 1:478d8983fdde 354 // Clear 3° cifra
emcu 1:478d8983fdde 355 FillBox(LCD_COLOR_BLACK, 200, 200, 40, 70);
emcu 1:478d8983fdde 356
emcu 1:478d8983fdde 357 if (Numero >= 10)
emcu 1:478d8983fdde 358 {
emcu 1:478d8983fdde 359 v = Numero / 10;
emcu 1:478d8983fdde 360 mv = v;
emcu 1:478d8983fdde 361 VisNumber(250, 200, LCD_YELLOW, v, LCD_COLOR_BLACK); // Vis. 2° cifra
emcu 1:478d8983fdde 362
emcu 1:478d8983fdde 363 v = Numero - (mv * 10);
emcu 1:478d8983fdde 364 VisNumber(300, 200, LCD_YELLOW, v, LCD_COLOR_BLACK); // Vis. 3° cifra
emcu 1:478d8983fdde 365 }
emcu 2:a448d80c91b5 366 else
emcu 1:478d8983fdde 367 {
emcu 1:478d8983fdde 368 // Clear 2° cifra
emcu 2:a448d80c91b5 369 FillBox(LCD_COLOR_BLACK, 250, 200, 40, 70);
emcu 2:a448d80c91b5 370 VisNumber(300, 200, LCD_YELLOW, Numero, LCD_COLOR_BLACK); // Vis. 3° cifra
emcu 1:478d8983fdde 371 }
emcu 1:478d8983fdde 372 }
emcu 1:478d8983fdde 373
emcu 1:478d8983fdde 374 }
emcu 1:478d8983fdde 375
emcu 1:478d8983fdde 376 void VisNumber(int x, int y, uint32_t color, uint8_t v, uint32_t colorBackground)
emcu 1:478d8983fdde 377 {
emcu 1:478d8983fdde 378 // Clear Position
emcu 1:478d8983fdde 379 FillBox(colorBackground, x, y, 40, 70);
emcu 1:478d8983fdde 380
emcu 1:478d8983fdde 381 switch ( v )
emcu 1:478d8983fdde 382 {
emcu 1:478d8983fdde 383 case 1:
emcu 1:478d8983fdde 384 draw1(x, y, color); // Display 1
emcu 1:478d8983fdde 385 break;
emcu 1:478d8983fdde 386 case 2:
emcu 1:478d8983fdde 387 draw2(x, y, color); // Display 2
emcu 1:478d8983fdde 388 break;
emcu 1:478d8983fdde 389 case 3:
emcu 1:478d8983fdde 390 draw3(x, y, color); // Display 3
emcu 1:478d8983fdde 391 break;
emcu 1:478d8983fdde 392 case 4:
emcu 1:478d8983fdde 393 draw4(x, y, color); // Display 4
emcu 1:478d8983fdde 394 break;
emcu 1:478d8983fdde 395 case 5:
emcu 1:478d8983fdde 396 draw5(x, y, color); // Display 5
emcu 1:478d8983fdde 397 break;
emcu 1:478d8983fdde 398 case 6:
emcu 1:478d8983fdde 399 draw6(x, y, color); // Display 6
emcu 1:478d8983fdde 400 break;
emcu 1:478d8983fdde 401 case 7:
emcu 1:478d8983fdde 402 draw7(x, y, color); // Display 7
emcu 1:478d8983fdde 403 break;
emcu 1:478d8983fdde 404 case 8:
emcu 1:478d8983fdde 405 draw8(x, y, color); // Display 8
emcu 1:478d8983fdde 406 break;
emcu 1:478d8983fdde 407 case 9:
emcu 1:478d8983fdde 408 draw9(x, y, color); // Display 9
emcu 1:478d8983fdde 409 break;
emcu 1:478d8983fdde 410 case 0:
emcu 1:478d8983fdde 411 draw0(x, y, color); // Display 0
emcu 1:478d8983fdde 412 break;
emcu 1:478d8983fdde 413 default:
emcu 1:478d8983fdde 414 // Code
emcu 1:478d8983fdde 415 break;
emcu 1:478d8983fdde 416 }
emcu 1:478d8983fdde 417 }
emcu 1:478d8983fdde 418
emcu 0:ef97dc9b062e 419 void Logo(void)
emcu 0:ef97dc9b062e 420 {
emcu 0:ef97dc9b062e 421 lcd.SetFont(&Font16);
emcu 0:ef97dc9b062e 422 lcd.SetBackColor(LCD_COLOR_BLACK);
emcu 0:ef97dc9b062e 423 lcd.SetTextColor(LCD_COLOR_WHITE);
emcu 0:ef97dc9b062e 424 lcd.DisplayStringAt(0, LINE(0), (uint8_t *)" By: www.emcu.it", LEFT_MODE);
emcu 0:ef97dc9b062e 425 lcd.SetFont(&Font24);
emcu 0:ef97dc9b062e 426 }
emcu 0:ef97dc9b062e 427
emcu 1:478d8983fdde 428 // void FillBox(string color, int x, int y, int larg, int alt)
emcu 1:478d8983fdde 429 void FillBox(uint32_t color, int x, int y, int larg, int alt)
emcu 0:ef97dc9b062e 430 {
emcu 0:ef97dc9b062e 431 // Draw the RED box that indicate the area to touch for start Timer
emcu 1:478d8983fdde 432 // lcd.SetTextColor(LCD_COLOR_RED);
emcu 1:478d8983fdde 433 lcd.SetTextColor(color);
emcu 0:ef97dc9b062e 434 lcd.FillRect(x, y, larg, alt);
emcu 0:ef97dc9b062e 435 }
emcu 0:ef97dc9b062e 436
emcu 1:478d8983fdde 437 void draw1(int x, int y, uint32_t color)
emcu 1:478d8983fdde 438 {
emcu 1:478d8983fdde 439 FillBox(color, x+20, y, 10, 70);
emcu 1:478d8983fdde 440 FillBox(color, x+10, y+60, 30, 10); // ***
emcu 1:478d8983fdde 441 FillBox(color, x+10, y+10, 10, 10);
emcu 1:478d8983fdde 442 FillBox(color, x, y+20, 10, 10);
emcu 1:478d8983fdde 443 }
emcu 1:478d8983fdde 444
emcu 1:478d8983fdde 445 void draw2(int x, int y, uint32_t color)
emcu 1:478d8983fdde 446 {
emcu 1:478d8983fdde 447 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 448 FillBox(color, x+30, y+10, 10, 20);
emcu 1:478d8983fdde 449 FillBox(color, x+10, y+30, 20, 10);
emcu 1:478d8983fdde 450 FillBox(color, x, y+40, 10, 20);
emcu 1:478d8983fdde 451 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 452 }
emcu 1:478d8983fdde 453
emcu 1:478d8983fdde 454 void draw3(int x, int y, uint32_t color)
emcu 1:478d8983fdde 455 {
emcu 1:478d8983fdde 456 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 457 FillBox(color, x+30, y+10, 10, 60);
emcu 1:478d8983fdde 458 FillBox(color, x+10, y+30, 30, 10);
emcu 1:478d8983fdde 459 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 460 }
emcu 1:478d8983fdde 461
emcu 1:478d8983fdde 462 void draw4(int x, int y, uint32_t color)
emcu 1:478d8983fdde 463 {
emcu 1:478d8983fdde 464 FillBox(color, x, y, 10, 60);
emcu 1:478d8983fdde 465 FillBox(color, x, y+50, 40, 10);
emcu 1:478d8983fdde 466 FillBox(color, x+20, y+40, 10, 30);
emcu 1:478d8983fdde 467 }
emcu 1:478d8983fdde 468
emcu 1:478d8983fdde 469 void draw5(int x, int y, uint32_t color)
emcu 1:478d8983fdde 470 {
emcu 1:478d8983fdde 471 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 472 FillBox(color, x, y, 10, 40);
emcu 1:478d8983fdde 473 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 474 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 475 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 476 }
emcu 1:478d8983fdde 477
emcu 1:478d8983fdde 478 void draw6(int x, int y, uint32_t color)
emcu 1:478d8983fdde 479 {
emcu 1:478d8983fdde 480 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 481 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 482 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 483 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 484 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 485 }
emcu 1:478d8983fdde 486
emcu 1:478d8983fdde 487 void draw7(int x, int y, uint32_t color)
emcu 1:478d8983fdde 488 {
emcu 1:478d8983fdde 489 FillBox(color, x, y, 30, 10);
emcu 1:478d8983fdde 490 FillBox(color, x+20, y, 10, 70);
emcu 1:478d8983fdde 491 FillBox(color, x+10, y+30, 30, 10);
emcu 1:478d8983fdde 492 }
emcu 1:478d8983fdde 493
emcu 1:478d8983fdde 494 void draw8(int x, int y, uint32_t color)
emcu 1:478d8983fdde 495 {
emcu 1:478d8983fdde 496 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 497 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 498 FillBox(color, x+30, y, 10, 70);
emcu 1:478d8983fdde 499 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 500 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 501 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 502 }
emcu 1:478d8983fdde 503
emcu 1:478d8983fdde 504 void draw9(int x, int y, uint32_t color)
emcu 1:478d8983fdde 505 {
emcu 1:478d8983fdde 506 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 507 FillBox(color, x, y, 10, 40);
emcu 1:478d8983fdde 508 FillBox(color, x, y+30, 40, 10);
emcu 1:478d8983fdde 509 FillBox(color, x+30, y+30, 10, 40);
emcu 1:478d8983fdde 510 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 511 FillBox(color, x+30, y, 10, 30);
emcu 1:478d8983fdde 512 }
emcu 1:478d8983fdde 513
emcu 1:478d8983fdde 514 void draw0(int x, int y, uint32_t color)
emcu 1:478d8983fdde 515 {
emcu 1:478d8983fdde 516 FillBox(color, x, y, 40, 10);
emcu 1:478d8983fdde 517 FillBox(color, x, y, 10, 70);
emcu 1:478d8983fdde 518 FillBox(color, x+30, y, 10, 70);
emcu 1:478d8983fdde 519 FillBox(color, x, y+60, 40, 10);
emcu 1:478d8983fdde 520 }