EMSY-Projekt / Mbed 2 deprecated EMSY-Projekt_Lagesensor

Dependencies:   TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
Schreeker
Date:
Fri May 27 14:36:15 2016 +0000
Parent:
6:e57f9887ad02
Child:
8:0270c3e374f7
Commit message:
Sensor.cpp: Einf?gen von #defines f?r X und Y Referenzwerte.; Einf?gen von Kommentare ?ber Funktionen.; Kommentare in Funktionen eingef?gt zur besseren Funktionsuebersicht.; Simon

Changed in this revision

LCD.cpp Show annotated file Show diff for this revision Revisions of this file
Sensor.cpp Show annotated file Show diff for this revision Revisions of this file
Sensor.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/LCD.cpp	Wed May 25 09:16:13 2016 +0000
+++ b/LCD.cpp	Fri May 27 14:36:15 2016 +0000
@@ -25,23 +25,12 @@
 void vLCDSet(word wWinkelX, word wWinkelY){
     /* Bildschirm bereinigen*/
     olcd.cls();
+    
     /* Überschrift in erster Zeile darstellen */
     olcd.locate(0,0);
     olcd.printf("Lage:");
     
     /* aktuelle Winkel darstellen in ° */
     olcd.locate(0,1);
-    olcd.printf("X: %i\337  Y: %i\337",wWinkelX,wWinkelY);    // \337 entspricht °-Zeichen
-    //olcd.printf("X: %i\337    Y: %i\337",0,0);    // \337 entspricht °-Zeichen
-}
-
-void vLCDSetDebug(word wX, word wY, word wZ){
-    /* Überschrift in erster Zeile darstellen */
-    olcd.locate(0,0);
-    olcd.printf("X:%xY:%x",wX,wY);
-    
-    /* aktuelle Winkel darstellen in ° */
-    olcd.locate(0,1);
-    //olcd.printf("X:%iY:%iZ:%i",wX,wY,wZ);    // \337 entspricht °-Zeichen
-    olcd.printf("Z:%x",wZ);    // \337 entspricht °-Zeichen
-}
\ No newline at end of file
+    olcd.printf("X:%i\337 Y:%i\337",wWinkelX,wWinkelY);    // \337 entspricht °-Zeichen
+}    
\ No newline at end of file
--- a/Sensor.cpp	Wed May 25 09:16:13 2016 +0000
+++ b/Sensor.cpp	Fri May 27 14:36:15 2016 +0000
@@ -6,35 +6,46 @@
 * Changes:      keine
 ***********************************************************************************/
 
-/*define*/
-#define pi 3.141
-#define URef 1.6135
-
-#define UDiff 0.3255
-
-/* Referenzmessung bezogen auf die X-Achse*/
-// X(-1g) = 1.288 V
-// X(1g)  = 1.939 V
-// X(0g)  = 1.6135 V
-// U/1g   = 0.3255 V
-
 /*Include*/
 #include "Sensor.h"
 #include "mbed.h"
 #include "math.h"
 
+/*define*/
+#define pi 3.141
+
+#define URefX 1.6135
+#define UDiffX 0.3255
+
+#define URefY 1.6135
+#define UDiffY 0.3255
+
+#define URefZ 1.6135
+#define UDiffZ 0.3255
+
 /* Variabeln */
+
 /*Struktur zum Speichern der von den A/D-Wandlern des µC ausgelesenen Messdaten*/
 struct SensData stSensData;
+
 /*Struktur zum Speichern der umgerechneten Messdaten von SensData*/
 struct WinkelData stWinkelData;
-    
-/*AnalogIn*/
+
 /*Konfiguriert die angegebenen Pins als analoge Eingaenge*/
 AnalogIn oZData(PC_2);
 AnalogIn oYData(PC_3);
 AnalogIn oXData(PC_4);
 
