Files
Maison/PacoMouseCYD/Platformio/include/XPT2046.h
2026-02-11 17:16:06 +01:00

63 lines
1.3 KiB
C++

/* PacoMouseCYD throttle -- F. Cañada 2025-2026 -- https://usuaris.tinet.cat/fmco/
Simple XPT2046 SPI/Bitbang interface for PacoMouseCYD
*/
#ifndef XPT2046_TS_h
#define XPT2046_TS_h
#include "Arduino.h"
#include "config.h"
#ifdef USE_XPT2046_SPI
#include <SPI.h>
#endif
typedef struct {
uint16_t x;
uint16_t y;
uint16_t z;
} TSPoint;
struct TouchCalibration {
uint16_t xMin;
uint16_t xMax;
uint16_t yMin;
uint16_t yMax;
uint16_t rotation;
};
class XPT2046_TS {
public:
XPT2046_TS(uint8_t mosiPin, uint8_t misoPin, uint8_t clkPin, uint8_t csPin);
void begin(uint16_t width = 240, uint16_t height = 320);
bool touched();
TSPoint getTouch();
void setRotation(uint8_t n);
void setCalibration(uint16_t xMin, uint16_t xMax, uint16_t yMin, uint16_t yMax);
TouchCalibration getCalibration();
void readData(uint16_t *x, uint16_t *y, uint16_t *z);
private:
uint8_t _mosiPin;
uint8_t _misoPin;
uint8_t _clkPin;
uint8_t _csPin;
uint8_t _irqPin;
uint16_t _width;
uint16_t _height;
uint16_t _xraw;
uint16_t _yraw;
uint16_t _zraw;
uint32_t _msraw;
TouchCalibration cal;
#ifdef USE_XPT2046_SPI
SPIClass *hspi = NULL;
#endif
#ifdef USE_XPT2046_BITBANG
uint16_t readSPI(byte command);
#endif
void update();
};
#endif