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:
Wed Jul 06 10:31:53 2016 +0000
Revision:
17:0b9e7a05b203
Parent:
16:9b20d24aae18
Child:
20:094cdb790dcb
Letzte Kalibrierung der Achsen und Anpassen der Ueberkopflage ab +-80 Grad Lage der X oder Y Achse. 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 16:9b20d24aae18 27 void vLCDSet(int16 wWinkelX, int16 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 17:0b9e7a05b203 37
Schreeker 0:2a6b63a19ae5 38
Schreeker 15:462c8c89fe35 39 /* aktuelle Winkel darstellen in ° */
Schreeker 15:462c8c89fe35 40 olcd.locate(0,1);
Schreeker 15:462c8c89fe35 41 olcd.printf("X:%i\337 Y:%i\337",wWinkelX,wWinkelY); // \337 entspricht °-Zeichen
Schreeker 15:462c8c89fe35 42 }
Schreeker 15:462c8c89fe35 43 break;
Schreeker 15:462c8c89fe35 44 case 1:{
Schreeker 15:462c8c89fe35 45 /* Anzeigen der Überkopflage des Sensores */
Schreeker 15:462c8c89fe35 46 olcd.locate(0,0);
Schreeker 15:462c8c89fe35 47 olcd.printf("!Ueberkopflage!");
Schreeker 15:462c8c89fe35 48 }
Schreeker 15:462c8c89fe35 49 default: break;
Schreeker 15:462c8c89fe35 50 }
Schreeker 11:5861bc23022a 51 }
Schreeker 11:5861bc23022a 52
Schreeker 11:5861bc23022a 53 /************************************************************************************
Schreeker 11:5861bc23022a 54 * void vLCDDebug(signed short int wWinkelX, signed short int wWinkelY, signed short int wWinkelZ)
Schreeker 11:5861bc23022a 55 * Zweck: Debugfunktion zum Anzeigen der aktuellen Messwerte des Beschleunigungssensores
Schreeker 11:5861bc23022a 56 zwecks Kalibrierung der einzelnen Nullpunkte der Achsen
Schreeker 11:5861bc23022a 57 * Parameter:
Schreeker 11:5861bc23022a 58 wWinkelX: aktueller Winkel bezogen auf die X-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 59 wWinkelY: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 60 wWinkelZ: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
Schreeker 11:5861bc23022a 61 Hinweis: Alle Winkelwerte sind Spannungswerte des Sensores mit Faktor 10000 multipliziert!
Schreeker 11:5861bc23022a 62 * return Parameter:
Schreeker 11:5861bc23022a 63 keine
Schreeker 11:5861bc23022a 64 *************************************************************************************/
Schreeker 16:9b20d24aae18 65 void vLCDDebug(int16 wWinkelX, int16 wWinkelY, int16 wWinkelZ){
Schreeker 11:5861bc23022a 66 /* Bildschirm bereinigen */
Schreeker 11:5861bc23022a 67 olcd.cls();
Schreeker 11:5861bc23022a 68
Schreeker 11:5861bc23022a 69 /* Anzeigen der einzelnen Parameter, oben X und Y, unten Z */
Schreeker 11:5861bc23022a 70 olcd.locate(0,0);
Schreeker 11:5861bc23022a 71 olcd.printf("X:%i Y:%i",wWinkelX,wWinkelY);
Schreeker 11:5861bc23022a 72 olcd.locate(0,1);
Schreeker 11:5861bc23022a 73 olcd.printf("Z:%i",wWinkelZ);
Schreeker 14:2543a798b4a1 74 }
Schreeker 14:2543a798b4a1 75
Schreeker 14:2543a798b4a1 76 /************************************************************************************
Schreeker 14:2543a798b4a1 77 * void initLCD()
Schreeker 14:2543a798b4a1 78 * Zweck: Anzeigen des Initialtextes zum Programmstart.
Schreeker 14:2543a798b4a1 79 * Parameter:
Schreeker 14:2543a798b4a1 80 keine
Schreeker 14:2543a798b4a1 81 * return Parameter:
Schreeker 14:2543a798b4a1 82 keine
Schreeker 14:2543a798b4a1 83 *************************************************************************************/
Schreeker 14:2543a798b4a1 84 void initLCD(){
Schreeker 14:2543a798b4a1 85 /* Löschen des Bildschirmes */
Schreeker 14:2543a798b4a1 86 olcd.cls();
Schreeker 14:2543a798b4a1 87
Schreeker 14:2543a798b4a1 88 /* Anzeigen des Initialtextes */
Schreeker 14:2543a798b4a1 89 olcd.locate(3,0);
Schreeker 14:2543a798b4a1 90 olcd.printf("Lagesensor");
Schreeker 14:2543a798b4a1 91
Schreeker 14:2543a798b4a1 92 olcd.locate(1,1);
Schreeker 14:2543a798b4a1 93 olcd.printf("Nils und Simon");
Schreeker 11:5861bc23022a 94 }