43template <
int pinCS,
typename Spi = DefaultSpi,
typename Gpio = DefaultGpio>
48 virtual void initTouch()
override { device_.init(); }
54 typename Spi::Device<TouchXpt2046SpiSettings> device_;
57 unsigned long latest_confirmed_pressed_timestamp_;
62template <
int pinCS,
typename Spi,
typename Gpio>
65 .touch_intertia_ms = 30,
66 .smoothing_factor = 0.8}),
69 latest_confirmed_pressed_timestamp_(0) {
70 Gpio::setOutput(
pinCS);
74template <
typename Spi>
76 spi.transfer(roo::byte{0xd3});
77 *x = spi.transfer16(0xd3) >> 3;
78 *x = spi.transfer16(0xd3) >> 3;
79 *x = spi.transfer16(0x93) >> 3;
83 *y = spi.transfer16(0x93) >> 3;
84 *y = spi.transfer16(0x93) >> 3;
85 *y = spi.transfer16(0x00) >> 3;
88template <
typename Spi>
91 spi.transfer(roo::byte{0xb1});
92 tz += spi.transfer16(0xc1) >> 3;
93 tz -= spi.transfer16(0) >> 3;
99template <
typename Spi>
132template <
int pinCS,
typename Spi,
typename Gpio>
152 for (
int i = 0;
i < 5; ++
i) {
184 return pressed_ ? 1 : 0;
int readTouch(TouchPoint *points) override
TouchXpt2046(Spi spi=Spi())
virtual void initTouch() override
Initialize the touch controller.
Defines 140 opaque HTML named colors.
uint16_t get_raw_touch_z(Spi &spi)
static const int kMaxConversionAttempts
SpiSettings< kSpiTouchFrequency, kSpiMsbFirst, kSpiMode0 > TouchXpt2046SpiSettings
static const int kMinSettledConversions
static const int kMaxRawSettlingDistance
static const int kSpiTouchFrequency
void get_raw_touch_xy(Spi &spi, uint16_t *x, uint16_t *y)
ConversionResult single_conversion(Spi &spi, uint16_t z_threshold, uint16_t *x, uint16_t *y, uint16_t *z)
static const int kInitialTouchZThreshold
A single touch point returned by a touch controller.