serial_debugger/hardware/_controller/src/guislice/GUIslice_th_XPT2046.h

53 lines
1.9 KiB
C++

// touch handler (TH) for XPT2046 using the arduino built in driver <XPT2046_touch.h>
// The touch handler performs the adaption in between the GUIslice framework and any touch driver
// The touch handler used is specified in the main program by calling gslc_InitTouchHandler(&touchHandler);
/// \file GUIslice_th_XPT2046.h
#ifndef _GUISLICE_TH_XPT2046_H_
#define _GUISLICE_TH_XPT2046_H_
#include <Arduino.h>
#include <GUIslice_th.h>
#include <XPT2046_touch.h>
class TouchHandler_XPT2046: public TouchHandler {
public:
// parameters:
// spi object to be used
// chip select pin for spi
TouchHandler_XPT2046(SPIClass &spi, uint8_t spi_cs_pin) : spi(spi), touchDriver(XPT2046_touch(spi_cs_pin, spi)) {
//empirical calibration values, can be updated by calling setCalibration in the user program
setCalibration(398,3877,280,3805);
//swapping and flipping to adopt to default GUIslice orientation
setSwapFlip(true,false,true);
}
//begin is called by gslc_InitTouchHandler
void begin(void) {
//init the touch driver
touchDriver.begin();
}
//this method returns the scaled point provided by the touch driver
THPoint getPoint(void) {
//get the coordinates from the touch driver
TS_Point pt = touchDriver.getPoint();
//Serial.print("pt= ");Serial.print(pt.x);Serial.print(",");Serial.print(pt.y);Serial.print(",");Serial.println(pt.z);
//perform scaling (this includes swapping and flipping)
THPoint ps = scale( THPoint(pt.x,pt.y,pt.z) );
//Serial.print("ps= ");Serial.print(ps.x);Serial.print(",");Serial.print(ps.y);Serial.print(",");Serial.println(ps.z);
return ps;
};
SPIClass spi;
XPT2046_touch touchDriver;
};
#endif