FT6206 Library for Adafruit 2.8" TFT Touch Shield for Arduino w/Capacitive Touch
Dependents: ArchPro_TFT ATT_AWS_IoT_demo_v06 ArchPro_TFT TermProject
Diff: FT6206.h
- Revision:
- 0:d146e986a07f
- Child:
- 4:b9ff3c020e7f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FT6206.h Mon Mar 23 19:49:52 2015 +0000 @@ -0,0 +1,87 @@ +/*************************************************** + This is a library for the Adafruit Capacitive Touch Screens + + ----> http://www.adafruit.com/products/1947 + + Check out the links above for our tutorials and wiring diagrams + This chipset uses I2C to communicate + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + MIT license, all text above must be included in any redistribution + ****************************************************/ + + +#ifndef FT6206_H +#define FT6206_H + +#include "mbed.h" + +#define FT6206_I2C_FREQUENCY 400000 + +#define FT6206_ADDR 0x38 +#define FT6206_G_FT5201ID 0xA8 +#define FT6206_REG_NUMTOUCHES 0x02 + +#define FT6206_NUM_X 0x33 +#define FT6206_NUM_Y 0x34 + +#define FT6206_REG_MODE 0x00 +#define FT6206_REG_CALIBRATE 0x02 +#define FT6206_REG_WORKMODE 0x00 +#define FT6206_REG_FACTORYMODE 0x40 +#define FT6206_REG_THRESHHOLD 0x80 +#define FT6206_REG_POINTRATE 0x88 +#define FT6206_REG_FIRMVERS 0xA6 +#define FT6206_REG_CHIPID 0xA3 +#define FT6206_REG_VENDID 0xA8 + +// calibrated for Adafruit 2.8" ctp screen +#define FT6206_DEFAULT_THRESSHOLD 0x80 + +#define ILI9341_TFTWIDTH 320 +#define ILI9341_TFTHEIGHT 240 + +class TS_Point { + public: + TS_Point(void); + TS_Point(int16_t x, int16_t y, int16_t z); + + bool operator==(TS_Point); + bool operator!=(TS_Point); + + int16_t x, y, z; +}; + +class FT6206 { + public: + + FT6206(PinName sda, PinName scl, PinName interrupt); + + bool begin(uint8_t thresh = FT6206_DEFAULT_THRESSHOLD); + + void writeRegister8(char reg, char val); + char readRegister8(char reg); + char dataReceived(void); + + void readData(uint16_t *x, uint16_t *y); + + bool touched(void); + TS_Point getPoint(void); + + private: + DigitalIn m_interrupt; + I2C m_i2c; + int m_addr; + char data[2]; + + uint8_t touches; + uint16_t touchX[2], touchY[2], touchID[2]; + +}; + +#endif +