
Lab 3ES_ John Curran T00214119
main.cpp
- Committer:
- johnc89
- Date:
- 2021-04-19
- Revision:
- 6:50b706a10a68
- Parent:
- 5:72d55b40feef
- Child:
- 7:5bb36caad016
File content as of revision 6:50b706a10a68:
// Lab 3 Digital Sensors & equations in C // John Curran T00214119 // This is a 3-axis accelerometer which prints results to Tera Term and also converts readings to degrees //Q2. The result is accurate however it could be improved by calibration of the sensor // or updating of software. // Below are results in a table on Tera-Term: //x0.093765, y0.000000, z0.984529, ang5.440332 //x0.046882, y-0.046882, z0.984529, ang2.723230 //x0.093765, y0.000000, z0.984529, ang5.440332 //x0.093765, y0.000000, z1.031411, ang5.194428 //x0.046882, y0.000000, z0.984529, ang5.440332 //x0.046882, y-0.093765, z0.984529, ang5.415972 //x0.093765, y0.000000, z1.031411, ang5.194428 //x0.234412, y0.000000, z1.031411, ang12.804265 //x0.515706, y0.468823, z0.797000, ang29.149376 // line 7-13 is mbed lying flat on a table and readings are consistent // line 14-15 is sensor being tilted giving different readings #include "mbed.h" #include "MMA7660.h" #define PI 3.14159265 Serial pc(USBTX,USBRX);// serial communications MMA7660 MMA(p28, p27); DigitalOut connectionLed(LED1); float calculateAngle(float x, float y, float z) { float angle = 0; angle= (atan(x/sqrt((y*y)+(z*z))))*180.0/ 3.14159265; return angle; } int main() { while (1) { pc.printf("x%f, y%f, z%f, ang%f\n\r",MMA.x(),MMA.y(),MMA.z(),calculateAngle(MMA.x(),MMA.y(),MMA.z())); wait(0.8); } }