cbcx
Dependencies: DmTftLibrary mbed
Fork of LCD_Proj by
main.cpp@1:81d0d835991d, 2015-12-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |