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

Dependencies:   TextLCD mbed

Committer:
Schreeker
Date:
Tue May 24 13:43:39 2016 +0000
Revision:
4:ed779bcb8ce6
Parent:
3:740ab0a19e1d
Child:
5:c0d6d490dd5b
vCalcData erweitert mit Winkelberechnung. Ungenauigkeit in den Grenzen bei 90?-Neigung + Nachkommastellen zu ungenau -> Ueberfuehren in Integerrechnungen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NilsKemmer 2:cf8b98404b66 1 /**********************************************************************************
NilsKemmer 2:cf8b98404b66 2 * File name: Sensor.h
NilsKemmer 2:cf8b98404b66 3 * Zweck: Beinhaltet alle Funktionen zum Auslesen des Beschleunigungssensors
NilsKemmer 2:cf8b98404b66 4 bezüglich der X-, Y-, Z-Koordinaten
NilsKemmer 2:cf8b98404b66 5 * Author: Simon Rutzen, Nils Kemmer
NilsKemmer 2:cf8b98404b66 6 * Changes: keine
NilsKemmer 2:cf8b98404b66 7 ***********************************************************************************/
NilsKemmer 2:cf8b98404b66 8
NilsKemmer 3:740ab0a19e1d 9 /*define*/
Schreeker 4:ed779bcb8ce6 10 #define pi 3.141
Schreeker 4:ed779bcb8ce6 11 #define URef 1.660
Schreeker 4:ed779bcb8ce6 12 #define UDiff 0.332
NilsKemmer 3:740ab0a19e1d 13
NilsKemmer 2:cf8b98404b66 14 /*Include*/
NilsKemmer 2:cf8b98404b66 15 #include "Sensor.h"
NilsKemmer 2:cf8b98404b66 16 #include "mbed.h"
NilsKemmer 3:740ab0a19e1d 17 #include "math.h"
NilsKemmer 2:cf8b98404b66 18
NilsKemmer 2:cf8b98404b66 19 /*Struktur zum Speichern der von den A/D-Wandlern des µC ausgelesenen Messdaten*/
NilsKemmer 2:cf8b98404b66 20 struct SensData sSensData;
NilsKemmer 3:740ab0a19e1d 21 /*Struktur zum Speichern der umgerechneten Messdaten von SensData*/
NilsKemmer 3:740ab0a19e1d 22 struct WinkelData sWinkelData;
NilsKemmer 2:cf8b98404b66 23
NilsKemmer 2:cf8b98404b66 24 /*AnalogIn*/
NilsKemmer 2:cf8b98404b66 25 /*Konfiguriert die angegebenen Pins als analoge Eingaenge*/
NilsKemmer 2:cf8b98404b66 26 AnalogIn oZData(PC_2);
NilsKemmer 2:cf8b98404b66 27 AnalogIn oYData(PC_3);
NilsKemmer 2:cf8b98404b66 28 AnalogIn oXData(PC_4);
NilsKemmer 2:cf8b98404b66 29
NilsKemmer 2:cf8b98404b66 30 void vgetSensData(struct SensData *sSensData){
NilsKemmer 2:cf8b98404b66 31 /*Auslesen der Daten und Speichern in Struktur*/
NilsKemmer 2:cf8b98404b66 32 sSensData->wSensX=oXData.read_u16();
NilsKemmer 2:cf8b98404b66 33 sSensData->wSensY=oYData.read_u16();
NilsKemmer 2:cf8b98404b66 34 sSensData->wSensZ=oZData.read_u16();
NilsKemmer 3:740ab0a19e1d 35 }
NilsKemmer 3:740ab0a19e1d 36
NilsKemmer 3:740ab0a19e1d 37 void vcalcData(struct SensData *sSensData, struct WinkelData *sWinkelData){
NilsKemmer 3:740ab0a19e1d 38 /*Variablen*/
NilsKemmer 3:740ab0a19e1d 39 double dGMessX;
NilsKemmer 3:740ab0a19e1d 40 double dGMessY;
NilsKemmer 3:740ab0a19e1d 41 double dGMessZ;
Schreeker 4:ed779bcb8ce6 42 /* Umrechnen der Messdaten in Spannungen */
Schreeker 4:ed779bcb8ce6 43 dGMessX = (sSensData->wSensX/65535.0)*3.3;
Schreeker 4:ed779bcb8ce6 44 dGMessX = (int)(dGMessX*1000)/1000.0; // Doublewerte auf 2 Nachkommastellen begrenzen!
Schreeker 4:ed779bcb8ce6 45 dGMessX = abs(dGMessX-URef)/UDiff;
Schreeker 4:ed779bcb8ce6 46 dGMessX = (int)(dGMessX*1000)/1000.0;
Schreeker 4:ed779bcb8ce6 47 if(dGMessX<=1 || dGMessX>=-1){
Schreeker 4:ed779bcb8ce6 48 sWinkelData->i16WinkelX = asin(dGMessX)*(180/pi);
Schreeker 4:ed779bcb8ce6 49 }
Schreeker 4:ed779bcb8ce6 50
Schreeker 4:ed779bcb8ce6 51 dGMessY = (sSensData->wSensY/65535.0)*3.3;
Schreeker 4:ed779bcb8ce6 52 dGMessY = (int)(dGMessY*1000)/1000.0; // Doublewerte auf 2 Nachkommastellen begrenzen!
Schreeker 4:ed779bcb8ce6 53 dGMessY = abs(dGMessY-URef)/UDiff;
Schreeker 4:ed779bcb8ce6 54 dGMessY = (int)(dGMessY*1000)/1000.0;
Schreeker 4:ed779bcb8ce6 55 if(dGMessY<=1 || dGMessY>=-1){
Schreeker 4:ed779bcb8ce6 56 sWinkelData->i16WinkelY = asin(dGMessY)*(180/pi);
Schreeker 4:ed779bcb8ce6 57 }
Schreeker 4:ed779bcb8ce6 58
Schreeker 4:ed779bcb8ce6 59 /* Umrechnen der Spannungen in g-Kräfte*/
Schreeker 4:ed779bcb8ce6 60 /* Umrechnen der g-Kräfte in Winkel*/
NilsKemmer 2:cf8b98404b66 61 }