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

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?

UserRevisionLine numberNew 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