Function Prototype:
uint_fast8_t getTouch(touch_point_t *tp, uint_fast8_t count = 1)
Description:
Parameters:
Return Value:
Function Prototype:
uint_fast8_t getTouchRaw(touch_point_t *tp, uint_fast8_t count = 1)
Description:
Parameters:
Return Value:
Function Prototype:
void convertRawXY(touch_point_t *tp, uint_fast8_t count = 1)
Description:
Parameters:
Return Value:
Function Prototype:
void calibrateTouch(uint16_t* parameters, const T &color_fg, const T &color_bg, uint8_t size = 10)
Description
Parameters:
Return Value:
Function Prototype:
void setTouchCalibrate(uint16_t *parameters)
Description:
Parameters:
Return Value:
Example Program:
#include <Arduino.h>
#include <Preferences.h>
#include <M5GFX.h>
M5GFX display;
uint16_t w;
uint16_t h;
const char* NAMESPACE = "m5_data";
const char* DATA_KEY = "user_data";
struct Calibration {
bool calibration_flag = false;
uint16_t touch_point[8];//4 point, each has (X,Y)
};
Calibration Cal;
void setup() {
display.begin();
display.setRotation(3);
if(display.isEPD())
{
display.setColorDepth(8);//The ink screen product supports a maximum bit depth of 8 bits.
display.setEpdMode(epd_fastest);
}
else
{
display.setColorDepth(16);
}
display.clear(TFT_WHITE);
display.setFont(&fonts::FreeMonoBoldOblique12pt7b);
display.setTextColor(TFT_BLACK);
display.setTextSize(1);
display.setCursor(0, 0);
// Initiate preferences
Preferences preferences;
// Open the namespace (create it if it does not exist)
preferences.begin(NAMESPACE, false); // false -- read-write mode
size_t readBytes = preferences.getBytes(DATA_KEY, &Cal, sizeof(Calibration));
// Check whether the data has been successfully read
if (readBytes == sizeof(Calibration)) {
if(Cal.calibration_flag){
display.setTouchCalibrate(Cal.touch_point);
for (int i=0; i<8; i++) {
display.printf("%d ", Cal.touch_point[i]);
}
// display.setTextDatum(top_center);
display.println("Read calibration setting data successfully!");
}
}
else {
// Initiate default
display.calibrateTouch(Cal.touch_point, BLACK, YELLOW);
display.clear();
display.println("Set calibration data successfully, show as belows:\n");
for (int i=0; i<8; i++) {
display.printf("%d ", Cal.touch_point[i]);
}
display.println();
Cal.calibration_flag = true;
// Save calibration data
size_t writtenBytes = preferences.putBytes(DATA_KEY, &Cal, sizeof(Calibration));
if (writtenBytes == sizeof(Calibration)) {
display.println("\nCalibration Data Save Successfully");
} else {
display.println("\nCalibration Data Save Failed");
}
// Close namespace
preferences.end();
}
}
void loop() {
}