
Programm zur Darstellung der Lage eines Objektes im Raum mit Hilfe eines Beschleunigungssensores, 4 LED's und einem LCD-Display.
Diff: LED.cpp
- Revision:
- 19:51747c0ab062
- Parent:
- 18:b26d88b7b370
- Child:
- 20:094cdb790dcb
--- a/LED.cpp Thu Jul 07 09:27:57 2016 +0000 +++ b/LED.cpp Tue Jul 12 14:49:28 2016 +0000 @@ -17,8 +17,8 @@ /* Erzeugen eines Hystereseverhaltens bei Überkopflage und Normallage aufgrund der Schwankungen bei den Werten des Accelometers */ -#define UGrenzZUeberkopf 17602 // X oder Y > 80° -#define UGrenzZNormal 18000 // X oder Y kleiner ungefähr 75° +#define UGrenzZUeberkopf 17350 // X oder Y größer 81° +#define UGrenzZNormal 17600 // X oder Y kleiner ungefähr 80° /*Konfiguriert die angegebenen Pins als pulsweitenmodulierte Ausgänge*/ PwmOut oLEDXN(PB_15); @@ -35,21 +35,21 @@ * Parameter: wWinkelX: aktueller Winkel bezogen auf die X-Achse des Beschleunigungssensores wWinkelY: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores - wWinkelZ: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores + wSpannungZ: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores * return Parameter: bStateLCD: LCD zeigt Winkel an (0) oder Textnachricht Überkopflage (1) *************************************************************************************/ -byte setLED(int16 wWinkelX, int16 wWinkelY, int16 wWinkelZ){ +byte setLED(int16 wWinkelX, int16 wWinkelY, int16 wSpannungZ){ /* Variabeln */ byte bStateLED = 0; // Zustand des Lagesensors ( 0: Normallage 1: Überkopflage) byte bStateLCD = 0; // Zustand der LCD-Anzeige ( 0: Winkelausgabe 1: Textnachricht Überkopflage) /* Auswertung der Z-Achsendaten */ - if (wWinkelZ < UGrenzZUeberkopf){ // Überkopflage + if (abs(wWinkelX) > 80 || abs(wWinkelY) > 80 || wSpannungZ < UGrenzZUeberkopf){ // Überkopflage bStateLED = 1; bStateLCD = 1; } - if (wWinkelZ > UGrenzZNormal){ // Normallage + if (abs(wWinkelX) < 80 && abs(wWinkelY) < 80 && wSpannungZ > UGrenzZNormal){ // Normallage bStateLED = 0; bStateLCD = 0; } @@ -108,10 +108,10 @@ int i = 0; /* Setzen der PWM-Periode auf 20ms */ - oLEDXN.period_ms(20); - oLEDXP.period_ms(20); - oLEDYN.period_ms(20); - oLEDYP.period_ms(20); + oLEDXN.period_ms(10); + oLEDXP.period_ms(10); + oLEDYN.period_ms(10); + oLEDYP.period_ms(10); /* 4x Blinken der LED's mit 250ms Pause dazwischen*/ while(i<8){