![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
t
mpr121.h
- Committer:
- abuckton
- Date:
- 2011-02-28
- Revision:
- 0:2e5b82508aea
- Child:
- 1:d1837531c318
File content as of revision 0:2e5b82508aea:
/* MPR121.h April 8, 2010 by: Jim Lindblom Ported to mbed and modified by A.Buckton, 16 Feb 2011 */ #ifndef MPR121_H #define MPR121_H //using namespace std; class Mpr121 { public: // i2c Addresses, bit-shifted enum Address { ADD_VSS = 0xb4,// ADD->VSS = 0x5a <-wiring on Sparkfun board ADD_VDD = 0xb6,// ADD->VDD = 0x5b ADD_SCL = 0xb8,// ADD->SDA = 0x5c ADD_SDA = 0xba // ADD->SCL = 0x5d }; // Real initialiser, takes the i2c address of the device. Mpr121(I2C *i2c, Address i2cAddress); bool getProximityMode(); void setProximityMode(bool mode); int readTouchData(); unsigned char read(int key); int write(int address, unsigned char value); int writeMany(int start, unsigned char* dataSet, int length); void setElectrodeThreshold(int electrodeId, unsigned char touchThreshold, unsigned char releaseThreshold); protected: // Configures the MPR with standard settings. This is permitted to be overwritten by sub-classes. void configureSettings(); private: // The I2C bus instance. I2C *i2c; // i2c address of this mpr121 Address address; }; // MPR121 Register Defines #define MHD_R 0x2B #define NHD_R 0x2C #define NCL_R 0x2D #define FDL_R 0x2E #define MHD_F 0x2F #define NHD_F 0x30 #define NCL_F 0x31 #define FDL_F 0x32 #define NHDT 0x33 #define NCLT 0x34 #define FDLT 0x35 // Proximity sensing controls #define MHDPROXR 0x36 #define NHDPROXR 0x37 #define NCLPROXR 0x38 #define FDLPROXR 0x39 #define MHDPROXF 0x3A #define NHDPROXF 0x3B #define NCLPROXF 0x3C #define FDLPROXF 0x3D #define NHDPROXT 0x3E #define NCLPROXT 0x3F #define FDLPROXT 0x40 // Electrode Touch/Release thresholds #define ELE0_T 0x41 #define ELE0_R 0x42 #define ELE1_T 0x43 #define ELE1_R 0x44 #define ELE2_T 0x45 #define ELE2_R 0x46 #define ELE3_T 0x47 #define ELE3_R 0x48 #define ELE4_T 0x49 #define ELE4_R 0x4A #define ELE5_T 0x4B #define ELE5_R 0x4C #define ELE6_T 0x4D #define ELE6_R 0x4E #define ELE7_T 0x4F #define ELE7_R 0x50 #define ELE8_T 0x51 #define ELE8_R 0x52 #define ELE9_T 0x53 #define ELE9_R 0x54 #define ELE10_T 0x55 #define ELE10_R 0x56 #define ELE11_T 0x57 #define ELE11_R 0x58 // Proximity Touch/Release thresholds #define EPROXTTH 0x59 #define EPROXRTH 0x5A // Debounce configuration #define DEB_CFG 0x5B // AFE- Analogue Front End configuration #define AFE_CFG 0x5C // Filter configuration #define FIL_CFG 0x5D // Electrode configuration - transistions to "active mode" #define ELE_CFG 0x5E #define GPIO_CTRL0 0x73 #define GPIO_CTRL1 0x74 #define GPIO_DATA 0x75 #define GPIO_DIR 0x76 #define GPIO_EN 0x77 #define GPIO_SET 0x78 #define GPIO_CLEAR 0x79 #define GPIO_TOGGLE 0x7A // Auto configration registers #define AUTO_CFG_0 0x7B #define AUTO_CFG_U 0x7D #define AUTO_CFG_L 0x7E #define AUTO_CFG_T 0x7F // Threshold defaults // Electrode touch threshold #define E_THR_T 0x0F // Electrode release threshold #define E_THR_R 0x0A // Prox touch threshold #define PROX_THR_T 0x02 // Prox release threshold #define PROX_THR_R 0x02 #endif