A level for the Freescale FRDM-KL05Z. Sensitivity can be adjust by the "<0.95f" If it is on 1, the ground must be flat to see this working. Have fun with a digital DIY Level ;D

Dependencies:   MMA8451Q mbed

Committer:
djmanuel
Date:
Fri Nov 28 14:10:03 2014 +0000
Revision:
0:fe9e813155a1
Wasserwage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djmanuel 0:fe9e813155a1 1 #include "mbed.h"
djmanuel 0:fe9e813155a1 2 #include "MMA8451Q.h"
djmanuel 0:fe9e813155a1 3 #if defined (TARGET_KL05Z)
djmanuel 0:fe9e813155a1 4 PinName const SDA = PTB4;
djmanuel 0:fe9e813155a1 5 PinName const SCL = PTB3;
djmanuel 0:fe9e813155a1 6 #else
djmanuel 0:fe9e813155a1 7 #error TARGET NOT DEFINED
djmanuel 0:fe9e813155a1 8 #endif
djmanuel 0:fe9e813155a1 9 #define MMA8451_I2C_ADDRESS (0x1d<<1)
djmanuel 0:fe9e813155a1 10
djmanuel 0:fe9e813155a1 11 int main(void)
djmanuel 0:fe9e813155a1 12 {
djmanuel 0:fe9e813155a1 13 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
djmanuel 0:fe9e813155a1 14 PwmOut rled(LED1); rled = 1.0f;
djmanuel 0:fe9e813155a1 15 PwmOut gled(LED2); gled = 1.0f;
djmanuel 0:fe9e813155a1 16 PwmOut bled(LED3 ); bled = 1.0f;
djmanuel 0:fe9e813155a1 17
djmanuel 0:fe9e813155a1 18 start:
djmanuel 0:fe9e813155a1 19 float x, y, z;
djmanuel 0:fe9e813155a1 20 x = abs(acc.getAccX());
djmanuel 0:fe9e813155a1 21 y = abs(acc.getAccY());
djmanuel 0:fe9e813155a1 22 z = abs(acc.getAccZ());
djmanuel 0:fe9e813155a1 23
djmanuel 0:fe9e813155a1 24 while (x > 0.95f) {rled = 0.0f; wait(0.2);goto start;};
djmanuel 0:fe9e813155a1 25 while (y > 0.95f) {bled = 0.0f; wait(0.2);goto start;};
djmanuel 0:fe9e813155a1 26 while (z > 0.95f) {gled = 0.0f; wait(0.2);goto start;};
djmanuel 0:fe9e813155a1 27
djmanuel 0:fe9e813155a1 28 rled = 1.0f;
djmanuel 0:fe9e813155a1 29 gled = 1.0f;
djmanuel 0:fe9e813155a1 30 bled = 1.0f;
djmanuel 0:fe9e813155a1 31 goto start;
djmanuel 0:fe9e813155a1 32 }