|
- /***************************************************
- This is a library for the Adafruit STMPE610 Resistive
- touch screen controller breakout
- ----> http://www.adafruit.com/products/1571
-
- Check out the links above for our tutorials and wiring diagrams
- These breakouts use SPI or 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 _ADAFRUIT_STMPE610H_
- #define _ADAFRUIT_STMPE610H_
-
- #if ARDUINO >= 100
- #include "Arduino.h"
- #else
- #include "WProgram.h"
- #endif
-
- #include <Wire.h>
-
-
- #define STMPE_ADDR 0x41
-
- #define STMPE_SYS_CTRL1 0x03
- #define STMPE_SYS_CTRL1_RESET 0x02
- #define STMPE_SYS_CTRL2 0x04
-
- #define STMPE_TSC_CTRL 0x40
- #define STMPE_TSC_CTRL_EN 0x01
- #define STMPE_TSC_CTRL_XYZ 0x00
- #define STMPE_TSC_CTRL_XY 0x02
-
- #define STMPE_INT_CTRL 0x09
- #define STMPE_INT_CTRL_POL_HIGH 0x04
- #define STMPE_INT_CTRL_POL_LOW 0x00
- #define STMPE_INT_CTRL_EDGE 0x02
- #define STMPE_INT_CTRL_LEVEL 0x00
- #define STMPE_INT_CTRL_ENABLE 0x01
- #define STMPE_INT_CTRL_DISABLE 0x00
-
-
-
- #define STMPE_INT_EN 0x0A
- #define STMPE_INT_EN_TOUCHDET 0x01
- #define STMPE_INT_EN_FIFOTH 0x02
- #define STMPE_INT_EN_FIFOOF 0x04
- #define STMPE_INT_EN_FIFOFULL 0x08
- #define STMPE_INT_EN_FIFOEMPTY 0x10
- #define STMPE_INT_EN_ADC 0x40
- #define STMPE_INT_EN_GPIO 0x80
-
- #define STMPE_INT_STA 0x0B
- #define STMPE_INT_STA_TOUCHDET 0x01
-
- #define STMPE_ADC_CTRL1 0x20
- #define STMPE_ADC_CTRL1_12BIT 0x08
- #define STMPE_ADC_CTRL1_10BIT 0x00
-
- #define STMPE_ADC_CTRL2 0x21
- #define STMPE_ADC_CTRL2_1_625MHZ 0x00
- #define STMPE_ADC_CTRL2_3_25MHZ 0x01
- #define STMPE_ADC_CTRL2_6_5MHZ 0x02
-
- #define STMPE_TSC_CFG 0x41
- #define STMPE_TSC_CFG_1SAMPLE 0x00
- #define STMPE_TSC_CFG_2SAMPLE 0x40
- #define STMPE_TSC_CFG_4SAMPLE 0x80
- #define STMPE_TSC_CFG_8SAMPLE 0xC0
- #define STMPE_TSC_CFG_DELAY_10US 0x00
- #define STMPE_TSC_CFG_DELAY_50US 0x08
- #define STMPE_TSC_CFG_DELAY_100US 0x10
- #define STMPE_TSC_CFG_DELAY_500US 0x18
- #define STMPE_TSC_CFG_DELAY_1MS 0x20
- #define STMPE_TSC_CFG_DELAY_5MS 0x28
- #define STMPE_TSC_CFG_DELAY_10MS 0x30
- #define STMPE_TSC_CFG_DELAY_50MS 0x38
- #define STMPE_TSC_CFG_SETTLE_10US 0x00
- #define STMPE_TSC_CFG_SETTLE_100US 0x01
- #define STMPE_TSC_CFG_SETTLE_500US 0x02
- #define STMPE_TSC_CFG_SETTLE_1MS 0x03
- #define STMPE_TSC_CFG_SETTLE_5MS 0x04
- #define STMPE_TSC_CFG_SETTLE_10MS 0x05
- #define STMPE_TSC_CFG_SETTLE_50MS 0x06
- #define STMPE_TSC_CFG_SETTLE_100MS 0x07
-
- #define STMPE_FIFO_TH 0x4A
-
- #define STMPE_FIFO_SIZE 0x4C
-
- #define STMPE_FIFO_STA 0x4B
- #define STMPE_FIFO_STA_RESET 0x01
- #define STMPE_FIFO_STA_OFLOW 0x80
- #define STMPE_FIFO_STA_FULL 0x40
- #define STMPE_FIFO_STA_EMPTY 0x20
- #define STMPE_FIFO_STA_THTRIG 0x10
-
- #define STMPE_TSC_I_DRIVE 0x58
- #define STMPE_TSC_I_DRIVE_20MA 0x00
- #define STMPE_TSC_I_DRIVE_50MA 0x01
-
- #define STMPE_TSC_DATA_X 0x4D
- #define STMPE_TSC_DATA_Y 0x4F
- #define STMPE_TSC_FRACTION_Z 0x56
-
- #define STMPE_GPIO_SET_PIN 0x10
- #define STMPE_GPIO_CLR_PIN 0x11
- #define STMPE_GPIO_DIR 0x13
- #define STMPE_GPIO_ALT_FUNCT 0x17
-
-
- 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 Adafruit_STMPE610{
- public:
- Adafruit_STMPE610(uint8_t cspin, uint8_t mosipin, uint8_t misopin, uint8_t clkpin);
- Adafruit_STMPE610(uint8_t cs);
- Adafruit_STMPE610(void);
- boolean begin(uint8_t i2caddr = STMPE_ADDR);
-
- void writeRegister8(uint8_t reg, uint8_t val);
- uint16_t readRegister16(uint8_t reg);
- uint8_t readRegister8(uint8_t reg);
- void readData(uint16_t *x, uint16_t *y, uint8_t *z);
- uint16_t getVersion();
- boolean touched(void);
- boolean bufferEmpty(void);
- uint8_t bufferSize(void);
- TS_Point getPoint(void);
-
- private:
- uint8_t spiIn();
- void spiOut(uint8_t x);
-
- int8_t _CS, _MOSI, _MISO, _CLK;
- uint8_t _i2caddr;
-
- int m_spiMode;
- };
-
- #endif
|