Dni Przedsiebierczosci Demo

Dependencies:   mbed

Committer:
ketjow
Date:
Fri Apr 21 08:25:54 2017 +0000
Revision:
0:eb5dfc6d9eae
Initial

Who changed what in which revision?

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