ramiii

Dependencies:   mbed

Committer:
RAMIRORUBIO
Date:
Mon Nov 06 22:37:56 2017 +0000
Revision:
0:49465eeab179
rami;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RAMIRORUBIO 0:49465eeab179 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
RAMIRORUBIO 0:49465eeab179 2 *
RAMIRORUBIO 0:49465eeab179 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
RAMIRORUBIO 0:49465eeab179 4 * and associated documentation files (the "Software"), to deal in the Software without
RAMIRORUBIO 0:49465eeab179 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
RAMIRORUBIO 0:49465eeab179 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
RAMIRORUBIO 0:49465eeab179 7 * Software is furnished to do so, subject to the following conditions:
RAMIRORUBIO 0:49465eeab179 8 *
RAMIRORUBIO 0:49465eeab179 9 * The above copyright notice and this permission notice shall be included in all copies or
RAMIRORUBIO 0:49465eeab179 10 * substantial portions of the Software.
RAMIRORUBIO 0:49465eeab179 11 *
RAMIRORUBIO 0:49465eeab179 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
RAMIRORUBIO 0:49465eeab179 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
RAMIRORUBIO 0:49465eeab179 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
RAMIRORUBIO 0:49465eeab179 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
RAMIRORUBIO 0:49465eeab179 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
RAMIRORUBIO 0:49465eeab179 17 */
RAMIRORUBIO 0:49465eeab179 18
RAMIRORUBIO 0:49465eeab179 19 #ifndef MMA8451Q_H
RAMIRORUBIO 0:49465eeab179 20 #define MMA8451Q_H
RAMIRORUBIO 0:49465eeab179 21
RAMIRORUBIO 0:49465eeab179 22 #include "mbed.h"
RAMIRORUBIO 0:49465eeab179 23
RAMIRORUBIO 0:49465eeab179 24 /**
RAMIRORUBIO 0:49465eeab179 25 * MMA8451Q accelerometer example
RAMIRORUBIO 0:49465eeab179 26 *
RAMIRORUBIO 0:49465eeab179 27 * @code
RAMIRORUBIO 0:49465eeab179 28 * #include "mbed.h"
RAMIRORUBIO 0:49465eeab179 29 * #include "MMA8451Q.h"
RAMIRORUBIO 0:49465eeab179 30 *
RAMIRORUBIO 0:49465eeab179 31 * #define MMA8451_I2C_ADDRESS (0x1d<<1)
RAMIRORUBIO 0:49465eeab179 32 *
RAMIRORUBIO 0:49465eeab179 33 * int main(void) {
RAMIRORUBIO 0:49465eeab179 34 *
RAMIRORUBIO 0:49465eeab179 35 * MMA8451Q acc(P_E25, P_E24, MMA8451_I2C_ADDRESS);
RAMIRORUBIO 0:49465eeab179 36 * PwmOut rled(LED_RED);
RAMIRORUBIO 0:49465eeab179 37 * PwmOut gled(LED_GREEN);
RAMIRORUBIO 0:49465eeab179 38 * PwmOut bled(LED_BLUE);
RAMIRORUBIO 0:49465eeab179 39 *
RAMIRORUBIO 0:49465eeab179 40 * while (true) {
RAMIRORUBIO 0:49465eeab179 41 * rled = 1.0 - abs(acc.getAccX());
RAMIRORUBIO 0:49465eeab179 42 * gled = 1.0 - abs(acc.getAccY());
RAMIRORUBIO 0:49465eeab179 43 * bled = 1.0 - abs(acc.getAccZ());
RAMIRORUBIO 0:49465eeab179 44 * wait(0.1);
RAMIRORUBIO 0:49465eeab179 45 * }
RAMIRORUBIO 0:49465eeab179 46 * }
RAMIRORUBIO 0:49465eeab179 47 * @endcode
RAMIRORUBIO 0:49465eeab179 48 */
RAMIRORUBIO 0:49465eeab179 49 class MMA8451Q
RAMIRORUBIO 0:49465eeab179 50 {
RAMIRORUBIO 0:49465eeab179 51 public:
RAMIRORUBIO 0:49465eeab179 52 /**
RAMIRORUBIO 0:49465eeab179 53 * MMA8451Q constructor
RAMIRORUBIO 0:49465eeab179 54 *
RAMIRORUBIO 0:49465eeab179 55 * @param sda SDA pin
RAMIRORUBIO 0:49465eeab179 56 * @param sdl SCL pin
RAMIRORUBIO 0:49465eeab179 57 * @param addr addr of the I2C peripheral
RAMIRORUBIO 0:49465eeab179 58 */
RAMIRORUBIO 0:49465eeab179 59 MMA8451Q(PinName sda, PinName scl, int addr);
RAMIRORUBIO 0:49465eeab179 60
RAMIRORUBIO 0:49465eeab179 61 /**
RAMIRORUBIO 0:49465eeab179 62 * MMA8451Q destructor
RAMIRORUBIO 0:49465eeab179 63 */
RAMIRORUBIO 0:49465eeab179 64 ~MMA8451Q();
RAMIRORUBIO 0:49465eeab179 65
RAMIRORUBIO 0:49465eeab179 66 /**
RAMIRORUBIO 0:49465eeab179 67 * Get the value of the WHO_AM_I register
RAMIRORUBIO 0:49465eeab179 68 *
RAMIRORUBIO 0:49465eeab179 69 * @returns WHO_AM_I value
RAMIRORUBIO 0:49465eeab179 70 */
RAMIRORUBIO 0:49465eeab179 71 uint8_t getWhoAmI();
RAMIRORUBIO 0:49465eeab179 72
RAMIRORUBIO 0:49465eeab179 73 /**
RAMIRORUBIO 0:49465eeab179 74 * Get X axis acceleration
RAMIRORUBIO 0:49465eeab179 75 *
RAMIRORUBIO 0:49465eeab179 76 * @returns X axis acceleration
RAMIRORUBIO 0:49465eeab179 77 */
RAMIRORUBIO 0:49465eeab179 78 float getAccX();
RAMIRORUBIO 0:49465eeab179 79
RAMIRORUBIO 0:49465eeab179 80 /**
RAMIRORUBIO 0:49465eeab179 81 * Get Y axis acceleration
RAMIRORUBIO 0:49465eeab179 82 *
RAMIRORUBIO 0:49465eeab179 83 * @returns Y axis acceleration
RAMIRORUBIO 0:49465eeab179 84 */
RAMIRORUBIO 0:49465eeab179 85 float getAccY();
RAMIRORUBIO 0:49465eeab179 86
RAMIRORUBIO 0:49465eeab179 87 /**
RAMIRORUBIO 0:49465eeab179 88 * Get Z axis acceleration
RAMIRORUBIO 0:49465eeab179 89 *
RAMIRORUBIO 0:49465eeab179 90 * @returns Z axis acceleration
RAMIRORUBIO 0:49465eeab179 91 */
RAMIRORUBIO 0:49465eeab179 92 float getAccZ();
RAMIRORUBIO 0:49465eeab179 93
RAMIRORUBIO 0:49465eeab179 94 /**
RAMIRORUBIO 0:49465eeab179 95 * Get XYZ axis acceleration
RAMIRORUBIO 0:49465eeab179 96 *
RAMIRORUBIO 0:49465eeab179 97 * @param res array where acceleration data will be stored
RAMIRORUBIO 0:49465eeab179 98 */
RAMIRORUBIO 0:49465eeab179 99 void getAccAllAxis(float * res);
RAMIRORUBIO 0:49465eeab179 100
RAMIRORUBIO 0:49465eeab179 101 private:
RAMIRORUBIO 0:49465eeab179 102 I2C m_i2c;
RAMIRORUBIO 0:49465eeab179 103 int m_addr;
RAMIRORUBIO 0:49465eeab179 104 void readRegs(int addr, uint8_t * data, int len);
RAMIRORUBIO 0:49465eeab179 105 void writeRegs(uint8_t * data, int len);
RAMIRORUBIO 0:49465eeab179 106 int16_t getAccAxis(uint8_t addr);
RAMIRORUBIO 0:49465eeab179 107
RAMIRORUBIO 0:49465eeab179 108 };
RAMIRORUBIO 0:49465eeab179 109
RAMIRORUBIO 0:49465eeab179 110 #endif