FRDM-KL46Z board sLCD demo code

Dependencies:   SLCD mbed

Fork of FRDM-KL46Z LCD rtc Demo by Paul Staron

Committer:
salemtang
Date:
Thu Oct 02 14:14:28 2014 +0000
Revision:
12:cae0afb130b1
Parent:
10:e6a7ab919241
20141002_2315 modified

Who changed what in which revision?

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