Programm zur Darstellung der Lage eines Objektes im Raum mit Hilfe eines Beschleunigungssensores, 4 LED's und einem LCD-Display.
Diff: Sensor.cpp
- 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