Led tilts

Dependencies:   MMA8451Q SLCD mbed

Committer:
kennylujan42
Date:
Mon Sep 29 17:28:18 2014 +0000
Revision:
0:35242770842b
Midterm;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kennylujan42 0:35242770842b 1 #include "mbed.h"
kennylujan42 0:35242770842b 2 #include "MMA8451Q.h"
kennylujan42 0:35242770842b 3 #include "SLCD.h"
kennylujan42 0:35242770842b 4
kennylujan42 0:35242770842b 5 /*
kennylujan42 0:35242770842b 6 Test of the accelerometer, digital I/O, on-board LCD screen.
kennylujan42 0:35242770842b 7 Looing at vector product of the x-y components of the accelerometer.
kennylujan42 0:35242770842b 8 Works pretty well. Still rough, program wise - sc 140710
kennylujan42 0:35242770842b 9 */
kennylujan42 0:35242770842b 10
kennylujan42 0:35242770842b 11 #define DATATIME 0.200
kennylujan42 0:35242770842b 12
kennylujan42 0:35242770842b 13 #define PROGNAME "ACCLCD341\r/n"
kennylujan42 0:35242770842b 14
kennylujan42 0:35242770842b 15 #define PRINTDBUG
kennylujan42 0:35242770842b 16 //
kennylujan42 0:35242770842b 17 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
kennylujan42 0:35242770842b 18 PinName const SDA = PTE25; // Data pins for the accelerometer/magnetometer.
kennylujan42 0:35242770842b 19 PinName const SCL = PTE24; // DO NOT CHANGE
kennylujan42 0:35242770842b 20 #elif defined (TARGET_KL05Z)
kennylujan42 0:35242770842b 21 PinName const SDA = PTB4;
kennylujan42 0:35242770842b 22 PinName const SCL = PTB3;
kennylujan42 0:35242770842b 23 #else
kennylujan42 0:35242770842b 24 #error TARGET NOT DEFINED
kennylujan42 0:35242770842b 25 #endif
kennylujan42 0:35242770842b 26
kennylujan42 0:35242770842b 27 #define MMA8451_I2C_ADDRESS (0x1d<<1)
kennylujan42 0:35242770842b 28
kennylujan42 0:35242770842b 29 SLCD slcd; //define LCD display
kennylujan42 0:35242770842b 30
kennylujan42 0:35242770842b 31 MMA8451Q Acc(SDA, SCL, MMA8451_I2C_ADDRESS);
kennylujan42 0:35242770842b 32 Serial pc(USBTX, USBRX);
kennylujan42 0:35242770842b 33
kennylujan42 0:35242770842b 34 float sqrt_newt(float argument) {
kennylujan42 0:35242770842b 35 return (sqrt(argument));
kennylujan42 0:35242770842b 36 }
kennylujan42 0:35242770842b 37
kennylujan42 0:35242770842b 38
kennylujan42 0:35242770842b 39 void LCDMess(char *lMess, float dWait){
kennylujan42 0:35242770842b 40 slcd.Home();
kennylujan42 0:35242770842b 41 slcd.clear();
kennylujan42 0:35242770842b 42 slcd.printf(lMess);
kennylujan42 0:35242770842b 43 wait(dWait);
kennylujan42 0:35242770842b 44 }
kennylujan42 0:35242770842b 45
kennylujan42 0:35242770842b 46
kennylujan42 0:35242770842b 47 int main() {
kennylujan42 0:35242770842b 48 float xAcc;
kennylujan42 0:35242770842b 49 float yAcc;
kennylujan42 0:35242770842b 50 float vector;
kennylujan42 0:35242770842b 51 char lcdData[10]; //buffer needs places dor decimal pt and colon
kennylujan42 0:35242770842b 52
kennylujan42 0:35242770842b 53 #ifdef PRINTDBUG
kennylujan42 0:35242770842b 54 pc.printf(PROGNAME);
kennylujan42 0:35242770842b 55 #endif
kennylujan42 0:35242770842b 56 // main loop forever
kennylujan42 0:35242770842b 57 while(true) {
kennylujan42 0:35242770842b 58
kennylujan42 0:35242770842b 59 //Get accelerometer data - tilt angles minus offset for zero mark.
kennylujan42 0:35242770842b 60 xAcc = abs(acc.getAccX());
kennylujan42 0:35242770842b 61 yAcc = abs(acc.getAccY());
kennylujan42 0:35242770842b 62 // Calulate vector sum of x and y reading.
kennylujan42 0:35242770842b 63 vector = sqrt_newt(pow(xAcc,2) + pow(yAcc,2));
kennylujan42 0:35242770842b 64
kennylujan42 0:35242770842b 65
kennylujan42 0:35242770842b 66 #ifdef PRINTDBUG
kennylujan42 0:35242770842b 67 pc.printf("xAcc = %f\r\n", xAcc);
kennylujan42 0:35242770842b 68 pc.printf("yAcc = %f\r\n", yAcc);
kennylujan42 0:35242770842b 69 pc.printf("vector = %f\r\n", vector);
kennylujan42 0:35242770842b 70 #endif
kennylujan42 0:35242770842b 71
kennylujan42 0:35242770842b 72 sprintf (lcdData,"%4.3f",vector);
kennylujan42 0:35242770842b 73 LCDMess(lcdData, DATATIME);
kennylujan42 0:35242770842b 74 // Wait then do the whole thing again.
kennylujan42 0:35242770842b 75 wait(DATATIME);
kennylujan42 0:35242770842b 76 }
kennylujan42 0:35242770842b 77 }