Lab_3 complete with questions

Dependencies:   mbed C12832 MMA7660

Committer:
stephensv650
Date:
Tue May 18 15:30:55 2021 +0000
Revision:
1:9dca98a5b948
Parent:
0:192cc7653fff
Child:
2:31b0dedb8d0f
Q13 Complete

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stephensv650 0:192cc7653fff 1
stephensv650 1:9dca98a5b948 2 #include "mbed.h" // Stephen Reidy; Q13
stephensv650 0:192cc7653fff 3 #include "MMA7660.h" // Include Accelerometer header
stephensv650 0:192cc7653fff 4
stephensv650 0:192cc7653fff 5 MMA7660 MMA(p28, p27); // Accelerometer pins initialised
stephensv650 1:9dca98a5b948 6 Serial pc(USBTX, USBRX); // Transmit & Receive pins initialised
stephensv650 1:9dca98a5b948 7 int Zaxis_n;
stephensv650 1:9dca98a5b948 8 DigitalOut RED(p23);
stephensv650 1:9dca98a5b948 9 DigitalOut GREEN(p24);
stephensv650 1:9dca98a5b948 10 DigitalOut BLUE(p25);
stephensv650 0:192cc7653fff 11
stephensv650 0:192cc7653fff 12 DigitalOut connectionLed(LED1); // led output
stephensv650 0:192cc7653fff 13 float pi = 3.14159; // pi value set
stephensv650 0:192cc7653fff 14
stephensv650 0:192cc7653fff 15
stephensv650 1:9dca98a5b948 16 float CalculateX (float x, float y, float z) // Pitch calculate function
stephensv650 0:192cc7653fff 17 {
stephensv650 0:192cc7653fff 18 float pitch = 0.0; // pitch initialised
stephensv650 0:192cc7653fff 19 pitch = atan(x /sqrt((y*y)+(z*z)) ); // pitch calculations
stephensv650 0:192cc7653fff 20 pitch = pitch * (180/pi); // pitch x 180/3.14159
stephensv650 0:192cc7653fff 21 return pitch;
stephensv650 0:192cc7653fff 22 }
stephensv650 0:192cc7653fff 23
stephensv650 1:9dca98a5b948 24 float CalculateY (float x, float y, float z) // Slope calculate function
stephensv650 0:192cc7653fff 25 {
stephensv650 0:192cc7653fff 26 float slope = 0.0; // slope initialised
stephensv650 0:192cc7653fff 27 slope = atan(y /sqrt((x*x)+(z*z)) ); // slope calculations
stephensv650 0:192cc7653fff 28 slope = slope * (180/pi); // slope x 180/3.14159
stephensv650 0:192cc7653fff 29 return slope;
stephensv650 0:192cc7653fff 30 }
stephensv650 0:192cc7653fff 31
stephensv650 0:192cc7653fff 32 int main() //Main structure
stephensv650 0:192cc7653fff 33 {
stephensv650 1:9dca98a5b948 34 while (1) {
stephensv650 1:9dca98a5b948 35 float XResult = CalculateX(MMA.x(),MMA.y(), MMA.z()); //X result initialised
stephensv650 1:9dca98a5b948 36 float YResult = CalculateY (MMA.x(), MMA.y(), MMA.z()); //Y result initialised
stephensv650 1:9dca98a5b948 37 pc.printf("Pitch is %.4f degrees, and slope is %.4f degrees \n\r", XResult, YResult); //PC print slope (Y)& pitch (X) (Tera term)
stephensv650 0:192cc7653fff 38
stephensv650 1:9dca98a5b948 39 if (Zaxis_n = -MMA.z()) { // Display blue LED for z axis motion
stephensv650 1:9dca98a5b948 40 RED = 1; //blue
stephensv650 1:9dca98a5b948 41 GREEN = 1;
stephensv650 1:9dca98a5b948 42 BLUE = 0;
stephensv650 1:9dca98a5b948 43 wait(.5);
stephensv650 1:9dca98a5b948 44 }
stephensv650 0:192cc7653fff 45
stephensv650 1:9dca98a5b948 46 if (XResult >= 5) { // Display green LED for x axis motion
stephensv650 1:9dca98a5b948 47 RED = 1; //green
stephensv650 1:9dca98a5b948 48 GREEN = 0;
stephensv650 1:9dca98a5b948 49 BLUE = 1;
stephensv650 1:9dca98a5b948 50 wait(.5);
stephensv650 1:9dca98a5b948 51 }
stephensv650 1:9dca98a5b948 52
stephensv650 1:9dca98a5b948 53 if (YResult >= 5) { // Display blue LED for y axis motion
stephensv650 1:9dca98a5b948 54 RED = 0; //red
stephensv650 1:9dca98a5b948 55 GREEN = 1;
stephensv650 1:9dca98a5b948 56 BLUE = 1;
stephensv650 1:9dca98a5b948 57 wait(.5);
stephensv650 1:9dca98a5b948 58 wait(.5);
stephensv650 1:9dca98a5b948 59 }
stephensv650 1:9dca98a5b948 60
stephensv650 1:9dca98a5b948 61 else { // LED off
stephensv650 1:9dca98a5b948 62 RED = 1; // off
stephensv650 1:9dca98a5b948 63 GREEN = 1;
stephensv650 1:9dca98a5b948 64 BLUE = 1;
stephensv650 1:9dca98a5b948 65 wait(.5);
stephensv650 1:9dca98a5b948 66 }
stephensv650 0:192cc7653fff 67 }
stephensv650 0:192cc7653fff 68 }