test export

Dependencies:   DmTftLibrary mbed

Fork of dm_calibrate by Display Module

Committer:
displaymodule
Date:
Thu Jan 22 01:10:00 2015 +0000
Revision:
4:6bcad4fe23d6
Parent:
0:aba2ac5dd09d
Add new Producets: DM_TFT43_108, DM_TFT50_111 based on new lib drv: DmTftRa8875

Who changed what in which revision?

UserRevisionLine numberNew contents of line
displaymodule 0:aba2ac5dd09d 1 /**********************************************************************************************
displaymodule 0:aba2ac5dd09d 2 Copyright (c) 2014 DisplayModule. All rights reserved.
displaymodule 0:aba2ac5dd09d 3
displaymodule 0:aba2ac5dd09d 4 Redistribution and use of this source code, part of this source code or any compiled binary
displaymodule 0:aba2ac5dd09d 5 based on this source code is permitted as long as the above copyright notice and following
displaymodule 0:aba2ac5dd09d 6 disclaimer is retained.
displaymodule 0:aba2ac5dd09d 7
displaymodule 0:aba2ac5dd09d 8 DISCLAIMER:
displaymodule 0:aba2ac5dd09d 9 THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES
displaymodule 0:aba2ac5dd09d 10 NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
displaymodule 0:aba2ac5dd09d 11 ********************************************************************************************/
displaymodule 0:aba2ac5dd09d 12
displaymodule 0:aba2ac5dd09d 13 /******************************************************************************
displaymodule 0:aba2ac5dd09d 14 * Includes
displaymodule 0:aba2ac5dd09d 15 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 16
displaymodule 0:aba2ac5dd09d 17 #include "mbed.h"
displaymodule 0:aba2ac5dd09d 18
displaymodule 0:aba2ac5dd09d 19 #include "DmTftHX8353C.h"
displaymodule 0:aba2ac5dd09d 20 #include "DmTftS6D0164.h"
displaymodule 0:aba2ac5dd09d 21 #include "DmTftIli9325.h"
displaymodule 0:aba2ac5dd09d 22 #include "DmTftIli9341.h"
displaymodule 0:aba2ac5dd09d 23 #include "DmTftSsd2119.h"
displaymodule 4:6bcad4fe23d6 24 #include "DmTftRa8875.h"
displaymodule 0:aba2ac5dd09d 25 #include "DmTouch.h"
displaymodule 0:aba2ac5dd09d 26 #include "DmTouchCalibration.h"
displaymodule 0:aba2ac5dd09d 27
displaymodule 0:aba2ac5dd09d 28 /******************************************************************************
displaymodule 0:aba2ac5dd09d 29 * Typedefs and defines
displaymodule 0:aba2ac5dd09d 30 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 31
displaymodule 0:aba2ac5dd09d 32 /* Note that there are restrictions on which platforms that can use printf
displaymodule 0:aba2ac5dd09d 33 in combinations with the DmTftLibrary. Some platforms (e.g. LPC1549 LPCXpresso)
displaymodule 0:aba2ac5dd09d 34 use the same pins for USBRX/USBTX and display control. Printing will
displaymodule 0:aba2ac5dd09d 35 cause the display to not work. Read more about this on the display's notebook
displaymodule 0:aba2ac5dd09d 36 page. */
displaymodule 0:aba2ac5dd09d 37 //#define log(...) printf(__VA_ARGS__)
displaymodule 0:aba2ac5dd09d 38 #define log(...)
displaymodule 0:aba2ac5dd09d 39
displaymodule 0:aba2ac5dd09d 40 #if 1
displaymodule 0:aba2ac5dd09d 41 /* Displays without adapter */
displaymodule 0:aba2ac5dd09d 42 #define DM_PIN_SPI_MOSI D11
displaymodule 0:aba2ac5dd09d 43 #define DM_PIN_SPI_MISO D12
displaymodule 0:aba2ac5dd09d 44 #define DM_PIN_SPI_SCLK D13
displaymodule 0:aba2ac5dd09d 45 #define DM_PIN_CS_TOUCH D4
displaymodule 0:aba2ac5dd09d 46 #define DM_PIN_CS_TFT D10
displaymodule 0:aba2ac5dd09d 47 #define DM_PIN_CS_SDCARD D8
displaymodule 0:aba2ac5dd09d 48 #define DM_PIN_CS_FLASH D6
displaymodule 0:aba2ac5dd09d 49 #else
displaymodule 0:aba2ac5dd09d 50 /* Displays with adapter */
displaymodule 0:aba2ac5dd09d 51 #define DM_PIN_SPI_MOSI A0
displaymodule 0:aba2ac5dd09d 52 #define DM_PIN_SPI_MISO D9
displaymodule 0:aba2ac5dd09d 53 #define DM_PIN_SPI_SCLK A1
displaymodule 0:aba2ac5dd09d 54 #define DM_PIN_CS_TOUCH D8
displaymodule 0:aba2ac5dd09d 55 #define DM_PIN_CS_TFT A3
displaymodule 0:aba2ac5dd09d 56 #define DM_PIN_CS_SDCARD D10
displaymodule 0:aba2ac5dd09d 57 #endif
displaymodule 0:aba2ac5dd09d 58
displaymodule 0:aba2ac5dd09d 59 /******************************************************************************
displaymodule 0:aba2ac5dd09d 60 * Local variables
displaymodule 0:aba2ac5dd09d 61 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 62
displaymodule 0:aba2ac5dd09d 63 //DmTftIli9325 tft; /* DM_TFT28_103 and DM_TFT24_104 */
displaymodule 0:aba2ac5dd09d 64 //DmTftIli9341 tft; /* DM_TFT28_105 */
displaymodule 4:6bcad4fe23d6 65 //DmTftSsd2119 tft; /* DM_TFT35_107 */
displaymodule 4:6bcad4fe23d6 66 DmTftRa8875 tft; /* DM_TFT43_108 and DM_TFT50_111 */
displaymodule 0:aba2ac5dd09d 67
displaymodule 0:aba2ac5dd09d 68 //DmTouch touch(DmTouch::DM_TFT28_103, DmTouch::Software); /* For LPC4088 QuickStart Board */
displaymodule 0:aba2ac5dd09d 69 //DmTouch touch(DmTouch::DM_TFT28_103);
displaymodule 0:aba2ac5dd09d 70 //DmTouch touch(DmTouch::DM_TFT24_104, DmTouch::Software); /* For LPC4088 QuickStart Board */
displaymodule 0:aba2ac5dd09d 71 //DmTouch touch(DmTouch::DM_TFT24_104);
displaymodule 0:aba2ac5dd09d 72 //DmTouch touch(DmTouch::DM_TFT28_105);
displaymodule 4:6bcad4fe23d6 73 //DmTouch touch(DmTouch::DM_TFT35_107);
displaymodule 4:6bcad4fe23d6 74 //DmTouch touch(DmTouch::DM_TFT43_108); // For DmTftRa8875 driver, The panel resolution should be config in DmTftRa8875::init() function on the DmTftRa8875.cpp file.
displaymodule 4:6bcad4fe23d6 75 DmTouch touch(DmTouch::DM_TFT50_111);
displaymodule 0:aba2ac5dd09d 76
displaymodule 0:aba2ac5dd09d 77 DmTouchCalibration calibration = DmTouchCalibration(&tft, &touch);
displaymodule 0:aba2ac5dd09d 78
displaymodule 0:aba2ac5dd09d 79 DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 80 DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 81 DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 82 #ifdef DM_PIN_CS_FLASH
displaymodule 0:aba2ac5dd09d 83 DigitalInOut csFlash(DM_PIN_CS_FLASH, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 84 #endif
displaymodule 0:aba2ac5dd09d 85
displaymodule 0:aba2ac5dd09d 86 bool calibrated = false;
displaymodule 0:aba2ac5dd09d 87
displaymodule 0:aba2ac5dd09d 88 /******************************************************************************
displaymodule 0:aba2ac5dd09d 89 * Global variables
displaymodule 0:aba2ac5dd09d 90 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 91
displaymodule 0:aba2ac5dd09d 92 /******************************************************************************
displaymodule 0:aba2ac5dd09d 93 * Local functions
displaymodule 0:aba2ac5dd09d 94 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 95
displaymodule 0:aba2ac5dd09d 96 static void loop() {
displaymodule 0:aba2ac5dd09d 97 uint16_t x, y = 0;
displaymodule 0:aba2ac5dd09d 98 bool touched = false;
displaymodule 0:aba2ac5dd09d 99
displaymodule 0:aba2ac5dd09d 100 if (!calibrated) {
displaymodule 0:aba2ac5dd09d 101 tft.drawString(5, 5, "Press and hold on cross");
displaymodule 0:aba2ac5dd09d 102 tft.drawString(5, 25, "until it turns green. ");
displaymodule 4:6bcad4fe23d6 103
displaymodule 0:aba2ac5dd09d 104 Point displayRefPoint[5];
displaymodule 0:aba2ac5dd09d 105 Point touchRefPoint[5];
displaymodule 0:aba2ac5dd09d 106 if (calibration.getTouchReferencePoints(displayRefPoint, touchRefPoint, tft.width(), tft.height())) {
displaymodule 0:aba2ac5dd09d 107 CalibrationMatrix calibrationMatrix = calibration.calculateCalibrationMatrix(displayRefPoint, touchRefPoint);
displaymodule 0:aba2ac5dd09d 108 touch.setCalibrationMatrix(calibrationMatrix);
displaymodule 0:aba2ac5dd09d 109 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 110 calibration.drawCalibPoint(displayRefPoint[0].x, displayRefPoint[0].y);
displaymodule 0:aba2ac5dd09d 111 calibration.drawCalibPoint(displayRefPoint[1].x, displayRefPoint[1].y);
displaymodule 0:aba2ac5dd09d 112 calibration.drawCalibPoint(displayRefPoint[2].x, displayRefPoint[2].y);
displaymodule 0:aba2ac5dd09d 113 calibration.drawCalibPoint(displayRefPoint[3].x, displayRefPoint[3].y);
displaymodule 0:aba2ac5dd09d 114 calibration.drawCalibPoint(displayRefPoint[4].x, displayRefPoint[4].y);
displaymodule 0:aba2ac5dd09d 115 calibration.drawCalibration(calibrationMatrix);
displaymodule 0:aba2ac5dd09d 116 calibrated = true;
displaymodule 0:aba2ac5dd09d 117 } else {
displaymodule 0:aba2ac5dd09d 118 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 119 tft.drawString(5, 5, "Calibration failed");
displaymodule 0:aba2ac5dd09d 120 tft.drawString(5, 25, "Please try again.");
displaymodule 0:aba2ac5dd09d 121 delay(2000);
displaymodule 0:aba2ac5dd09d 122 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 123 return;
displaymodule 0:aba2ac5dd09d 124 }
displaymodule 0:aba2ac5dd09d 125 }
displaymodule 0:aba2ac5dd09d 126
displaymodule 0:aba2ac5dd09d 127 if (touch.isTouched()) {
displaymodule 0:aba2ac5dd09d 128 touch.readTouchData(x,y,touched);
displaymodule 0:aba2ac5dd09d 129 calibration.drawCalibPoint(x, y);
displaymodule 0:aba2ac5dd09d 130 }
displaymodule 0:aba2ac5dd09d 131 }
displaymodule 0:aba2ac5dd09d 132
displaymodule 0:aba2ac5dd09d 133 /******************************************************************************
displaymodule 0:aba2ac5dd09d 134 * Main
displaymodule 0:aba2ac5dd09d 135 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 136
displaymodule 0:aba2ac5dd09d 137 int main() {
displaymodule 0:aba2ac5dd09d 138 tft.init();
displaymodule 0:aba2ac5dd09d 139 touch.init();
displaymodule 0:aba2ac5dd09d 140 while (1) {
displaymodule 0:aba2ac5dd09d 141 loop();
displaymodule 0:aba2ac5dd09d 142 }
displaymodule 0:aba2ac5dd09d 143 }
displaymodule 0:aba2ac5dd09d 144