test export

Dependencies:   DmTftLibrary mbed

Fork of dm_calibrate by Display Module

Committer:
displaymodule
Date:
Fri Jul 04 10:24:13 2014 +0000
Revision:
0:aba2ac5dd09d
Child:
4:6bcad4fe23d6
First version

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 0:aba2ac5dd09d 24 #include "DmTouch.h"
displaymodule 0:aba2ac5dd09d 25 #include "DmTouchCalibration.h"
displaymodule 0:aba2ac5dd09d 26
displaymodule 0:aba2ac5dd09d 27 /******************************************************************************
displaymodule 0:aba2ac5dd09d 28 * Typedefs and defines
displaymodule 0:aba2ac5dd09d 29 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 30
displaymodule 0:aba2ac5dd09d 31 /* Note that there are restrictions on which platforms that can use printf
displaymodule 0:aba2ac5dd09d 32 in combinations with the DmTftLibrary. Some platforms (e.g. LPC1549 LPCXpresso)
displaymodule 0:aba2ac5dd09d 33 use the same pins for USBRX/USBTX and display control. Printing will
displaymodule 0:aba2ac5dd09d 34 cause the display to not work. Read more about this on the display's notebook
displaymodule 0:aba2ac5dd09d 35 page. */
displaymodule 0:aba2ac5dd09d 36 //#define log(...) printf(__VA_ARGS__)
displaymodule 0:aba2ac5dd09d 37 #define log(...)
displaymodule 0:aba2ac5dd09d 38
displaymodule 0:aba2ac5dd09d 39 #if 1
displaymodule 0:aba2ac5dd09d 40 /* Displays without adapter */
displaymodule 0:aba2ac5dd09d 41 #define DM_PIN_SPI_MOSI D11
displaymodule 0:aba2ac5dd09d 42 #define DM_PIN_SPI_MISO D12
displaymodule 0:aba2ac5dd09d 43 #define DM_PIN_SPI_SCLK D13
displaymodule 0:aba2ac5dd09d 44 #define DM_PIN_CS_TOUCH D4
displaymodule 0:aba2ac5dd09d 45 #define DM_PIN_CS_TFT D10
displaymodule 0:aba2ac5dd09d 46 #define DM_PIN_CS_SDCARD D8
displaymodule 0:aba2ac5dd09d 47 #define DM_PIN_CS_FLASH D6
displaymodule 0:aba2ac5dd09d 48 #else
displaymodule 0:aba2ac5dd09d 49 /* Displays with adapter */
displaymodule 0:aba2ac5dd09d 50 #define DM_PIN_SPI_MOSI A0
displaymodule 0:aba2ac5dd09d 51 #define DM_PIN_SPI_MISO D9
displaymodule 0:aba2ac5dd09d 52 #define DM_PIN_SPI_SCLK A1
displaymodule 0:aba2ac5dd09d 53 #define DM_PIN_CS_TOUCH D8
displaymodule 0:aba2ac5dd09d 54 #define DM_PIN_CS_TFT A3
displaymodule 0:aba2ac5dd09d 55 #define DM_PIN_CS_SDCARD D10
displaymodule 0:aba2ac5dd09d 56 #endif
displaymodule 0:aba2ac5dd09d 57
displaymodule 0:aba2ac5dd09d 58 /******************************************************************************
displaymodule 0:aba2ac5dd09d 59 * Local variables
displaymodule 0:aba2ac5dd09d 60 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 61
displaymodule 0:aba2ac5dd09d 62 //DmTftIli9325 tft; /* DM_TFT28_103 and DM_TFT24_104 */
displaymodule 0:aba2ac5dd09d 63 //DmTftIli9341 tft; /* DM_TFT28_105 */
displaymodule 0:aba2ac5dd09d 64 DmTftSsd2119 tft; /* DM_TFT35_107 */
displaymodule 0:aba2ac5dd09d 65
displaymodule 0:aba2ac5dd09d 66 //DmTouch touch(DmTouch::DM_TFT28_103, DmTouch::Software); /* For LPC4088 QuickStart Board */
displaymodule 0:aba2ac5dd09d 67 //DmTouch touch(DmTouch::DM_TFT28_103);
displaymodule 0:aba2ac5dd09d 68 //DmTouch touch(DmTouch::DM_TFT24_104, DmTouch::Software); /* For LPC4088 QuickStart Board */
displaymodule 0:aba2ac5dd09d 69 //DmTouch touch(DmTouch::DM_TFT24_104);
displaymodule 0:aba2ac5dd09d 70 //DmTouch touch(DmTouch::DM_TFT28_105);
displaymodule 0:aba2ac5dd09d 71 DmTouch touch(DmTouch::DM_TFT35_107);
displaymodule 0:aba2ac5dd09d 72
displaymodule 0:aba2ac5dd09d 73 DmTouchCalibration calibration = DmTouchCalibration(&tft, &touch);
displaymodule 0:aba2ac5dd09d 74
displaymodule 0:aba2ac5dd09d 75 DigitalInOut csTouch(DM_PIN_CS_TOUCH, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 76 DigitalInOut csDisplay(DM_PIN_CS_TFT, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 77 DigitalInOut csSDCard(DM_PIN_CS_SDCARD, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 78 #ifdef DM_PIN_CS_FLASH
displaymodule 0:aba2ac5dd09d 79 DigitalInOut csFlash(DM_PIN_CS_FLASH, PIN_OUTPUT, PullUp, 1);
displaymodule 0:aba2ac5dd09d 80 #endif
displaymodule 0:aba2ac5dd09d 81
displaymodule 0:aba2ac5dd09d 82 bool calibrated = false;
displaymodule 0:aba2ac5dd09d 83
displaymodule 0:aba2ac5dd09d 84 /******************************************************************************
displaymodule 0:aba2ac5dd09d 85 * Global variables
displaymodule 0:aba2ac5dd09d 86 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 87
displaymodule 0:aba2ac5dd09d 88 /******************************************************************************
displaymodule 0:aba2ac5dd09d 89 * Local functions
displaymodule 0:aba2ac5dd09d 90 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 91
displaymodule 0:aba2ac5dd09d 92 static void loop() {
displaymodule 0:aba2ac5dd09d 93 uint16_t x, y = 0;
displaymodule 0:aba2ac5dd09d 94 bool touched = false;
displaymodule 0:aba2ac5dd09d 95
displaymodule 0:aba2ac5dd09d 96 if (!calibrated) {
displaymodule 0:aba2ac5dd09d 97 tft.drawString(5, 5, "Press and hold on cross");
displaymodule 0:aba2ac5dd09d 98 tft.drawString(5, 25, "until it turns green. ");
displaymodule 0:aba2ac5dd09d 99
displaymodule 0:aba2ac5dd09d 100 Point displayRefPoint[5];
displaymodule 0:aba2ac5dd09d 101 Point touchRefPoint[5];
displaymodule 0:aba2ac5dd09d 102 if (calibration.getTouchReferencePoints(displayRefPoint, touchRefPoint, tft.width(), tft.height())) {
displaymodule 0:aba2ac5dd09d 103 CalibrationMatrix calibrationMatrix = calibration.calculateCalibrationMatrix(displayRefPoint, touchRefPoint);
displaymodule 0:aba2ac5dd09d 104 touch.setCalibrationMatrix(calibrationMatrix);
displaymodule 0:aba2ac5dd09d 105 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 106 calibration.drawCalibPoint(displayRefPoint[0].x, displayRefPoint[0].y);
displaymodule 0:aba2ac5dd09d 107 calibration.drawCalibPoint(displayRefPoint[1].x, displayRefPoint[1].y);
displaymodule 0:aba2ac5dd09d 108 calibration.drawCalibPoint(displayRefPoint[2].x, displayRefPoint[2].y);
displaymodule 0:aba2ac5dd09d 109 calibration.drawCalibPoint(displayRefPoint[3].x, displayRefPoint[3].y);
displaymodule 0:aba2ac5dd09d 110 calibration.drawCalibPoint(displayRefPoint[4].x, displayRefPoint[4].y);
displaymodule 0:aba2ac5dd09d 111 calibration.drawCalibration(calibrationMatrix);
displaymodule 0:aba2ac5dd09d 112 calibrated = true;
displaymodule 0:aba2ac5dd09d 113 } else {
displaymodule 0:aba2ac5dd09d 114 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 115 tft.drawString(5, 5, "Calibration failed");
displaymodule 0:aba2ac5dd09d 116 tft.drawString(5, 25, "Please try again.");
displaymodule 0:aba2ac5dd09d 117 delay(2000);
displaymodule 0:aba2ac5dd09d 118 tft.clearScreen();
displaymodule 0:aba2ac5dd09d 119 return;
displaymodule 0:aba2ac5dd09d 120 }
displaymodule 0:aba2ac5dd09d 121 }
displaymodule 0:aba2ac5dd09d 122
displaymodule 0:aba2ac5dd09d 123 if (touch.isTouched()) {
displaymodule 0:aba2ac5dd09d 124 touch.readTouchData(x,y,touched);
displaymodule 0:aba2ac5dd09d 125 calibration.drawCalibPoint(x, y);
displaymodule 0:aba2ac5dd09d 126 }
displaymodule 0:aba2ac5dd09d 127 }
displaymodule 0:aba2ac5dd09d 128
displaymodule 0:aba2ac5dd09d 129 /******************************************************************************
displaymodule 0:aba2ac5dd09d 130 * Main
displaymodule 0:aba2ac5dd09d 131 *****************************************************************************/
displaymodule 0:aba2ac5dd09d 132
displaymodule 0:aba2ac5dd09d 133 int main() {
displaymodule 0:aba2ac5dd09d 134 tft.init();
displaymodule 0:aba2ac5dd09d 135 touch.init();
displaymodule 0:aba2ac5dd09d 136 while (1) {
displaymodule 0:aba2ac5dd09d 137 loop();
displaymodule 0:aba2ac5dd09d 138 }
displaymodule 0:aba2ac5dd09d 139 }
displaymodule 0:aba2ac5dd09d 140