acidportal

- 😈 Worlds smallest Evil Portal on a LilyGo T-QT
git clone git://git.acid.vegas/acidportal.git
Log | Files | Refs | Archive | README | LICENSE

Touch.h (2209B)

      1  // Coded by Bodmer 10/2/18, see license in root directory.
      2  // This is part of the TFT_eSPI class and is associated with the Touch Screen handlers
      3 
      4  public:
      5            // Get raw x,y ADC values from touch controller
      6   uint8_t  getTouchRaw(uint16_t *x, uint16_t *y);
      7            // Get raw z (i.e. pressure) ADC value from touch controller
      8   uint16_t getTouchRawZ(void);
      9            // Convert raw x,y values to calibrated and correctly rotated screen coordinates
     10   void     convertRawXY(uint16_t *x, uint16_t *y);
     11            // Get the screen touch coordinates, returns true if screen has been touched
     12            // if the touch coordinates are off screen then x and y are not updated
     13            // The returned value can be treated as a bool type, false or 0 means touch not detected
     14            // In future the function may return an 8 "quality" (jitter) value.
     15   uint8_t  getTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600);
     16 
     17            // Run screen calibration and test, report calibration values to the serial port
     18   void     calibrateTouch(uint16_t *data, uint32_t color_fg, uint32_t color_bg, uint8_t size);
     19            // Set the screen calibration values
     20   void     setTouch(uint16_t *data);
     21 
     22  private:
     23            // Legacy support only - deprecated TODO: delete
     24   void     spi_begin_touch();
     25   void     spi_end_touch();
     26 
     27            // Handlers for the touch controller bus settings
     28   inline void begin_touch_read_write() __attribute__((always_inline));
     29   inline void end_touch_read_write()   __attribute__((always_inline));
     30 
     31            // Private function to validate a touch, allow settle time and reduce spurious coordinates
     32   uint8_t  validTouch(uint16_t *x, uint16_t *y, uint16_t threshold = 600);
     33 
     34            // Initialise with example calibration values so processor does not crash if setTouch() not called in setup()
     35   uint16_t touchCalibration_x0 = 300, touchCalibration_x1 = 3600, touchCalibration_y0 = 300, touchCalibration_y1 = 3600;
     36   uint8_t  touchCalibration_rotate = 1, touchCalibration_invert_x = 2, touchCalibration_invert_y = 0;
     37 
     38   uint32_t _pressTime;        // Press and hold time-out
     39   uint16_t _pressX, _pressY;  // For future use (last sampled calibrated coordinates)