Rudolf Rumpler
/
embedded_answ_2_
accelerometer
main.cpp@2:b99449535e77, 2020-08-19 (annotated)
- Committer:
- rudolf5020
- Date:
- Wed Aug 19 12:25:24 2020 +0000
- Revision:
- 2:b99449535e77
- Parent:
- 1:19c7e004b469
acc
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rudolf5020 | 2:b99449535e77 | 1 | #include "mbed.h"//preprosser command |
rudolf5020 | 2:b99449535e77 | 2 | #include "MMA7660.h"//preprocesser command |
rudolf5020 | 2:b99449535e77 | 3 | |
rudolf5020 | 1:19c7e004b469 | 4 | #define PI 3.14159265 |
rudolf5020 | 0:045cab440776 | 5 | |
rudolf5020 | 2:b99449535e77 | 6 | Serial pc(USBTX,USBRX);//serial transmission |
rudolf5020 | 2:b99449535e77 | 7 | MMA7660 MMA(p28,p27);//IC2 pins accelerometer |
rudolf5020 | 0:045cab440776 | 8 | |
rudolf5020 | 2:b99449535e77 | 9 | float calculateAngle(float x,float y,float z){ |
rudolf5020 | 1:19c7e004b469 | 10 | float angle = 0; |
rudolf5020 | 2:b99449535e77 | 11 | // calculate of angle |
rudolf5020 | 2:b99449535e77 | 12 | |
rudolf5020 | 2:b99449535e77 | 13 | angle = (y*y) + (z*z);//bottom of the division line |
rudolf5020 | 2:b99449535e77 | 14 | angle = sqrt (angle);//square root |
rudolf5020 | 2:b99449535e77 | 15 | angle = x/angle; |
rudolf5020 | 2:b99449535e77 | 16 | angle = atan (angle);//arctan of angle |
rudolf5020 | 2:b99449535e77 | 17 | angle = angle *180/PI; //radians to degrees! |
rudolf5020 | 2:b99449535e77 | 18 | return angle; |
rudolf5020 | 1:19c7e004b469 | 19 | } |
rudolf5020 | 0:045cab440776 | 20 | |
rudolf5020 | 2:b99449535e77 | 21 | int main(){//main program |
rudolf5020 | 2:b99449535e77 | 22 | while (1){ |
rudolf5020 | 2:b99449535e77 | 23 | pc.printf(" X%f Y%f Z%f angle%.2f degrees\r", MMA.x(), |
rudolf5020 | 2:b99449535e77 | 24 | MMA.y(), MMA.z(), calculateAngle(MMA.x(), MMA.y(), MMA.z())); |
rudolf5020 | 2:b99449535e77 | 25 | wait(1);//wait 1 second |
rudolf5020 | 2:b99449535e77 | 26 | } |
rudolf5020 | 2:b99449535e77 | 27 | } |