Programm zur Darstellung der Lage eines Objektes im Raum mit Hilfe eines Beschleunigungssensores, 4 LED's und einem LCD-Display.

Dependencies:   TextLCD mbed

Revision:
9:38d287593320
Parent:
7:882edb5f9466
Child:
11:5861bc23022a
--- a/Sensor.cpp	Tue May 31 19:34:49 2016 +0000
+++ b/Sensor.cpp	Sun Jun 05 13:18:17 2016 +0000
@@ -86,29 +86,40 @@
     double dGMessX;
     double dGMessY;
     double dGMessZ;
+    
+    int iVorzeichenX = 0;
+    int iVorzeichenY = 0;
+    
     /* Berechnung des Z-Winkels */
     dGMessZ = (stSensData->wSensZ/65535.0)*3.3;
     stWinkelData->i16WinkelZ = dGMessZ*10000;
-    /* Auswertung (> 90°) */
-    // Tbd
+    
     /* Berechnung des X-Winkels */
     dGMessX = (stSensData->wSensX/65535.0)*3.3;
-    stWinkelData->i16WinkelX = dGMessX*10000;
-    /*  
+    /* Auswertung des Vorzeichens */
+    if(dGMessX<URefX){
+        iVorzeichenX = 1;
+        }
+    stWinkelData->i16WinkelX = dGMessX*10000; 
     dGMessX = (int)(dGMessX*1000)/1000.0;
     dGMessX = abs(dGMessX-URefX)/(UDiffX);
     dGMessX = (int)(dGMessX*1000)/1000.0;
     if(dGMessX<=1 || dGMessX>=-1){
     stWinkelData->i16WinkelX = asin(dGMessX)*(180/pi);
-        }/*
+        }
+    if(iVorzeichenX) stWinkelData->i16WinkelX = -stWinkelData->i16WinkelX;     
     /* Berechnung des Y-Winkels */    
     dGMessY = (stSensData->wSensY/65535.0)*3.3;
+    /* Auswertung des Vorzeichens */
+    if(dGMessY<URefY){
+        iVorzeichenY = 1;
+        }
     stWinkelData->i16WinkelY = dGMessY*10000;
-    /*
     dGMessY = (int)(dGMessY*1000)/1000.0; 
     dGMessY = abs(dGMessY-URefY)/UDiffY;
     dGMessY = (int)(dGMessY*1000)/1000.0;
     if(dGMessY<=1 || dGMessY>=-1){
     stWinkelData->i16WinkelY = asin(dGMessY)*(180/pi);
-        } */
+        }
+    if(iVorzeichenY) stWinkelData->i16WinkelY = -stWinkelData->i16WinkelY;  
     }
\ No newline at end of file