77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| #include "FS.h"
 | |
| #include <SPI.h>
 | |
| #include <TFT_eSPI.h>
 | |
| TFT_eSPI tft = TFT_eSPI();
 | |
| 
 | |
| #define CALIBRATION_FILE "/calibrationData"
 | |
| 
 | |
| void setup(void) {
 | |
|   uint16_t calibrationData[5];
 | |
|   uint8_t calDataOK = 0;
 | |
| 
 | |
|   Serial.begin(115200);
 | |
|   Serial.println("starting");
 | |
| 
 | |
|   tft.init();
 | |
| 
 | |
|   tft.setRotation(3);
 | |
|   tft.fillScreen((0xFFFF));
 | |
| 
 | |
|   tft.setCursor(20, 0, 2);
 | |
|   tft.setTextColor(TFT_BLACK, TFT_WHITE);  tft.setTextSize(1);
 | |
|   tft.println("calibration run");
 | |
| 
 | |
|   // check file system
 | |
|   if (!SPIFFS.begin()) {
 | |
|     Serial.println("formating file system");
 | |
| 
 | |
|     SPIFFS.format();
 | |
|     SPIFFS.begin();
 | |
|   }
 | |
| 
 | |
|   // check if calibration file exists
 | |
|   if (SPIFFS.exists(CALIBRATION_FILE)) {
 | |
|     File f = SPIFFS.open(CALIBRATION_FILE, "r");
 | |
|     if (f) {
 | |
|       if (f.readBytes((char *)calibrationData, 14) == 14)
 | |
|         calDataOK = 1;
 | |
|       f.close();
 | |
|     }
 | |
|   }
 | |
|   if (calDataOK) {
 | |
|     // calibration data valid
 | |
|     tft.setTouch(calibrationData);
 | |
|   } else {
 | |
|     // data not valid. recalibrate
 | |
|     tft.calibrateTouch(calibrationData, TFT_WHITE, TFT_RED, 15);
 | |
|     // store data
 | |
|     File f = SPIFFS.open(CALIBRATION_FILE, "w");
 | |
|     if (f) {
 | |
|       f.write((const unsigned char *)calibrationData, 14);
 | |
|       f.close();
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   tft.fillScreen((0xFFFF));
 | |
| 
 | |
| }
 | |
| 
 | |
| void loop() {
 | |
|   uint16_t x, y;
 | |
|   static uint16_t color;
 | |
| 
 | |
|   if (tft.getTouch(&x, &y)) {
 | |
| 
 | |
|     tft.setCursor(5, 5, 2);
 | |
|     tft.printf("x: %i     ", x);
 | |
|     tft.setCursor(5, 20, 2);
 | |
|     tft.printf("y: %i    ", y);
 | |
| 
 | |
|     tft.drawPixel(x, y, color);
 | |
|     color += 155;
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 |