+/************************************************************************************
+* void vgetSensData(struct SensData *stSensData)
+* Zweck:    Auslesen der Sensordaten (X-, Y- und Z-Daten) und speichern in
+            Strukturen.          
+* Parameter:
+    *stSensData: Pointer auf eine Struktur vom Type SensData zum Abspeichern 
+                 der X-, Y-, und Z-Daten des Sensors. 
+* return Parameter:
+    keine
+*************************************************************************************/
 void vgetSensData(struct SensData *stSensData){
     /* Variabeln */
     int i=0;                    // Laufvariable
@@ -46,7 +57,7 @@
     for(i=0; i<10000; i++){
     XDataRead += oXData.read_u16();
     YDataRead += oYData.read_u16();
-    //ZDataRead += oZData.read_u16();
+    ZDataRead += oZData.read_u16();
     }
     stSensData->wSensX = XDataRead/10000;
     stSensData->wSensY = YDataRead/10000;
@@ -57,27 +68,47 @@
     YDataRead = 0.0;
     ZDataRead = 0.0;
     }
-    
+
+/************************************************************************************
+* void vcalcData(struct SensData *stSensData, struct WinkelData *stWinkelData)
+* Zweck:    Umrechnen der Sensorwerte in Winkel, sowie Auswertung der Lage für
+            LED-Ansteuerung.         
+* Parameter:
+    *stSensData: Pointer auf eine Struktur vom Type SensData zum Abspeichern 
+                 der X-, Y-, und Z-Daten des Sensors. 
+    *stWinkelData: Pointer auf eine Struktur vom Typ WinkelData zum Abspeichern
+                   der berechneten Winkel für die X-, Y- und Z-Achse.             
+* return Parameter:
+    keine
+*************************************************************************************/    
 void vcalcData(struct SensData *stSensData, struct WinkelData *stWinkelData){
     /*Variablen*/
     double dGMessX;
     double dGMessY;
     double dGMessZ;
-    /* Umrechnen der Messdaten in Spannungen */
-    dGMessX = (stSensData->wSensX/65535.0)*3.3;  
-    //stWinkelData->i16WinkelY = dGMessX*1000;
+    /* 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;
+    /*  
     dGMessX = (int)(dGMessX*1000)/1000.0;
-    dGMessX = abs(dGMessX-URef)/(UDiff);
+    dGMessX = abs(dGMessX-URefX)/(UDiffX);
     dGMessX = (int)(dGMessX*1000)/1000.0;
     if(dGMessX<=1 || dGMessX>=-1){
     stWinkelData->i16WinkelX = asin(dGMessX)*(180/pi);
-        }
-        
+        }/*
+    /* Berechnung des Y-Winkels */    
     dGMessY = (stSensData->wSensY/65535.0)*3.3;
+    stWinkelData->i16WinkelY = dGMessY*10000;
+    /*
     dGMessY = (int)(dGMessY*1000)/1000.0; 
-    dGMessY = abs(dGMessY-URef)/UDiff;
+    dGMessY = abs(dGMessY-URefY)/UDiffY;
     dGMessY = (int)(dGMessY*1000)/1000.0;
     if(dGMessY<=1 || dGMessY>=-1){
-    stWinkelData->i16WinkelY = asin(dGMessY)*(180/pi); 
-        } 
+    stWinkelData->i16WinkelY = asin(dGMessY)*(180/pi);
+        } */
     }
\ No newline at end of file
--- a/Sensor.h	Wed May 25 09:16:13 2016 +0000
+++ b/Sensor.h	Fri May 27 14:36:15 2016 +0000
@@ -23,6 +23,7 @@
     signed short int i16WinkelZ;
     };
 
+/* Prototypen */
 void vgetSensData(struct SensData *sSensData);
 void vcalcData(struct SensData *sSensData, struct WinkelData *sWinkelData);
 
--- a/main.cpp	Wed May 25 09:16:13 2016 +0000
+++ b/main.cpp	Fri May 27 14:36:15 2016 +0000
@@ -21,11 +21,15 @@
 /* Hauptprogramm */
 int main(){
     while(1){
+        /* Auslesen des Beschleunigungssensores */
         vgetSensData(&stSensData);
+        /* Berechnung der Winkel aus Messdaten */
         vcalcData(&stSensData, &stWinkelData);
-        //vLCDSetDebug(stSensData.wSensX,stSensData.wSensY,stSensData.wSensZ);
+        /* Einstellen der LED's*/
+        // Tbd
+        /* Einstellen des LCD-Displays*/
         vLCDSet(stWinkelData.i16WinkelX, stWinkelData.i16WinkelY);
-        //wait_ms(1000);
+        wait_ms(500);
         }
         return 0;
     }