use mbed os

Dependents:   Seeed_Grove_I2C_Touch_Example

Fork of MPR121 by Sam Grove

Committer:
Nathan Yonkee
Date:
Sun Jul 02 16:33:37 2017 -0600
Revision:
25:534ca7bbccf1
Parent:
23:32fa21a5686d
remove everything we can't use with seeed version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nathan Yonkee 19:eaa64138290b 1 /**
Nathan Yonkee 19:eaa64138290b 2 * @file MPR121.h
Nathan Yonkee 19:eaa64138290b 3 * @brief Device driver - MPR121 capactiive touch IC
Nathan Yonkee 19:eaa64138290b 4 * @author sam grove
Nathan Yonkee 19:eaa64138290b 5 * @version 1.0
Nathan Yonkee 19:eaa64138290b 6 * @see http://cache.freescale.com/files/sensors/doc/data_sheet/MPR121.pdf
Nathan Yonkee 19:eaa64138290b 7 *
Nathan Yonkee 19:eaa64138290b 8 * Copyright (c) 2013
Nathan Yonkee 19:eaa64138290b 9 *
Nathan Yonkee 19:eaa64138290b 10 * Licensed under the Apache License, Version 2.0 (the "License");
Nathan Yonkee 19:eaa64138290b 11 * you may not use this file except in compliance with the License.
Nathan Yonkee 19:eaa64138290b 12 * You may obtain a copy of the License at
Nathan Yonkee 19:eaa64138290b 13 *
Nathan Yonkee 19:eaa64138290b 14 * http://www.apache.org/licenses/LICENSE-2.0
Nathan Yonkee 19:eaa64138290b 15 *
Nathan Yonkee 19:eaa64138290b 16 * Unless required by applicable law or agreed to in writing, software
Nathan Yonkee 19:eaa64138290b 17 * distributed under the License is distributed on an "AS IS" BASIS,
Nathan Yonkee 19:eaa64138290b 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Nathan Yonkee 19:eaa64138290b 19 * See the License for the specific language governing permissions and
Nathan Yonkee 19:eaa64138290b 20 * limitations under the License.
Nathan Yonkee 19:eaa64138290b 21 */
Nathan Yonkee 19:eaa64138290b 22
Nathan Yonkee 19:eaa64138290b 23 #ifndef MPR121_H
Nathan Yonkee 19:eaa64138290b 24 #define MPR121_H
Nathan Yonkee 19:eaa64138290b 25
Nathan Yonkee 19:eaa64138290b 26 #include "mbed.h"
Nathan Yonkee 19:eaa64138290b 27 /* #include "rtos.h"
Nathan Yonkee 19:eaa64138290b 28 */
Nathan Yonkee 19:eaa64138290b 29
Nathan Yonkee 19:eaa64138290b 30 /** Using the Sparkfun SEN-10250 BoB
Nathan Yonkee 19:eaa64138290b 31 *
Nathan Yonkee 19:eaa64138290b 32 * Example:
Nathan Yonkee 19:eaa64138290b 33 * @code
Nathan Yonkee 19:eaa64138290b 34 * #include "mbed.h"
Nathan Yonkee 19:eaa64138290b 35 * #include "MPR121.h"
Nathan Yonkee 19:eaa64138290b 36 *
Nathan Yonkee 19:eaa64138290b 37 * Serial pc(USBTX, USBRX);
Nathan Yonkee 19:eaa64138290b 38 * DigitalOut myled(LED1);
Nathan Yonkee 19:eaa64138290b 39 *
Nathan Yonkee 19:eaa64138290b 40 * #if defined TARGET_LPC1768 || TARGET_LPC11U24
Nathan Yonkee 19:eaa64138290b 41 * I2C i2c(p28, p27);
Nathan Yonkee 19:eaa64138290b 42 * InterruptIn irq(p26);
Nathan Yonkee 19:eaa64138290b 43 * MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS);
Nathan Yonkee 19:eaa64138290b 44 *
Nathan Yonkee 19:eaa64138290b 45 * #elif defined TARGET_KL25Z
Nathan Yonkee 19:eaa64138290b 46 * I2C i2c(PTC9, PTC8);
Nathan Yonkee 19:eaa64138290b 47 * InterruptIn irq(PTA5);
Nathan Yonkee 19:eaa64138290b 48 * MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS);
Nathan Yonkee 19:eaa64138290b 49 *
Nathan Yonkee 19:eaa64138290b 50 * #else
Nathan Yonkee 19:eaa64138290b 51 * #error TARGET NOT TESTED
Nathan Yonkee 19:eaa64138290b 52 * #endif
Nathan Yonkee 19:eaa64138290b 53 *
Nathan Yonkee 19:eaa64138290b 54 * int main()
Nathan Yonkee 19:eaa64138290b 55 * {
Nathan Yonkee 19:eaa64138290b 56 * touch_pad.init();
Nathan Yonkee 19:eaa64138290b 57 * touch_pad.enable();
Nathan Yonkee 19:eaa64138290b 58 *
Nathan Yonkee 19:eaa64138290b 59 * while(1)
Nathan Yonkee 19:eaa64138290b 60 * {
Nathan Yonkee 19:eaa64138290b 61 * if(touch_pad.isPressed())
Nathan Yonkee 19:eaa64138290b 62 * {
Nathan Yonkee 19:eaa64138290b 63 * uint16_t button_val = touch_pad.buttonPressed();
Nathan Yonkee 19:eaa64138290b 64 * printf("button = 0x%04x\n", button_val);
Nathan Yonkee 19:eaa64138290b 65 * myled = (button_val>0) ? 1 : 0;
Nathan Yonkee 19:eaa64138290b 66 * }
Nathan Yonkee 19:eaa64138290b 67 * }
Nathan Yonkee 19:eaa64138290b 68 * }
Nathan Yonkee 19:eaa64138290b 69 * @endcode
Nathan Yonkee 19:eaa64138290b 70 */
Nathan Yonkee 19:eaa64138290b 71
Nathan Yonkee 19:eaa64138290b 72 /**
Nathan Yonkee 19:eaa64138290b 73 * @class MPR121
Nathan Yonkee 19:eaa64138290b 74 * @brief API for the MPR121 capacitive touch IC
Nathan Yonkee 19:eaa64138290b 75 */
Nathan Yonkee 19:eaa64138290b 76 class MPR121
Nathan Yonkee 19:eaa64138290b 77 {
Nathan Yonkee 19:eaa64138290b 78 private:
Nathan Yonkee 19:eaa64138290b 79
Nathan Yonkee 19:eaa64138290b 80 I2C *_i2c;
Nathan Yonkee 19:eaa64138290b 81 uint8_t _i2c_addr;
Nathan Yonkee 19:eaa64138290b 82
Nathan Yonkee 19:eaa64138290b 83 public:
Nathan Yonkee 19:eaa64138290b 84
Nathan Yonkee 19:eaa64138290b 85 /** Create the MPR121 object
Nathan Yonkee 19:eaa64138290b 86 * @param i2c - A defined I2C object
Nathan Yonkee 19:eaa64138290b 87 * @param i2c_addr - Connection of the address line
Nathan Yonkee 19:eaa64138290b 88 */
Nathan Yonkee 23:32fa21a5686d 89 MPR121(I2C &i2c);
Nathan Yonkee 19:eaa64138290b 90
Nathan Yonkee 19:eaa64138290b 91 /** Determine if a new button press event occured
Nathan Yonkee 19:eaa64138290b 92 * Upon calling the state is cleared until another press is detected
Nathan Yonkee 19:eaa64138290b 93 * @return 1 if a press has been detected since the last call, 0 otherwise
Nathan Yonkee 19:eaa64138290b 94 */
Nathan Yonkee 25:534ca7bbccf1 95 bool isPressed(void);
Nathan Yonkee 19:eaa64138290b 96
Nathan Yonkee 19:eaa64138290b 97 /** Get the electrode status (ELE12 ... ELE0 -> b15 xxx b11 ... b0
Nathan Yonkee 19:eaa64138290b 98 * The buttons are bit mapped. ELE0 = b0 ... ELE11 = b11 b12 ... b15 undefined
Nathan Yonkee 19:eaa64138290b 99 * @return The state of all buttons
Nathan Yonkee 19:eaa64138290b 100 */
Nathan Yonkee 19:eaa64138290b 101 uint16_t buttonPressed(void);
Nathan Yonkee 19:eaa64138290b 102 };
Nathan Yonkee 19:eaa64138290b 103
Nathan Yonkee 19:eaa64138290b 104 #endif
Nathan Yonkee 19:eaa64138290b 105