use mbed os
Dependents: Seeed_Grove_I2C_Touch_Example
Fork of MPR121 by
Diff: MPR121.cpp
- Revision:
- 10:fb2d2454fea4
- Parent:
- 6:b6bb38744edd
- Child:
- 11:ad26c0810f02
--- a/MPR121.cpp Thu Jun 29 15:56:48 2017 +0000 +++ b/MPR121.cpp Sun Jul 02 10:58:16 2017 -0600 @@ -34,11 +34,18 @@ return; } -MPR121::MPR121(I2C &i2c, MPR121_ADDR i2c_addr) +MPR121::MPR121(I2C &i2c, MPR121_ADDR fake) { _i2c = &i2c; _irq = NULL; - _i2c_addr = (i2c_addr << 1); + _i2c_addr = (0x1b << 1); + char reg[1] = { 0x03 }; + int result=0; + char data = 10; + result = _i2c->write(_i2c_addr, reg, 1, true); + if(result == 0 ) debug("result is 0"); + result = _i2c->read(_i2c_addr, &data, 1); + if(result == 0 ) debug("result is 0"); return; } @@ -46,7 +53,7 @@ void MPR121::init(void) { // set the i2c speed - _i2c->frequency(400000); + /* _i2c->frequency(400000); */ // irq is open-collector and active-low if(_irq != NULL) { _irq->mode(PullUp); @@ -128,16 +135,32 @@ uint32_t MPR121::isPressed(void) { - return _button_has_changed; + + char reg[1] = { 0x03 }; + int result=0; + char data = -1; + result = _i2c->write(_i2c_addr, reg, 1, true); + if(result == 0 ) debug("result is 0"); + result = _i2c->read(_i2c_addr, &data, 1); + if(result == 0 ) debug("result is 0"); + if(data > 0) data = true; + return data; + /* return _button_has_changed; */ } uint16_t MPR121::buttonPressed(void) { - if(_irq == NULL) { - handler(); - } - _button_has_changed = 0; - return _button; + char reg[1] = { 0x03 }; + int result=0; + char data = -1; + result = _i2c->write(_i2c_addr, reg, 1, true); + if(result == 0 ) debug("result is 0"); + result = _i2c->read(_i2c_addr, &data, 1); + if(result == 0 ) debug("result is 0"); + if(data == 4) data = 3; + if(data == 2) data = 2; + if(data == 1) data = 1; + return data; } void MPR121::registerDump(Serial &obj) const