Lab_3 complete with questions
Dependencies: mbed C12832 MMA7660
main.cpp@1:9dca98a5b948, 2021-05-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |