Measurement of slope of accelerometer
Dependencies: mbed C12832 MMA7660
main.cpp@0:a52d467589e0, 2019-08-11 (annotated)
- 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?
User | Revision | Line number | New 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 |