cbcx

Dependencies:   DmTftLibrary mbed

Fork of LCD_Proj by Tobias Fuchsbichler

Committer:
Nikolas
Date:
Mon Dec 21 12:37:40 2015 +0000
Revision:
1:81d0d835991d
Parent:
0:dd55ca105ef3
Child:
2:e1b98fac05ed
xcbcxbc

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 0:dd55ca105ef3 18
TFuchsbichler 0:dd55ca105ef3 19 #include "DmTftHX8353C.h"
TFuchsbichler 0:dd55ca105ef3 20 #include "DmTftS6D0164.h"
TFuchsbichler 0:dd55ca105ef3 21 #include "DmTftIli9325.h"
TFuchsbichler 0:dd55ca105ef3 22 #include "DmTftIli9341.h"
TFuchsbichler 0:dd55ca105ef3 23 #include "DmTftSsd2119.h"
TFuchsbichler 0:dd55ca105ef3 24 #include "DmTftRa8875.h"
TFuchsbichler 0:dd55ca105ef3 25 #include "DmTouch.h"
TFuchsbichler 0:dd55ca105ef3 26 #include "DmTpFt6x06.h"
TFuchsbichler 0:dd55ca105ef3 27
TFuchsbichler 0:dd55ca105ef3 28 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 29 * Typedefs and defines
TFuchsbichler 0:dd55ca105ef3 30 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 31
TFuchsbichler 0:dd55ca105ef3 32 /* Note that there are restrictions on which platforms that can use printf
TFuchsbichler 0:dd55ca105ef3 33 in combinations with the DmTftLibrary. Some platforms (e.g. LPC1549 LPCXpresso)
TFuchsbichler 0:dd55ca105ef3 34 use the same pins for USBRX/USBTX and display control. Printing will
TFuchsbichler 0:dd55ca105ef3 35 cause the display to not work. Read more about this on the display's notebook
TFuchsbichler 0:dd55ca105ef3 36 page. */
TFuchsbichler 0:dd55ca105ef3 37 //#define log(...) printf(__VA_ARGS__)
TFuchsbichler 0:dd55ca105ef3 38 #define log(...)
TFuchsbichler 0:dd55ca105ef3 39
TFuchsbichler 0:dd55ca105ef3 40 #if 1
TFuchsbichler 0:dd55ca105ef3 41 /* Displays without adapter */
TFuchsbichler 0:dd55ca105ef3 42 #define DM_PIN_SPI_MOSI p5
TFuchsbichler 0:dd55ca105ef3 43 #define DM_PIN_SPI_MISO p6
TFuchsbichler 0:dd55ca105ef3 44 #define DM_PIN_SPI_SCLK p7
Nikolas 1:81d0d835991d 45 #define DM_PIN_CS_TOUCH p8
TFuchsbichler 0:dd55ca105ef3 46 #define DM_PIN_CS_TFT p21
Nikolas 1:81d0d835991d 47 #define DM_PIN_CS_SDCARD p14 // 23
Nikolas 1:81d0d835991d 48 #define DM_PIN_CS_FLASH p10 // 24
TFuchsbichler 0:dd55ca105ef3 49 #else
TFuchsbichler 0:dd55ca105ef3 50 /* Displays with adapter */
TFuchsbichler 0:dd55ca105ef3 51 #define DM_PIN_SPI_MOSI p5
TFuchsbichler 0:dd55ca105ef3 52 #define DM_PIN_SPI_MISO p6
TFuchsbichler 0:dd55ca105ef3 53 #define DM_PIN_SPI_SCLK p7
Nikolas 1:81d0d835991d 54 #define DM_PIN_CS_TOUCH p8
TFuchsbichler 0:dd55ca105ef3 55 #define DM_PIN_CS_TFT p21
Nikolas 1:81d0d835991d 56 #define DM_PIN_CS_SDCARD p14 // 13
TFuchsbichler 0:dd55ca105ef3 57 #endif
TFuchsbichler 0:dd55ca105ef3 58
TFuchsbichler 0:dd55ca105ef3 59 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 60 * Local variables
TFuchsbichler 0:dd55ca105ef3 61 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 62
TFuchsbichler 0:dd55ca105ef3 63 /********* TFT DISPLAY INIT *********/
TFuchsbichler 0:dd55ca105ef3 64 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 65
TFuchsbichler 0:dd55ca105ef3 66 /********* TOUCH PANEL INIT *********/
TFuchsbichler 0:dd55ca105ef3 67
TFuchsbichler 0:dd55ca105ef3 68 DmTouch touch(DmTouch::DM_TFT28_105, p5, p6, p7);
TFuchsbichler 0:dd55ca105ef3 69
TFuchsbichler 0:dd55ca105ef3 70 DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 71 DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 72 DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 73 #ifdef DM_PIN_CS_FLASH
TFuchsbichler 0:dd55ca105ef3 74 DigitalInOut csFlash(DM_PIN_CS_FLASH, PIN_OUTPUT, PullUp, 1);
TFuchsbichler 0:dd55ca105ef3 75 #endif
TFuchsbichler 0:dd55ca105ef3 76
Nikolas 1:81d0d835991d 77 PwmOut pwmRTC(p23); // RTC test PWM
TFuchsbichler 0:dd55ca105ef3 78 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 79 * Global variables
TFuchsbichler 0:dd55ca105ef3 80 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 81
TFuchsbichler 0:dd55ca105ef3 82 /******************************************************************************
TFuchsbichler 0:dd55ca105ef3 83 * Local functions
TFuchsbichler 0:dd55ca105ef3 84 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 85
Nikolas 1:81d0d835991d 86 /*
Nikolas 1:81d0d835991d 87 #define RED 0xf800
Nikolas 1:81d0d835991d 88 #define GREEN 0x07e0
Nikolas 1:81d0d835991d 89 #define BLUE 0x001f
Nikolas 1:81d0d835991d 90 #define BLACK 0x0000
Nikolas 1:81d0d835991d 91 #define YELLOW 0xffe0
Nikolas 1:81d0d835991d 92 #define WHITE 0xffff
Nikolas 1:81d0d835991d 93 #define CYAN 0x07ff
Nikolas 1:81d0d835991d 94 #define BRIGHT_RED 0xf810
Nikolas 1:81d0d835991d 95 #define GRAY1 0x8410
Nikolas 1:81d0d835991d 96 #define GRAY2 0x4208
Nikolas 1:81d0d835991d 97 */
Nikolas 1:81d0d835991d 98 #define Navy 0x000F /* 0, 0, 128 */
Nikolas 1:81d0d835991d 99 #define DarkGreen 0x03E0 /* 0, 128, 0 */
Nikolas 1:81d0d835991d 100 #define DarkCyan 0x03EF /* 0, 128, 128 */
Nikolas 1:81d0d835991d 101 #define Maroon 0x7800 /* 128, 0, 0 */
Nikolas 1:81d0d835991d 102 #define Purple 0x780F /* 128, 0, 128 */
Nikolas 1:81d0d835991d 103 #define Olive 0x7BE0 /* 128, 128, 0 */
Nikolas 1:81d0d835991d 104 #define LightGrey 0xC618 /* 192, 192, 192 */
Nikolas 1:81d0d835991d 105 #define DarkGrey 0x7BEF /* 128, 128, 128 */
Nikolas 1:81d0d835991d 106 #define Magenta 0xF81F /* 255, 0, 255 */
Nikolas 1:81d0d835991d 107 #define Orange 0xFD20 /* 255, 165, 0 */
Nikolas 1:81d0d835991d 108 #define GreenYellow 0xAFE5 /* 173, 255, 47 */
Nikolas 1:81d0d835991d 109 #define Pink 0xF81F
Nikolas 1:81d0d835991d 110
TFuchsbichler 0:dd55ca105ef3 111 Ticker Tick;
TFuchsbichler 0:dd55ca105ef3 112
TFuchsbichler 0:dd55ca105ef3 113 float a;
TFuchsbichler 0:dd55ca105ef3 114 int msek;
TFuchsbichler 0:dd55ca105ef3 115 int sek;
TFuchsbichler 0:dd55ca105ef3 116 int min;
TFuchsbichler 0:dd55ca105ef3 117 int stund;
TFuchsbichler 0:dd55ca105ef3 118 bool mode;
TFuchsbichler 0:dd55ca105ef3 119
TFuchsbichler 0:dd55ca105ef3 120 void zaehl()
TFuchsbichler 0:dd55ca105ef3 121 {
TFuchsbichler 0:dd55ca105ef3 122 if(mode==true) {
TFuchsbichler 0:dd55ca105ef3 123 msek++;
TFuchsbichler 0:dd55ca105ef3 124 if(msek==100) {
TFuchsbichler 0:dd55ca105ef3 125 sek++;
TFuchsbichler 0:dd55ca105ef3 126 msek=0;
TFuchsbichler 0:dd55ca105ef3 127
TFuchsbichler 0:dd55ca105ef3 128 }
TFuchsbichler 0:dd55ca105ef3 129
TFuchsbichler 0:dd55ca105ef3 130 if(sek==60) {
TFuchsbichler 0:dd55ca105ef3 131 min++;
TFuchsbichler 0:dd55ca105ef3 132 sek=0;
TFuchsbichler 0:dd55ca105ef3 133
TFuchsbichler 0:dd55ca105ef3 134 }
TFuchsbichler 0:dd55ca105ef3 135
TFuchsbichler 0:dd55ca105ef3 136 if(min==60) {
TFuchsbichler 0:dd55ca105ef3 137 stund++;
TFuchsbichler 0:dd55ca105ef3 138 min=0;
TFuchsbichler 0:dd55ca105ef3 139 }
TFuchsbichler 0:dd55ca105ef3 140 if(stund==24) {
TFuchsbichler 0:dd55ca105ef3 141 msek=0;
TFuchsbichler 0:dd55ca105ef3 142 sek=0;
TFuchsbichler 0:dd55ca105ef3 143 min=0;
TFuchsbichler 0:dd55ca105ef3 144 stund=0;
TFuchsbichler 0:dd55ca105ef3 145 }
TFuchsbichler 0:dd55ca105ef3 146
TFuchsbichler 0:dd55ca105ef3 147 }
TFuchsbichler 0:dd55ca105ef3 148
TFuchsbichler 0:dd55ca105ef3 149 }
TFuchsbichler 0:dd55ca105ef3 150
TFuchsbichler 0:dd55ca105ef3 151 void reset()
TFuchsbichler 0:dd55ca105ef3 152 {
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 * Main
TFuchsbichler 0:dd55ca105ef3 161 *****************************************************************************/
TFuchsbichler 0:dd55ca105ef3 162
TFuchsbichler 0:dd55ca105ef3 163 int main()
TFuchsbichler 0:dd55ca105ef3 164 {
Nikolas 1:81d0d835991d 165 pwmRTC.write(0.4);
Nikolas 1:81d0d835991d 166 pwmRTC.period(0.0000263);
Nikolas 1:81d0d835991d 167 char timeString[20];
Nikolas 1:81d0d835991d 168
Nikolas 1:81d0d835991d 169 struct tm t;
Nikolas 1:81d0d835991d 170 t.tm_sec = 00; // 0-59
Nikolas 1:81d0d835991d 171 t.tm_min = 12; // 0-59
Nikolas 1:81d0d835991d 172 t.tm_hour = 10; // 0-23
Nikolas 1:81d0d835991d 173 t.tm_mday = 21; // 1-31
Nikolas 1:81d0d835991d 174 t.tm_mon = 12; // 0-11
Nikolas 1:81d0d835991d 175 t.tm_year = 115; // year since 1900
Nikolas 1:81d0d835991d 176
Nikolas 1:81d0d835991d 177 // convert to timestamp
Nikolas 1:81d0d835991d 178 time_t secondsSince1970 = mktime(&t);
Nikolas 1:81d0d835991d 179
Nikolas 1:81d0d835991d 180 // Set time and start RTC
Nikolas 1:81d0d835991d 181 set_time(secondsSince1970);
Nikolas 1:81d0d835991d 182
TFuchsbichler 0:dd55ca105ef3 183 log("init tft \r\n");
TFuchsbichler 0:dd55ca105ef3 184 mode=false;
TFuchsbichler 0:dd55ca105ef3 185 tft.init();
TFuchsbichler 0:dd55ca105ef3 186 Tick.attach(&zaehl, 0.01);
TFuchsbichler 0:dd55ca105ef3 187
TFuchsbichler 0:dd55ca105ef3 188 uint16_t x = 0;
TFuchsbichler 0:dd55ca105ef3 189 uint16_t y = 0;
TFuchsbichler 0:dd55ca105ef3 190 uint16_t w = tft.width();
TFuchsbichler 0:dd55ca105ef3 191 uint16_t h = tft.height();
TFuchsbichler 0:dd55ca105ef3 192
TFuchsbichler 0:dd55ca105ef3 193 bool down=false;
TFuchsbichler 0:dd55ca105ef3 194 //Rectangles
TFuchsbichler 0:dd55ca105ef3 195 tft.drawRectangle(25, 285, 74, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 196 tft.drawRectangle(95, 285, 144, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 197 tft.drawRectangle(165, 285,214, 310,WHITE);
TFuchsbichler 0:dd55ca105ef3 198 tft.fillRectangle(26, 286, 73, 309, GREEN);
TFuchsbichler 0:dd55ca105ef3 199 tft.fillRectangle(96, 286, 143, 309, RED);
TFuchsbichler 0:dd55ca105ef3 200 //Text
TFuchsbichler 0:dd55ca105ef3 201 tft.drawString(84, 30, "STOPWATCH");
Nikolas 1:81d0d835991d 202 tft.setTextColor(GREEN, BLACK);
TFuchsbichler 0:dd55ca105ef3 203 tft.drawString(30, 290, "START");
Nikolas 1:81d0d835991d 204 tft.setTextColor(RED, BLACK);
TFuchsbichler 0:dd55ca105ef3 205 tft.drawString(104, 290, "STOP");
Nikolas 1:81d0d835991d 206 tft.setTextColor(BLACK, WHITE);
TFuchsbichler 0:dd55ca105ef3 207 tft.drawString(170, 290, "RESET");
TFuchsbichler 0:dd55ca105ef3 208 touch.init();
TFuchsbichler 0:dd55ca105ef3 209 while (1) {
Nikolas 1:81d0d835991d 210 secondsSince1970 = time(NULL);
Nikolas 1:81d0d835991d 211 strftime(timeString, 20, "%H:%M:%S", localtime(&secondsSince1970));
Nikolas 1:81d0d835991d 212 tft.drawString(50, 50, timeString);
Nikolas 1:81d0d835991d 213
TFuchsbichler 0:dd55ca105ef3 214 touch.readTouchData(x, y, down);
TFuchsbichler 0:dd55ca105ef3 215 if(down==true&&x>=25&&x<=74&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 216 mode=true;
TFuchsbichler 0:dd55ca105ef3 217
TFuchsbichler 0:dd55ca105ef3 218 if(down==true&&x>=95&&x<=144&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 219 mode=false;
TFuchsbichler 0:dd55ca105ef3 220
TFuchsbichler 0:dd55ca105ef3 221 if(down==true&&x>=165&&x<=214&&y>=285&&y<=310)
TFuchsbichler 0:dd55ca105ef3 222 reset();
TFuchsbichler 0:dd55ca105ef3 223
TFuchsbichler 0:dd55ca105ef3 224 tft.drawNumber(88,70,stund,2,1);
TFuchsbichler 0:dd55ca105ef3 225 tft.drawString(104, 70, ":");
TFuchsbichler 0:dd55ca105ef3 226 tft.drawNumber(112,70,min,2,1);
TFuchsbichler 0:dd55ca105ef3 227 tft.drawString(128, 70, ":");
TFuchsbichler 0:dd55ca105ef3 228 tft.drawNumber(136,70,sek,2,1);
Nikolas 1:81d0d835991d 229 tft.drawString(152, 70, ":");
Nikolas 1:81d0d835991d 230 tft.drawNumber(160,70,msek,2,1);
TFuchsbichler 0:dd55ca105ef3 231
TFuchsbichler 0:dd55ca105ef3 232 down=false;
TFuchsbichler 0:dd55ca105ef3 233 }
TFuchsbichler 0:dd55ca105ef3 234
TFuchsbichler 0:dd55ca105ef3 235 }