Create Touch_calibrate_Print_on_LCD.ino

This commit is contained in:
Hamid Saffari 2020-03-27 17:15:50 +04:30 committed by GitHub
parent e0f6a70665
commit e9d940a2ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 102 additions and 0 deletions

View File

@ -0,0 +1,102 @@
/*
Sketch to generate the setup() calibration values, these are reported
to the Serial Monitor.
The sketch has been tested on the ESP8266 and screen with XPT2046 driver.
*/
#include <SPI.h>
#include <TFT_eSPI.h> // Hardware-specific library
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
//------------------------------------------------------------------------------------------
void setup() {
// Use serial port
//Serial.begin(115200);
// Initialise the TFT screen
tft.init();
// Set the rotation before we calibrate
tft.setRotation(1);
// Calibrate the touch screen and retrieve the scaling factors
touch_calibrate();
/*
// Replace above line with the code sent to Serial Monitor
// once calibration is complete, e.g.:
uint16_t calData[5] = { 286, 3534, 283, 3600, 6 };
tft.setTouch(calData);
*/
// Clear the screen
tft.setTextColor(TFT_YELLOW, TFT_BLACK);
tft.drawCentreString("Touch screen to test!",tft.width()/2, tft.height()/2, 2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
}
//------------------------------------------------------------------------------------------
void loop(void) {
uint16_t x = 0, y = 0; // To store the touch coordinates
// Pressed will be set true is there is a valid touch on the screen
boolean pressed = tft.getTouch(&x, &y);
// Draw a white spot at the detected coordinates
if (pressed) {
tft.fillCircle(x, y, 2, TFT_WHITE);
tft.setCursor(20, 0);
tft.print("x,y = ");
tft.print(x);
tft.print(",");
tft.println(y);
tft.print(" ");
}
}
//------------------------------------------------------------------------------------------
// Code to run a screen calibration, not needed when calibration values set in setup()
void touch_calibrate()
{
uint16_t calData[5];
uint8_t calDataOK = 0;
// Calibrate
tft.fillScreen(TFT_BLACK);
tft.setCursor(20, 0);
tft.setTextFont(2);
tft.setTextSize(1);
tft.setTextColor(TFT_GREEN, TFT_BLACK);
tft.println("Touch corners as indicated");
tft.setTextFont(1);
tft.println();
tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);
tft.fillScreen(TFT_BLACK);
tft.println(" //Use this calibration code in setup():");
tft.print(" uint16_t calData[5] = { ");
for (uint8_t i = 0; i < 5; i++)
{
tft.print(calData[i]);
if (i < 4){
tft.print(", ");
}
}
tft.println(" };");
tft.print(" tft.setTouch(calData);");
delay(4000);
}