Fiona Lin / Mbed OS cap_sense
Committer:
fionalin
Date:
Thu Aug 04 15:14:29 2022 -0400
Revision:
2:d9745be6c253
hehe forgot to commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fionalin 2:d9745be6c253 1 /*!
fionalin 2:d9745be6c253 2 * @file Adafruit_MPR121.h
fionalin 2:d9745be6c253 3 *
fionalin 2:d9745be6c253 4 * This is a library for the MPR121 12-Channel Capacitive Sensor
fionalin 2:d9745be6c253 5 *
fionalin 2:d9745be6c253 6 * Designed specifically to work with the MPR121 board.
fionalin 2:d9745be6c253 7 *
fionalin 2:d9745be6c253 8 * Pick one up today in the adafruit shop!
fionalin 2:d9745be6c253 9 * ------> https://www.adafruit.com/product/1982
fionalin 2:d9745be6c253 10 *
fionalin 2:d9745be6c253 11 * These sensors use I2C to communicate, 2+ pins are required to interface
fionalin 2:d9745be6c253 12 *
fionalin 2:d9745be6c253 13 * Adafruit invests time and resources providing this open source code,
fionalin 2:d9745be6c253 14 * please support Adafruit andopen-source hardware by purchasing products
fionalin 2:d9745be6c253 15 * from Adafruit!
fionalin 2:d9745be6c253 16 *
fionalin 2:d9745be6c253 17 * Limor Fried/Ladyada (Adafruit Industries).
fionalin 2:d9745be6c253 18 *
fionalin 2:d9745be6c253 19 * BSD license, all text above must be included in any redistribution
fionalin 2:d9745be6c253 20 */
fionalin 2:d9745be6c253 21
fionalin 2:d9745be6c253 22 #ifndef ADAFRUIT_MPR121_H
fionalin 2:d9745be6c253 23 #define ADAFRUIT_MPR121_H
fionalin 2:d9745be6c253 24
fionalin 2:d9745be6c253 25 #include <cstdint>
fionalin 2:d9745be6c253 26 #include <mbed.h>
fionalin 2:d9745be6c253 27
fionalin 2:d9745be6c253 28 // The default I2C address
fionalin 2:d9745be6c253 29 #define MPR121_I2CADDR_DEFAULT 0x5A ///< default I2C address
fionalin 2:d9745be6c253 30 #define MPR121_TOUCH_THRESHOLD_DEFAULT 12 ///< default touch threshold value
fionalin 2:d9745be6c253 31 #define MPR121_RELEASE_THRESHOLD_DEFAULT 6 ///< default relese threshold value
fionalin 2:d9745be6c253 32
fionalin 2:d9745be6c253 33 /*!
fionalin 2:d9745be6c253 34 * Device register map
fionalin 2:d9745be6c253 35 */
fionalin 2:d9745be6c253 36 enum {
fionalin 2:d9745be6c253 37 MPR121_TOUCHSTATUS_L = 0x00,
fionalin 2:d9745be6c253 38 MPR121_TOUCHSTATUS_H = 0x01,
fionalin 2:d9745be6c253 39 MPR121_FILTDATA_0L = 0x04,
fionalin 2:d9745be6c253 40 MPR121_FILTDATA_0H = 0x05,
fionalin 2:d9745be6c253 41 MPR121_BASELINE_0 = 0x1E,
fionalin 2:d9745be6c253 42 MPR121_MHDR = 0x2B,
fionalin 2:d9745be6c253 43 MPR121_NHDR = 0x2C,
fionalin 2:d9745be6c253 44 MPR121_NCLR = 0x2D,
fionalin 2:d9745be6c253 45 MPR121_FDLR = 0x2E,
fionalin 2:d9745be6c253 46 MPR121_MHDF = 0x2F,
fionalin 2:d9745be6c253 47 MPR121_NHDF = 0x30,
fionalin 2:d9745be6c253 48 MPR121_NCLF = 0x31,
fionalin 2:d9745be6c253 49 MPR121_FDLF = 0x32,
fionalin 2:d9745be6c253 50 MPR121_NHDT = 0x33,
fionalin 2:d9745be6c253 51 MPR121_NCLT = 0x34,
fionalin 2:d9745be6c253 52 MPR121_FDLT = 0x35,
fionalin 2:d9745be6c253 53
fionalin 2:d9745be6c253 54 MPR121_TOUCHTH_0 = 0x41,
fionalin 2:d9745be6c253 55 MPR121_RELEASETH_0 = 0x42,
fionalin 2:d9745be6c253 56 MPR121_DEBOUNCE = 0x5B,
fionalin 2:d9745be6c253 57 MPR121_CONFIG1 = 0x5C,
fionalin 2:d9745be6c253 58 MPR121_CONFIG2 = 0x5D,
fionalin 2:d9745be6c253 59 MPR121_CHARGECURR_0 = 0x5F,
fionalin 2:d9745be6c253 60 MPR121_CHARGETIME_1 = 0x6C,
fionalin 2:d9745be6c253 61 MPR121_ECR = 0x5E,
fionalin 2:d9745be6c253 62 MPR121_AUTOCONFIG0 = 0x7B,
fionalin 2:d9745be6c253 63 MPR121_AUTOCONFIG1 = 0x7C,
fionalin 2:d9745be6c253 64 MPR121_UPLIMIT = 0x7D,
fionalin 2:d9745be6c253 65 MPR121_LOWLIMIT = 0x7E,
fionalin 2:d9745be6c253 66 MPR121_TARGETLIMIT = 0x7F,
fionalin 2:d9745be6c253 67
fionalin 2:d9745be6c253 68 MPR121_GPIODIR = 0x76,
fionalin 2:d9745be6c253 69 MPR121_GPIOEN = 0x77,
fionalin 2:d9745be6c253 70 MPR121_GPIOSET = 0x78,
fionalin 2:d9745be6c253 71 MPR121_GPIOCLR = 0x79,
fionalin 2:d9745be6c253 72 MPR121_GPIOTOGGLE = 0x7A,
fionalin 2:d9745be6c253 73
fionalin 2:d9745be6c253 74 MPR121_SOFTRESET = 0x80,
fionalin 2:d9745be6c253 75 };
fionalin 2:d9745be6c253 76
fionalin 2:d9745be6c253 77 //.. thru to 0x1C/0x1D
fionalin 2:d9745be6c253 78
fionalin 2:d9745be6c253 79 /*!
fionalin 2:d9745be6c253 80 * @brief Class that stores state and functions for interacting with MPR121
fionalin 2:d9745be6c253 81 * proximity capacitive touch sensor controller.
fionalin 2:d9745be6c253 82 */
fionalin 2:d9745be6c253 83 class Adafruit_MPR121 {
fionalin 2:d9745be6c253 84 public:
fionalin 2:d9745be6c253 85 // Hardware I2C
fionalin 2:d9745be6c253 86 Adafruit_MPR121();
fionalin 2:d9745be6c253 87
fionalin 2:d9745be6c253 88 bool begin(uint8_t i2c_addr = MPR121_I2CADDR_DEFAULT,
fionalin 2:d9745be6c253 89 PinName i2c_sda = I2C_SDA,
fionalin 2:d9745be6c253 90 PinName i2c_scl = I2C_SCL,
fionalin 2:d9745be6c253 91 uint8_t touchThreshold = MPR121_TOUCH_THRESHOLD_DEFAULT,
fionalin 2:d9745be6c253 92 uint8_t releaseThreshold = MPR121_RELEASE_THRESHOLD_DEFAULT);
fionalin 2:d9745be6c253 93
fionalin 2:d9745be6c253 94 uint16_t filteredData(uint8_t t);
fionalin 2:d9745be6c253 95 uint16_t baselineData(uint8_t t);
fionalin 2:d9745be6c253 96
fionalin 2:d9745be6c253 97 uint8_t readRegister8(uint8_t reg);
fionalin 2:d9745be6c253 98 uint16_t readRegister16(uint8_t reg);
fionalin 2:d9745be6c253 99 void writeRegister(uint8_t reg, uint8_t value);
fionalin 2:d9745be6c253 100 uint16_t touched(void);
fionalin 2:d9745be6c253 101 // Add deprecated attribute so that the compiler shows a warning
fionalin 2:d9745be6c253 102 void setThreshholds(uint8_t touch, uint8_t release)
fionalin 2:d9745be6c253 103 __attribute__((deprecated));
fionalin 2:d9745be6c253 104 void setThresholds(uint8_t touch, uint8_t release);
fionalin 2:d9745be6c253 105
fionalin 2:d9745be6c253 106 private:
fionalin 2:d9745be6c253 107 uint8_t i2c_addr;
fionalin 2:d9745be6c253 108 mbed::I2C* i2c_dev = NULL;
fionalin 2:d9745be6c253 109 };
fionalin 2:d9745be6c253 110
fionalin 2:d9745be6c253 111 #endif