Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Adafruit_MPR121.h@2:d9745be6c253, 2022-08-04 (annotated)
- Committer:
- fionalin
- Date:
- Thu Aug 04 15:14:29 2022 -0400
- Revision:
- 2:d9745be6c253
hehe forgot to commit
Who changed what in which revision?
User | Revision | Line number | New 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 |