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:
Sun Jul 03 12:00:47 2016 +0000
Revision:
15:462c8c89fe35
Parent:
14:2543a798b4a1
Child:
16:9b20d24aae18
Lagesensor abgeschlossen. Kalibrierung +- 80 Grad sehr ungenau, evtl ab 80 Ueberkopflage einstellen? setLED hinzugefuegt komplett. setLCD erweitert mit bStateLCD zum Anzeigen der Ueberkopflage oder der Winkel im Normalfall. Simon Rutzen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Schreeker 0:2a6b63a19ae5 1 /**********************************************************************************
Schreeker 0:2a6b63a19ae5 2 * File name: LCD.cpp
Schreeker 0:2a6b63a19ae5 3 * Zweck: Beinhaltet alle Funktionen zur Ausgabe von Informationen
Schreeker 0:2a6b63a19ae5 4 auf dem LCD-Display, sowie Funktionen zum Debuggen des Projektes
Schreeker 0:2a6b63a19ae5 5 * Author: Simon Rutzen, Nils Kemmer
Schreeker 0:2a6b63a19ae5 6 * Changes: keine
Schreeker 0:2a6b63a19ae5 7 ***********************************************************************************/
Schreeker 0:2a6b63a19ae5 8
Schreeker 0:2a6b63a19ae5 9 /* Includes */
Schreeker 0:2a6b63a19ae5 10 #include "LCD.h"
Schreeker 0:2a6b63a19ae5 11
Schreeker 0:2a6b63a19ae5 12 /* Objekt zum Steuern des Bildschirmes */
Schreeker 0:2a6b63a19ae5 13 TextLCD olcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8, TextLCD::LCD20x2); // rs, e, d4-d7
Schreeker 0:2a6b63a19ae5 14
Schreeker 0:2a6b63a19ae5 15 /************************************************************************************
Schreeker 0:2a6b63a19ae5 16 * void vLCDSet(word wWinkelX, word wWinkelY)
Schreeker 0:2a6b63a19ae5 17 * Zweck: Funktion zur Darstellung der aktuellen X- und Y-Lage (in °)
Schreeker 0:2a6b63a19ae5 18 des Beschleunigungssensores auf dem LCD-Display
Schreeker 0:2a6b63a19ae5 19 * Parameter:
Schreeker 0:2a6b63a19ae5 20 wWinkelX: aktueller Winkel bezogen auf die X-Achse des Beschleunigungssensores
Schreeker 0:2a6b63a19ae5 21 wWinkelY: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
Schreeker 15:462c8c89fe35 22 bStateLCD: Zustandsvariabel, Anzeigen der Winkel bei Normallage (0) oder Anzeigen
Schreeker 15:462c8c89fe35 23 der Textnachricht Überkopflage ohne Winkelangaben.
Schreeker 0:2a6b63a19ae5 24 * return Parameter:
Schreeker 0:2a6b63a19ae5 25 keine
Schreeker 0:2a6b63a19ae5 26 *************************************************************************************/
Schreeker 15:462c8c89fe35 27 void vLCDSet(signed short int wWinkelX, signed short int wWinkelY, byte bStateLCD){
Schreeker 5:c0d6d490dd5b 28 /* Bildschirm bereinigen*/
Schreeker 5:c0d6d490dd5b 29 olcd.cls();
Schreeker 7:882edb5f9466 30
Schreeker 15:462c8c89fe35 31 /* Einstellen des Anzeigemodus */
Schreeker 15:462c8c89fe35 32 switch(bStateLCD){
Schreeker 15:462c8c89fe35 33 case 0:{
Schreeker 15:462c8c89fe35 34 /* Überschrift in erster Zeile darstellen */
Schreeker 15:462c8c89fe35 35 olcd.locate(0,0);
Schreeker 15:462c8c89fe35 36 olcd.printf("Lage:");
Schreeker 0:2a6b63a19ae5 37
Schreeker 15:462c8c89fe35 38 /* aktuelle Winkel darstellen in ° */
Schreeker 15:462c8c89fe35 39 olcd.locate(0,1);
Schreeker 15:462c8c89fe35 40 olcd.printf("X:%i\337 Y:%i\337",wWinkelX,wWinkelY); // \337 entspricht °-Zeichen
Schreeker 15:462c8c89fe35 41 }
Schreeker 15:462c8c89fe35 42 break;
Schreeker 15:462c8c89fe35 43 case 1:{
Schreeker 15:462c8c89fe35 44 /* Anzeigen der Überkopflage des Sensores */
Schreeker 15:462c8c89fe35 45 olcd.locate(0,0);
Schreeker 15:462c8c89fe35 46 olcd.printf("!Ueberkopflage!");
Schreeker 15:462c8c89fe35 47 }
Schreeker 15:462c8c89fe35 48 default: break;
Schreeker 15:462c8c89fe35 49 }
Schreeker 11:5861bc23022a 50 }
Schreeker 11:5861bc23022a 51
Schreeker 11:5861bc23022a 52 /************************************************************************************
Schreeker 11:5861bc23022a 53 * void vLCDDebug(signed short int wWinkelX, signed short int wWinkelY, signed short int wWinkelZ)
Schreeker 11:5861bc23022a 54 * Zweck: Debugfunktion zum Anzeigen der aktuellen Messwerte des Beschleunigungssensores
Schreeker 11:5861bc23022a 55 zwecks Kalibrierung der einzelnen Nullpunkte der Achsen
Schreeker 11:5861bc23022a 56 * Parameter:
Schreeker 11:5861bc23022a 57 wWinkelX: aktueller Winkel bezogen auf die X-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 58 wWinkelY: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 59 wWinkelZ: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 60 Hinweis: Alle Winkelwerte sind Spannungswerte des Sensores mit Faktor 10000 multipliziert!
Schreeker 11:5861bc23022a 61 * return Parameter:
Schreeker 11:5861bc23022a 62 keine
Schreeker 11:5861bc23022a 63 *************************************************************************************/
Schreeker 11:5861bc23022a 64 void vLCDDebug(signed short int wWinkelX, signed short int wWinkelY, signed short int wWinkelZ){
Schreeker 11:5861bc23022a 65 /* Bildschirm bereinigen */
Schreeker 11:5861bc23022a 66 olcd.cls();
Schreeker 11:5861bc23022a 67
Schreeker 11:5861bc23022a 68 /* Anzeigen der einzelnen Parameter, oben X und Y, unten Z */
Schreeker 11:5861bc23022a 69 olcd.locate(0,0);
Schreeker 11:5861bc23022a 70 olcd.printf("X:%i Y:%i",wWinkelX,wWinkelY);
Schreeker 11:5861bc23022a 71 olcd.locate(0,1);
Schreeker 11:5861bc23022a 72 olcd.printf("Z:%i",wWinkelZ);
Schreeker 14:2543a798b4a1 73 }
Schreeker 14:2543a798b4a1 74
Schreeker 14:2543a798b4a1 75 /************************************************************************************
Schreeker 14:2543a798b4a1 76 * void initLCD()
Schreeker 14:2543a798b4a1 77 * Zweck: Anzeigen des Initialtextes zum Programmstart.
Schreeker 14:2543a798b4a1 78 * Parameter:
Schreeker 14:2543a798b4a1 79 keine
Schreeker 14:2543a798b4a1 80 * return Parameter:
Schreeker 14:2543a798b4a1 81 keine
Schreeker 14:2543a798b4a1 82 *************************************************************************************/
Schreeker 14:2543a798b4a1 83 void initLCD(){
Schreeker 14:2543a798b4a1 84 /* Löschen des Bildschirmes */
Schreeker 14:2543a798b4a1 85 olcd.cls();
Schreeker 14:2543a798b4a1 86
Schreeker 14:2543a798b4a1 87 /* Anzeigen des Initialtextes */
Schreeker 14:2543a798b4a1 88 olcd.locate(3,0);
Schreeker 14:2543a798b4a1 89 olcd.printf("Lagesensor");
Schreeker 14:2543a798b4a1 90
Schreeker 14:2543a798b4a1 91 olcd.locate(1,1);
Schreeker 14:2543a798b4a1 92 olcd.printf("Nils und Simon");
Schreeker 11:5861bc23022a 93 }