Measurement of slope of accelerometer

Dependencies:   mbed C12832 MMA7660

Committer:
Dariusz_Piskorowski
Date:
Sun Aug 11 01:09:41 2019 +0000
Revision:
0:a52d467589e0
Angle measurement Rev 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dariusz_Piskorowski 0:a52d467589e0 1 #include "mbed.h"
Dariusz_Piskorowski 0:a52d467589e0 2 #include "C12832.h"
Dariusz_Piskorowski 0:a52d467589e0 3 #include "MMA7660.h"
Dariusz_Piskorowski 0:a52d467589e0 4 #define PI 3.14159265
Dariusz_Piskorowski 0:a52d467589e0 5
Dariusz_Piskorowski 0:a52d467589e0 6 C12832 lcd(p5, p7, p6, p8, p11); // setting up lcd
Dariusz_Piskorowski 0:a52d467589e0 7 MMA7660 MMA(p28, p27); //setting up MMA
Dariusz_Piskorowski 0:a52d467589e0 8 float mean;
Dariusz_Piskorowski 0:a52d467589e0 9
Dariusz_Piskorowski 0:a52d467589e0 10 float calculateAngle(float x, float y, float z){ //calculate angle
Dariusz_Piskorowski 0:a52d467589e0 11 float angle=0;
Dariusz_Piskorowski 0:a52d467589e0 12 angle=pow(y,2) + pow(z,2);
Dariusz_Piskorowski 0:a52d467589e0 13 angle=sqrt(angle);
Dariusz_Piskorowski 0:a52d467589e0 14 angle=x/angle;
Dariusz_Piskorowski 0:a52d467589e0 15 angle=atan(angle);
Dariusz_Piskorowski 0:a52d467589e0 16 angle=angle* 180/PI;
Dariusz_Piskorowski 0:a52d467589e0 17 for(int i=0; i<100; i++){ //loop for counting angle 100 times
Dariusz_Piskorowski 0:a52d467589e0 18 mean =+ angle; //add next value of angle to mean
Dariusz_Piskorowski 0:a52d467589e0 19 wait(0.001); //wait a little for different value
Dariusz_Piskorowski 0:a52d467589e0 20 }
Dariusz_Piskorowski 0:a52d467589e0 21 angle=mean/100; //angle as mean
Dariusz_Piskorowski 0:a52d467589e0 22 return angle;
Dariusz_Piskorowski 0:a52d467589e0 23 }
Dariusz_Piskorowski 0:a52d467589e0 24
Dariusz_Piskorowski 0:a52d467589e0 25 int main() {
Dariusz_Piskorowski 0:a52d467589e0 26
Dariusz_Piskorowski 0:a52d467589e0 27 while(1) {
Dariusz_Piskorowski 0:a52d467589e0 28
Dariusz_Piskorowski 0:a52d467589e0 29 lcd.cls();
Dariusz_Piskorowski 0:a52d467589e0 30 lcd.locate(0,4);
Dariusz_Piskorowski 0:a52d467589e0 31 //print on lcd values of X,Y,Z and calculated angle
Dariusz_Piskorowski 0:a52d467589e0 32 lcd.printf("X= %f Y= %f Z= %f Angle= %.1f ",
Dariusz_Piskorowski 0:a52d467589e0 33 MMA.x(),MMA.y(),MMA.z(), calculateAngle(MMA.x(),MMA.y(),MMA.z()));
Dariusz_Piskorowski 0:a52d467589e0 34 wait(1); // frequency of displayed data on lcd screen = delay time
Dariusz_Piskorowski 0:a52d467589e0 35
Dariusz_Piskorowski 0:a52d467589e0 36 }
Dariusz_Piskorowski 0:a52d467589e0 37 }
Dariusz_Piskorowski 0:a52d467589e0 38
Dariusz_Piskorowski 0:a52d467589e0 39