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
FT6206.h@0:d146e986a07f, 2015-03-23 (annotated)
- Committer:
- JackB
- Date:
- Mon Mar 23 19:49:52 2015 +0000
- Revision:
- 0:d146e986a07f
- Child:
- 4:b9ff3c020e7f
FT6206 for Adafruit 2.8" capacitive touch lcd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JackB | 0:d146e986a07f | 1 | /*************************************************** |
JackB | 0:d146e986a07f | 2 | This is a library for the Adafruit Capacitive Touch Screens |
JackB | 0:d146e986a07f | 3 | |
JackB | 0:d146e986a07f | 4 | ----> http://www.adafruit.com/products/1947 |
JackB | 0:d146e986a07f | 5 | |
JackB | 0:d146e986a07f | 6 | Check out the links above for our tutorials and wiring diagrams |
JackB | 0:d146e986a07f | 7 | This chipset uses I2C to communicate |
JackB | 0:d146e986a07f | 8 | |
JackB | 0:d146e986a07f | 9 | Adafruit invests time and resources providing this open source code, |
JackB | 0:d146e986a07f | 10 | please support Adafruit and open-source hardware by purchasing |
JackB | 0:d146e986a07f | 11 | products from Adafruit! |
JackB | 0:d146e986a07f | 12 | |
JackB | 0:d146e986a07f | 13 | Written by Limor Fried/Ladyada for Adafruit Industries. |
JackB | 0:d146e986a07f | 14 | MIT license, all text above must be included in any redistribution |
JackB | 0:d146e986a07f | 15 | ****************************************************/ |
JackB | 0:d146e986a07f | 16 | |
JackB | 0:d146e986a07f | 17 | |
JackB | 0:d146e986a07f | 18 | #ifndef FT6206_H |
JackB | 0:d146e986a07f | 19 | #define FT6206_H |
JackB | 0:d146e986a07f | 20 | |
JackB | 0:d146e986a07f | 21 | #include "mbed.h" |
JackB | 0:d146e986a07f | 22 | |
JackB | 0:d146e986a07f | 23 | #define FT6206_I2C_FREQUENCY 400000 |
JackB | 0:d146e986a07f | 24 | |
JackB | 0:d146e986a07f | 25 | #define FT6206_ADDR 0x38 |
JackB | 0:d146e986a07f | 26 | #define FT6206_G_FT5201ID 0xA8 |
JackB | 0:d146e986a07f | 27 | #define FT6206_REG_NUMTOUCHES 0x02 |
JackB | 0:d146e986a07f | 28 | |
JackB | 0:d146e986a07f | 29 | #define FT6206_NUM_X 0x33 |
JackB | 0:d146e986a07f | 30 | #define FT6206_NUM_Y 0x34 |
JackB | 0:d146e986a07f | 31 | |
JackB | 0:d146e986a07f | 32 | #define FT6206_REG_MODE 0x00 |
JackB | 0:d146e986a07f | 33 | #define FT6206_REG_CALIBRATE 0x02 |
JackB | 0:d146e986a07f | 34 | #define FT6206_REG_WORKMODE 0x00 |
JackB | 0:d146e986a07f | 35 | #define FT6206_REG_FACTORYMODE 0x40 |
JackB | 0:d146e986a07f | 36 | #define FT6206_REG_THRESHHOLD 0x80 |
JackB | 0:d146e986a07f | 37 | #define FT6206_REG_POINTRATE 0x88 |
JackB | 0:d146e986a07f | 38 | #define FT6206_REG_FIRMVERS 0xA6 |
JackB | 0:d146e986a07f | 39 | #define FT6206_REG_CHIPID 0xA3 |
JackB | 0:d146e986a07f | 40 | #define FT6206_REG_VENDID 0xA8 |
JackB | 0:d146e986a07f | 41 | |
JackB | 0:d146e986a07f | 42 | // calibrated for Adafruit 2.8" ctp screen |
JackB | 0:d146e986a07f | 43 | #define FT6206_DEFAULT_THRESSHOLD 0x80 |
JackB | 0:d146e986a07f | 44 | |
JackB | 0:d146e986a07f | 45 | #define ILI9341_TFTWIDTH 320 |
JackB | 0:d146e986a07f | 46 | #define ILI9341_TFTHEIGHT 240 |
JackB | 0:d146e986a07f | 47 | |
JackB | 0:d146e986a07f | 48 | class TS_Point { |
JackB | 0:d146e986a07f | 49 | public: |
JackB | 0:d146e986a07f | 50 | TS_Point(void); |
JackB | 0:d146e986a07f | 51 | TS_Point(int16_t x, int16_t y, int16_t z); |
JackB | 0:d146e986a07f | 52 | |
JackB | 0:d146e986a07f | 53 | bool operator==(TS_Point); |
JackB | 0:d146e986a07f | 54 | bool operator!=(TS_Point); |
JackB | 0:d146e986a07f | 55 | |
JackB | 0:d146e986a07f | 56 | int16_t x, y, z; |
JackB | 0:d146e986a07f | 57 | }; |
JackB | 0:d146e986a07f | 58 | |
JackB | 0:d146e986a07f | 59 | class FT6206 { |
JackB | 0:d146e986a07f | 60 | public: |
JackB | 0:d146e986a07f | 61 | |
JackB | 0:d146e986a07f | 62 | FT6206(PinName sda, PinName scl, PinName interrupt); |
JackB | 0:d146e986a07f | 63 | |
JackB | 0:d146e986a07f | 64 | bool begin(uint8_t thresh = FT6206_DEFAULT_THRESSHOLD); |
JackB | 0:d146e986a07f | 65 | |
JackB | 0:d146e986a07f | 66 | void writeRegister8(char reg, char val); |
JackB | 0:d146e986a07f | 67 | char readRegister8(char reg); |
JackB | 0:d146e986a07f | 68 | char dataReceived(void); |
JackB | 0:d146e986a07f | 69 | |
JackB | 0:d146e986a07f | 70 | void readData(uint16_t *x, uint16_t *y); |
JackB | 0:d146e986a07f | 71 | |
JackB | 0:d146e986a07f | 72 | bool touched(void); |
JackB | 0:d146e986a07f | 73 | TS_Point getPoint(void); |
JackB | 0:d146e986a07f | 74 | |
JackB | 0:d146e986a07f | 75 | private: |
JackB | 0:d146e986a07f | 76 | DigitalIn m_interrupt; |
JackB | 0:d146e986a07f | 77 | I2C m_i2c; |
JackB | 0:d146e986a07f | 78 | int m_addr; |
JackB | 0:d146e986a07f | 79 | char data[2]; |
JackB | 0:d146e986a07f | 80 | |
JackB | 0:d146e986a07f | 81 | uint8_t touches; |
JackB | 0:d146e986a07f | 82 | uint16_t touchX[2], touchY[2], touchID[2]; |
JackB | 0:d146e986a07f | 83 | |
JackB | 0:d146e986a07f | 84 | }; |
JackB | 0:d146e986a07f | 85 | |
JackB | 0:d146e986a07f | 86 | #endif |
JackB | 0:d146e986a07f | 87 |