blablabla

Dependencies:   MAG3110 MMA8451Q SLCD- TSI USBDevice mbed

Committer:
Osator
Date:
Wed Apr 16 12:20:00 2014 +0000
Revision:
0:339b7abfa147
blablabla

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osator 0:339b7abfa147 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
Osator 0:339b7abfa147 2 *
Osator 0:339b7abfa147 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Osator 0:339b7abfa147 4 * and associated documentation files (the "Software"), to deal in the Software without
Osator 0:339b7abfa147 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
Osator 0:339b7abfa147 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
Osator 0:339b7abfa147 7 * Software is furnished to do so, subject to the following conditions:
Osator 0:339b7abfa147 8 *
Osator 0:339b7abfa147 9 * The above copyright notice and this permission notice shall be included in all copies or
Osator 0:339b7abfa147 10 * substantial portions of the Software.
Osator 0:339b7abfa147 11 *
Osator 0:339b7abfa147 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
Osator 0:339b7abfa147 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Osator 0:339b7abfa147 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Osator 0:339b7abfa147 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Osator 0:339b7abfa147 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Osator 0:339b7abfa147 17 */
Osator 0:339b7abfa147 18
Osator 0:339b7abfa147 19 #ifndef MMA8451Q_H
Osator 0:339b7abfa147 20 #define MMA8451Q_H
Osator 0:339b7abfa147 21
Osator 0:339b7abfa147 22 #include "mbed.h"
Osator 0:339b7abfa147 23
Osator 0:339b7abfa147 24 /**
Osator 0:339b7abfa147 25 * MMA8451Q accelerometer example
Osator 0:339b7abfa147 26 *
Osator 0:339b7abfa147 27 * @code
Osator 0:339b7abfa147 28 * #include "mbed.h"
Osator 0:339b7abfa147 29 * #include "MMA8451Q.h"
Osator 0:339b7abfa147 30 *
Osator 0:339b7abfa147 31 * #define MMA8451_I2C_ADDRESS (0x1d<<1)
Osator 0:339b7abfa147 32 *
Osator 0:339b7abfa147 33 * int main(void) {
Osator 0:339b7abfa147 34 *
Osator 0:339b7abfa147 35 * MMA8451Q acc(P_E25, P_E24, MMA8451_I2C_ADDRESS);
Osator 0:339b7abfa147 36 * PwmOut rled(LED_RED);
Osator 0:339b7abfa147 37 * PwmOut gled(LED_GREEN);
Osator 0:339b7abfa147 38 * PwmOut bled(LED_BLUE);
Osator 0:339b7abfa147 39 *
Osator 0:339b7abfa147 40 * while (true) {
Osator 0:339b7abfa147 41 * rled = 1.0 - abs(acc.getAccX());
Osator 0:339b7abfa147 42 * gled = 1.0 - abs(acc.getAccY());
Osator 0:339b7abfa147 43 * bled = 1.0 - abs(acc.getAccZ());
Osator 0:339b7abfa147 44 * wait(0.1);
Osator 0:339b7abfa147 45 * }
Osator 0:339b7abfa147 46 * }
Osator 0:339b7abfa147 47 * @endcode
Osator 0:339b7abfa147 48 */
Osator 0:339b7abfa147 49 class MMA8451Q
Osator 0:339b7abfa147 50 {
Osator 0:339b7abfa147 51 public:
Osator 0:339b7abfa147 52 /**
Osator 0:339b7abfa147 53 * MMA8451Q constructor
Osator 0:339b7abfa147 54 *
Osator 0:339b7abfa147 55 * @param sda SDA pin
Osator 0:339b7abfa147 56 * @param sdl SCL pin
Osator 0:339b7abfa147 57 * @param addr addr of the I2C peripheral
Osator 0:339b7abfa147 58 */
Osator 0:339b7abfa147 59 MMA8451Q(PinName sda, PinName scl, int addr);
Osator 0:339b7abfa147 60
Osator 0:339b7abfa147 61 /**
Osator 0:339b7abfa147 62 * MMA8451Q destructor
Osator 0:339b7abfa147 63 */
Osator 0:339b7abfa147 64 ~MMA8451Q();
Osator 0:339b7abfa147 65
Osator 0:339b7abfa147 66 /**
Osator 0:339b7abfa147 67 * Get the value of the WHO_AM_I register
Osator 0:339b7abfa147 68 *
Osator 0:339b7abfa147 69 * @returns WHO_AM_I value
Osator 0:339b7abfa147 70 */
Osator 0:339b7abfa147 71 uint8_t getWhoAmI();
Osator 0:339b7abfa147 72
Osator 0:339b7abfa147 73 /**
Osator 0:339b7abfa147 74 * Get X axis acceleration
Osator 0:339b7abfa147 75 *
Osator 0:339b7abfa147 76 * @returns X axis acceleration
Osator 0:339b7abfa147 77 */
Osator 0:339b7abfa147 78 float getAccX();
Osator 0:339b7abfa147 79
Osator 0:339b7abfa147 80 /**
Osator 0:339b7abfa147 81 * Get Y axis acceleration
Osator 0:339b7abfa147 82 *
Osator 0:339b7abfa147 83 * @returns Y axis acceleration
Osator 0:339b7abfa147 84 */
Osator 0:339b7abfa147 85 float getAccY();
Osator 0:339b7abfa147 86
Osator 0:339b7abfa147 87 /**
Osator 0:339b7abfa147 88 * Get Z axis acceleration
Osator 0:339b7abfa147 89 *
Osator 0:339b7abfa147 90 * @returns Z axis acceleration
Osator 0:339b7abfa147 91 */
Osator 0:339b7abfa147 92 float getAccZ();
Osator 0:339b7abfa147 93
Osator 0:339b7abfa147 94 /**
Osator 0:339b7abfa147 95 * Get XYZ axis acceleration
Osator 0:339b7abfa147 96 *
Osator 0:339b7abfa147 97 * @param res array where acceleration data will be stored
Osator 0:339b7abfa147 98 */
Osator 0:339b7abfa147 99 void getAccAllAxis(float * res);
Osator 0:339b7abfa147 100
Osator 0:339b7abfa147 101 /** JK
Osator 0:339b7abfa147 102 * Setup Double Tap detection
Osator 0:339b7abfa147 103
Osator 0:339b7abfa147 104
Osator 0:339b7abfa147 105 Example:
Osator 0:339b7abfa147 106
Osator 0:339b7abfa147 107 #include "mbed.h"
Osator 0:339b7abfa147 108 #include "MMA8451Q.h"
Osator 0:339b7abfa147 109
Osator 0:339b7abfa147 110 #define MMA8451_I2C_ADDRESS (0x1d<<1)
Osator 0:339b7abfa147 111 #define ON 0
Osator 0:339b7abfa147 112 #define OFF !ON
Osator 0:339b7abfa147 113
Osator 0:339b7abfa147 114 //Setup the interrupts for the MMA8451Q
Osator 0:339b7abfa147 115 InterruptIn accInt1(PTA14);
Osator 0:339b7abfa147 116 InterruptIn accInt2(PTA15);//not used in this prog but this is the other int from the accelorometer
Osator 0:339b7abfa147 117
Osator 0:339b7abfa147 118 uint8_t togstat=0;//Led status
Osator 0:339b7abfa147 119 DigitalOut bled(LED_BLUE);
Osator 0:339b7abfa147 120
Osator 0:339b7abfa147 121
Osator 0:339b7abfa147 122 void tapTrue(void){//ISR
Osator 0:339b7abfa147 123 if(togstat == 0){
Osator 0:339b7abfa147 124 togstat = 1;
Osator 0:339b7abfa147 125 bled=ON;
Osator 0:339b7abfa147 126 } else {
Osator 0:339b7abfa147 127 togstat = 0;
Osator 0:339b7abfa147 128 bled=OFF;
Osator 0:339b7abfa147 129 }
Osator 0:339b7abfa147 130
Osator 0:339b7abfa147 131 }
Osator 0:339b7abfa147 132
Osator 0:339b7abfa147 133
Osator 0:339b7abfa147 134 int main(void) {
Osator 0:339b7abfa147 135
Osator 0:339b7abfa147 136 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);//accelorometer instance
Osator 0:339b7abfa147 137
Osator 0:339b7abfa147 138 acc.setDoubleTap();//Setup the MMA8451Q to look for a double Tap
Osator 0:339b7abfa147 139 accInt1.rise(&tapTrue);//call tapTrue when an interrupt is generated on PTA14
Osator 0:339b7abfa147 140
Osator 0:339b7abfa147 141 while (true) {
Osator 0:339b7abfa147 142 //Interrupt driven so nothing in main loop
Osator 0:339b7abfa147 143 }
Osator 0:339b7abfa147 144 }
Osator 0:339b7abfa147 145
Osator 0:339b7abfa147 146
Osator 0:339b7abfa147 147 */
Osator 0:339b7abfa147 148 void setDoubleTap(void);
Osator 0:339b7abfa147 149
Osator 0:339b7abfa147 150 private:
Osator 0:339b7abfa147 151 I2C m_i2c;
Osator 0:339b7abfa147 152 int m_addr;
Osator 0:339b7abfa147 153 void readRegs(int addr, uint8_t * data, int len);
Osator 0:339b7abfa147 154 void writeRegs(uint8_t * data, int len);
Osator 0:339b7abfa147 155 int16_t getAccAxis(uint8_t addr);
Osator 0:339b7abfa147 156
Osator 0:339b7abfa147 157 };
Osator 0:339b7abfa147 158
Osator 0:339b7abfa147 159 #endif