test export
Dependencies: DmTftLibrary mbed
Fork of dm_calibrate by
main.cpp@0:aba2ac5dd09d, 2014-07-04 (annotated)
- 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?
User | Revision | Line number | New 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 |