cbcx

Dependencies:   DmTftLibrary mbed

Fork of LCD_Proj by Tobias Fuchsbichler

Committer:
TFuchsbichler
Date:
Mon Dec 21 15:22:03 2015 +0000
Revision:
2:e1b98fac05ed
Parent:
1:81d0d835991d
Child:
3:03c08a612220
fbf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TFuchsbichler 0:dd55ca105ef3 1 /**********************************************************************************************
TFuchsbichler 0:dd55ca105ef3 2 Copyright (c) 2014 DisplayModule. All rights reserved.
TFuchsbichler 0:dd55ca105ef3 3
TFuchsbichler 0:dd55ca105ef3 4 Redistribution and use of this source code, part of this source code or any compiled binary
TFuchsbichler 0:dd55ca105ef3 5 based on this source code is permitted as long as the above copyright notice and following
TFuchsbichler 0:dd55ca105ef3 6 disclaimer is retained.
TFuchsbichler 0:dd55ca105ef3 7
TFuchsbichler 0:dd55ca105ef3 8 DISCLAIMER:
TFuchsbichler 0:dd55ca105ef3 9 THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES
TFuchsbichler 0:dd55ca105ef3 10 NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
TFuchsbichler 0:dd55ca105ef3 11 ********************************************************************************************/
TFuchsbichler 0:dd55ca105ef3 12
TFuchsbichler 0:dd55ca105ef3 13 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 14 * Tested on NUCLEO-F401RE, LPCXpresso11U68, LPCXpresso824-MAX platform.
TFuchsbichler 0:dd55ca105ef3 15 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 16
TFuchsbichler 0:dd55ca105ef3 17 #include "mbed.h"
TFuchsbichler 2:e1b98fac05ed 18 #include "bild.h"
TFuchsbichler 0:dd55ca105ef3 19
TFuchsbichler 0:dd55ca105ef3 20 #include "DmTftHX8353C.h"
TFuchsbichler 0:dd55ca105ef3 21 #include "DmTftS6D0164.h"
TFuchsbichler 0:dd55ca105ef3 22 #include "DmTftIli9325.h"
TFuchsbichler 0:dd55ca105ef3 23 #include "DmTftIli9341.h"
TFuchsbichler 0:dd55ca105ef3 24 #include "DmTftSsd2119.h"
TFuchsbichler 0:dd55ca105ef3 25 #include "DmTftRa8875.h"
TFuchsbichler 0:dd55ca105ef3 26 #include "DmTouch.h"
TFuchsbichler 0:dd55ca105ef3 27 #include "DmTpFt6x06.h"
TFuchsbichler 0:dd55ca105ef3 28
TFuchsbichler 0:dd55ca105ef3 29 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 30 * Typedefs and defines
TFuchsbichler 0:dd55ca105ef3 31 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 32
TFuchsbichler 0:dd55ca105ef3 33 /* Note that there are restrictions on which platforms that can use printf
TFuchsbichler 0:dd55ca105ef3 34 in combinations with the DmTftLibrary. Some platforms (e.g. LPC1549 LPCXpresso)
TFuchsbichler 0:dd55ca105ef3 35 use the same pins for USBRX/USBTX and display control. Printing will
TFuchsbichler 0:dd55ca105ef3 36 cause the display to not work. Read more about this on the display's notebook
TFuchsbichler 0:dd55ca105ef3 37 page. */
TFuchsbichler 0:dd55ca105ef3 38 //#define log(...) printf(__VA_ARGS__)
TFuchsbichler 0:dd55ca105ef3 39 #define log(...)
TFuchsbichler 0:dd55ca105ef3 40
TFuchsbichler 0:dd55ca105ef3 41 #if 1
TFuchsbichler 0:dd55ca105ef3 42 /* Displays without adapter */
TFuchsbichler 0:dd55ca105ef3 43 #define DM_PIN_SPI_MOSI p5
TFuchsbichler 0:dd55ca105ef3 44 #define DM_PIN_SPI_MISO p6
TFuchsbichler 0:dd55ca105ef3 45 #define DM_PIN_SPI_SCLK p7
Nikolas 1:81d0d835991d 46 #define DM_PIN_CS_TOUCH p8
TFuchsbichler 0:dd55ca105ef3 47 #define DM_PIN_CS_TFT p21
Nikolas 1:81d0d835991d 48 #define DM_PIN_CS_SDCARD p14 // 23
Nikolas 1:81d0d835991d 49 #define DM_PIN_CS_FLASH p10 // 24
TFuchsbichler 0:dd55ca105ef3 50 #else
TFuchsbichler 0:dd55ca105ef3 51 /* Displays with adapter */
TFuchsbichler 0:dd55ca105ef3 52 #define DM_PIN_SPI_MOSI p5
TFuchsbichler 0:dd55ca105ef3 53 #define DM_PIN_SPI_MISO p6
TFuchsbichler 0:dd55ca105ef3 54 #define DM_PIN_SPI_SCLK p7
Nikolas 1:81d0d835991d 55 #define DM_PIN_CS_TOUCH p8
TFuchsbichler 0:dd55ca105ef3 56 #define DM_PIN_CS_TFT p21
Nikolas 1:81d0d835991d 57 #define DM_PIN_CS_SDCARD p14 // 13
TFuchsbichler 0:dd55ca105ef3 58 #endif
TFuchsbichler 0:dd55ca105ef3 59
TFuchsbichler 0:dd55ca105ef3 60 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 61 * Local variables
TFuchsbichler 0:dd55ca105ef3 62 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 63
TFuchsbichler 2:e1b98fac05ed 64
TFuchsbichler 0:dd55ca105ef3 65 /********* TFT DISPLAY INIT *********/
TFuchsbichler 0:dd55ca105ef3 66 DmTftIli9341 tft(p21, p22, p5, p6, p7); /* DmTftIli9341(PinName cs, PinName dc, PinName mosi, PinName miso, PinName clk) DM_TFT28_105 and DM_TFT28_116*/
TFuchsbichler 0:dd55ca105ef3 67
TFuchsbichler 0:dd55ca105ef3 68 /********* TOUCH PANEL INIT *********/
TFuchsbichler 0:dd55ca105ef3 69
TFuchsbichler 0:dd55ca105ef3 70 DmTouch touch(DmTouch::DM_TFT28_105, p5, p6, p7);
TFuchsbichler 0:dd55ca105ef3 71
TFuchsbichler 0:dd55ca105ef3 72 DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 73 DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 74 DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 75 #ifdef DM_PIN_CS_FLASH
TFuchsbichler 0:dd55ca105ef3 76 DigitalInOut csFlash(DM_PIN_CS_FLASH, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 77 #endif
TFuchsbichler 0:dd55ca105ef3 78
Nikolas 1:81d0d835991d 79 PwmOut pwmRTC(p23); // RTC test PWM
TFuchsbichler 0:dd55ca105ef3 80 /******************************************************************************
TFuchsbichler 2:e1b98fac05ed 81 * Global variables
TFuchsbichler 0:dd55ca105ef3 82 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 83
TFuchsbichler 2:e1b98fac05ed 84 uint16_t x = 0;
TFuchsbichler 2:e1b98fac05ed 85 uint16_t y = 0;
TFuchsbichler 2:e1b98fac05ed 86 uint16_t w = tft.width();
TFuchsbichler 2:e1b98fac05ed 87 uint16_t h = tft.height();
TFuchsbichler 2:e1b98fac05ed 88
TFuchsbichler 2:e1b98fac05ed 89 bool down=false;
TFuchsbichler 2:e1b98fac05ed 90
TFuchsbichler 2:e1b98fac05ed 91 time_t secondsSince1970;
TFuchsbichler 2:e1b98fac05ed 92 char timeString[20];
TFuchsbichler 2:e1b98fac05ed 93
TFuchsbichler 0:dd55ca105ef3 94 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 95 * Local functions
TFuchsbichler 0:dd55ca105ef3 96 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 97
Nikolas 1:81d0d835991d 98 /*
Nikolas 1:81d0d835991d 99 #define RED 0xf800
Nikolas 1:81d0d835991d 100 #define GREEN 0x07e0
Nikolas 1:81d0d835991d 101 #define BLUE 0x001f
Nikolas 1:81d0d835991d 102 #define BLACK 0x0000
Nikolas 1:81d0d835991d 103 #define YELLOW 0xffe0
Nikolas 1:81d0d835991d 104 #define WHITE 0xffff
Nikolas 1:81d0d835991d 105 #define CYAN 0x07ff
Nikolas 1:81d0d835991d 106 #define BRIGHT_RED 0xf810
Nikolas 1:81d0d835991d 107 #define GRAY1 0x8410
Nikolas 1:81d0d835991d 108 #define GRAY2 0x4208
Nikolas 1:81d0d835991d 109 */
Nikolas 1:81d0d835991d 110 #define Navy 0x000F /* 0, 0, 128 */
Nikolas 1:81d0d835991d 111 #define DarkGreen 0x03E0 /* 0, 128, 0 */
Nikolas 1:81d0d835991d 112 #define DarkCyan 0x03EF /* 0, 128, 128 */
Nikolas 1:81d0d835991d 113 #define Maroon 0x7800 /* 128, 0, 0 */
Nikolas 1:81d0d835991d 114 #define Purple 0x780F /* 128, 0, 128 */
Nikolas 1:81d0d835991d 115 #define Olive 0x7BE0 /* 128, 128, 0 */
Nikolas 1:81d0d835991d 116 #define LightGrey 0xC618 /* 192, 192, 192 */
Nikolas 1:81d0d835991d 117 #define DarkGrey 0x7BEF /* 128, 128, 128 */
Nikolas 1:81d0d835991d 118 #define Magenta 0xF81F /* 255, 0, 255 */
Nikolas 1:81d0d835991d 119 #define Orange 0xFD20 /* 255, 165, 0 */
Nikolas 1:81d0d835991d 120 #define GreenYellow 0xAFE5 /* 173, 255, 47 */
Nikolas 1:81d0d835991d 121 #define Pink 0xF81F
Nikolas 1:81d0d835991d 122
TFuchsbichler 0:dd55ca105ef3 123 Ticker Tick;
TFuchsbichler 0:dd55ca105ef3 124
TFuchsbichler 0:dd55ca105ef3 125 float a;
TFuchsbichler 0:dd55ca105ef3 126 int msek;
TFuchsbichler 0:dd55ca105ef3 127 int sek;
TFuchsbichler 0:dd55ca105ef3 128 int min;
TFuchsbichler 0:dd55ca105ef3 129 int stund;
TFuchsbichler 0:dd55ca105ef3 130 bool mode;
TFuchsbichler 0:dd55ca105ef3 131
TFuchsbichler 0:dd55ca105ef3 132 void zaehl()
TFuchsbichler 0:dd55ca105ef3 133 {
TFuchsbichler 0:dd55ca105ef3 134 if(mode==true) {
TFuchsbichler 0:dd55ca105ef3 135 msek++;
TFuchsbichler 0:dd55ca105ef3 136 if(msek==100) {
TFuchsbichler 0:dd55ca105ef3 137 sek++;
TFuchsbichler 0:dd55ca105ef3 138 msek=0;
TFuchsbichler 0:dd55ca105ef3 139
TFuchsbichler 0:dd55ca105ef3 140 }
TFuchsbichler 0:dd55ca105ef3 141
TFuchsbichler 0:dd55ca105ef3 142 if(sek==60) {
TFuchsbichler 0:dd55ca105ef3 143 min++;
TFuchsbichler 0:dd55ca105ef3 144 sek=0;
TFuchsbichler 0:dd55ca105ef3 145
TFuchsbichler 0:dd55ca105ef3 146 }
TFuchsbichler 0:dd55ca105ef3 147
TFuchsbichler 0:dd55ca105ef3 148 if(min==60) {
TFuchsbichler 0:dd55ca105ef3 149 stund++;
TFuchsbichler 0:dd55ca105ef3 150 min=0;
TFuchsbichler 0:dd55ca105ef3 151 }
TFuchsbichler 0:dd55ca105ef3 152 if(stund==24) {
TFuchsbichler 0:dd55ca105ef3 153 msek=0;
TFuchsbichler 0:dd55ca105ef3 154 sek=0;
TFuchsbichler 0:dd55ca105ef3 155 min=0;
TFuchsbichler 0:dd55ca105ef3 156 stund=0;
TFuchsbichler 0:dd55ca105ef3 157 }
TFuchsbichler 0:dd55ca105ef3 158
TFuchsbichler 0:dd55ca105ef3 159 }
TFuchsbichler 0:dd55ca105ef3 160
TFuchsbichler 0:dd55ca105ef3 161 }
TFuchsbichler 0:dd55ca105ef3 162
TFuchsbichler 0:dd55ca105ef3 163 void reset()
TFuchsbichler 0:dd55ca105ef3 164 {
TFuchsbichler 0:dd55ca105ef3 165 msek=0;
TFuchsbichler 0:dd55ca105ef3 166 sek=0;
TFuchsbichler 0:dd55ca105ef3 167 min=0;
TFuchsbichler 0:dd55ca105ef3 168 stund=0;
TFuchsbichler 0:dd55ca105ef3 169 }
TFuchsbichler 0:dd55ca105ef3 170
TFuchsbichler 0:dd55ca105ef3 171
TFuchsbichler 2:e1b98fac05ed 172 void drawButtons()
TFuchsbichler 0:dd55ca105ef3 173 {
TFuchsbichler 2:e1b98fac05ed 174 tft.clearScreen(BLACK);
TFuchsbichler 2:e1b98fac05ed 175 //Rectangles
TFuchsbichler 0:dd55ca105ef3 176 tft.drawRectangle(25, 285, 74, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 177 tft.drawRectangle(95, 285, 144, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 178 tft.drawRectangle(165, 285,214, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 179 tft.fillRectangle(26, 286, 73, 309, GREEN);
TFuchsbichler 0:dd55ca105ef3 180 tft.fillRectangle(96, 286, 143, 309, RED);
TFuchsbichler 0:dd55ca105ef3 181 //Text
TFuchsbichler 0:dd55ca105ef3 182 tft.drawString(84, 30, "STOPWATCH");
Nikolas 1:81d0d835991d 183 tft.setTextColor(GREEN, BLACK);
TFuchsbichler 0:dd55ca105ef3 184 tft.drawString(30, 290, "START");
Nikolas 1:81d0d835991d 185 tft.setTextColor(RED, BLACK);
TFuchsbichler 0:dd55ca105ef3 186 tft.drawString(104, 290, "STOP");
Nikolas 1:81d0d835991d 187 tft.setTextColor(BLACK, WHITE);
TFuchsbichler 0:dd55ca105ef3 188 tft.drawString(170, 290, "RESET");
TFuchsbichler 0:dd55ca105ef3 189 touch.init();
TFuchsbichler 2:e1b98fac05ed 190
TFuchsbichler 2:e1b98fac05ed 191 tft.drawImage(208,0,32,32,zahnrad);
TFuchsbichler 2:e1b98fac05ed 192
TFuchsbichler 2:e1b98fac05ed 193
TFuchsbichler 2:e1b98fac05ed 194 }
TFuchsbichler 2:e1b98fac05ed 195 void RTC_SETUP()
TFuchsbichler 2:e1b98fac05ed 196 {
TFuchsbichler 2:e1b98fac05ed 197 tft.clearScreen(BLACK);
TFuchsbichler 2:e1b98fac05ed 198
TFuchsbichler 2:e1b98fac05ed 199 tft.drawImage(176,0,64,32,accept);
TFuchsbichler 2:e1b98fac05ed 200 tft.drawString(84, 30, "SETTINGS");
TFuchsbichler 2:e1b98fac05ed 201
TFuchsbichler 2:e1b98fac05ed 202 while(1) {
Nikolas 1:81d0d835991d 203 secondsSince1970 = time(NULL);
Nikolas 1:81d0d835991d 204 strftime(timeString, 20, "%H:%M:%S", localtime(&secondsSince1970));
Nikolas 1:81d0d835991d 205 tft.drawString(50, 50, timeString);
Nikolas 1:81d0d835991d 206
TFuchsbichler 0:dd55ca105ef3 207 touch.readTouchData(x, y, down);
TFuchsbichler 2:e1b98fac05ed 208 if(down==true&&x>=208&&x<=240&&y>=0&&y<=32) {
TFuchsbichler 2:e1b98fac05ed 209 wait(0.25);
TFuchsbichler 2:e1b98fac05ed 210 drawButtons();
TFuchsbichler 2:e1b98fac05ed 211 return;
TFuchsbichler 2:e1b98fac05ed 212 }
TFuchsbichler 2:e1b98fac05ed 213
TFuchsbichler 2:e1b98fac05ed 214 if(down==true&&x>=176&&x<=208&&y>=0&&y<=32) {
TFuchsbichler 2:e1b98fac05ed 215 wait(0.25);
TFuchsbichler 2:e1b98fac05ed 216 drawButtons();
TFuchsbichler 2:e1b98fac05ed 217 return;
TFuchsbichler 2:e1b98fac05ed 218 }
TFuchsbichler 2:e1b98fac05ed 219
TFuchsbichler 2:e1b98fac05ed 220
TFuchsbichler 2:e1b98fac05ed 221 }
TFuchsbichler 2:e1b98fac05ed 222
TFuchsbichler 2:e1b98fac05ed 223
TFuchsbichler 2:e1b98fac05ed 224 }
TFuchsbichler 2:e1b98fac05ed 225 /******************************************************************************
TFuchsbichler 2:e1b98fac05ed 226 * Main
TFuchsbichler 2:e1b98fac05ed 227 *****************************************************************************/
TFuchsbichler 2:e1b98fac05ed 228
TFuchsbichler 2:e1b98fac05ed 229 int main()
TFuchsbichler 2:e1b98fac05ed 230 {
TFuchsbichler 2:e1b98fac05ed 231 pwmRTC.write(0.4);
TFuchsbichler 2:e1b98fac05ed 232 pwmRTC.period(0.0000263);
TFuchsbichler 2:e1b98fac05ed 233
TFuchsbichler 2:e1b98fac05ed 234
TFuchsbichler 2:e1b98fac05ed 235 struct tm t;
TFuchsbichler 2:e1b98fac05ed 236 t.tm_sec = 00; // 0-59
TFuchsbichler 2:e1b98fac05ed 237 t.tm_min = 12; // 0-59
TFuchsbichler 2:e1b98fac05ed 238 t.tm_hour = 10; // 0-23
TFuchsbichler 2:e1b98fac05ed 239 t.tm_mday = 21; // 1-31
TFuchsbichler 2:e1b98fac05ed 240 t.tm_mon = 12; // 0-11
TFuchsbichler 2:e1b98fac05ed 241 t.tm_year = 115; // year since 1900
TFuchsbichler 2:e1b98fac05ed 242
TFuchsbichler 2:e1b98fac05ed 243 // convert to timestamp
TFuchsbichler 2:e1b98fac05ed 244 time_t secondsSince1970 = mktime(&t);
TFuchsbichler 2:e1b98fac05ed 245
TFuchsbichler 2:e1b98fac05ed 246 // Set time and start RTC
TFuchsbichler 2:e1b98fac05ed 247 set_time(secondsSince1970);
TFuchsbichler 2:e1b98fac05ed 248
TFuchsbichler 2:e1b98fac05ed 249 log("init tft \r\n");
TFuchsbichler 2:e1b98fac05ed 250 mode=false;
TFuchsbichler 2:e1b98fac05ed 251 tft.init();
TFuchsbichler 2:e1b98fac05ed 252 Tick.attach(&zaehl, 0.01);
TFuchsbichler 2:e1b98fac05ed 253
TFuchsbichler 2:e1b98fac05ed 254 drawButtons();
TFuchsbichler 2:e1b98fac05ed 255
TFuchsbichler 2:e1b98fac05ed 256 while (1) {
TFuchsbichler 2:e1b98fac05ed 257 secondsSince1970 = time(NULL);
TFuchsbichler 2:e1b98fac05ed 258 strftime(timeString, 20, "%H:%M:%S", localtime(&secondsSince1970));
TFuchsbichler 2:e1b98fac05ed 259 tft.drawString(90, 50, timeString);
TFuchsbichler 2:e1b98fac05ed 260
TFuchsbichler 2:e1b98fac05ed 261 touch.readTouchData(x, y, down);
TFuchsbichler 2:e1b98fac05ed 262 if(down==true&&x>=208&&x<=240&&y>=0&&y<=32)
TFuchsbichler 2:e1b98fac05ed 263 RTC_SETUP();
TFuchsbichler 2:e1b98fac05ed 264
TFuchsbichler 0:dd55ca105ef3 265 if(down==true&&x>=25&&x<=74&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 266 mode=true;
TFuchsbichler 0:dd55ca105ef3 267
TFuchsbichler 0:dd55ca105ef3 268 if(down==true&&x>=95&&x<=144&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 269 mode=false;
TFuchsbichler 2:e1b98fac05ed 270
TFuchsbichler 0:dd55ca105ef3 271 if(down==true&&x>=165&&x<=214&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 272 reset();
TFuchsbichler 2:e1b98fac05ed 273
TFuchsbichler 2:e1b98fac05ed 274 tft.drawNumber(78,250,stund,2,1);
TFuchsbichler 2:e1b98fac05ed 275 tft.drawString(94, 250, ":");
TFuchsbichler 2:e1b98fac05ed 276 tft.drawNumber(102,250,min,2,1);
TFuchsbichler 2:e1b98fac05ed 277 tft.drawString(118, 250, ":");
TFuchsbichler 2:e1b98fac05ed 278 tft.drawNumber(126,250,sek,2,1);
TFuchsbichler 2:e1b98fac05ed 279 tft.drawString(142, 250, ":");
TFuchsbichler 2:e1b98fac05ed 280 tft.drawNumber(150,250,msek,2,1);
TFuchsbichler 0:dd55ca105ef3 281
TFuchsbichler 0:dd55ca105ef3 282 down=false;
TFuchsbichler 0:dd55ca105ef3 283 }
TFuchsbichler 0:dd55ca105ef3 284
TFuchsbichler 0:dd55ca105ef3 285 }