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

Dependencies:   TextLCD mbed

LCD.cpp

Committer:
Schreeker
Date:
2016-07-06
Revision:
17:0b9e7a05b203
Parent:
16:9b20d24aae18
Child:
20:094cdb790dcb

File content as of revision 17:0b9e7a05b203:

/********************************************************************************** 
* File name:    LCD.cpp
* Zweck:        Beinhaltet alle Funktionen zur Ausgabe von Informationen
                auf dem LCD-Display, sowie Funktionen zum Debuggen des Projektes
* Author:       Simon Rutzen, Nils Kemmer
* Changes:      keine
***********************************************************************************/

/* Includes */
#include "LCD.h"

/* Objekt zum Steuern des Bildschirmes */
TextLCD olcd(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8, TextLCD::LCD20x2); // rs, e, d4-d7

/************************************************************************************
* void vLCDSet(word wWinkelX, word wWinkelY)
* Zweck:    Funktion zur Darstellung der aktuellen X- und Y-Lage (in °)
            des Beschleunigungssensores auf dem LCD-Display
* Parameter:
    wWinkelX: aktueller Winkel bezogen auf die X-Achse des Beschleunigungssensores
    wWinkelY: aktueller Winkel bezogen auf die Y-Achse des Beschleunigungssensores
    bStateLCD: Zustandsvariabel, Anzeigen der Winkel bei Normallage (0) oder Anzeigen
               der Textnachricht Überkopflage ohne Winkelangaben.
* return Parameter:
    keine
*************************************************************************************/
void vLCDSet(int16 wWinkelX, int16 wWinkelY, byte bStateLCD){
    /* Bildschirm bereinigen*/
    olcd.cls();
    
    /* Einstellen des Anzeigemodus */
    switch(bStateLCD){
        case 0:{
            /* Ü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
            }
            break;
        case 1:{
            /* Anzeigen der Überkopflage des Sensores */
            olcd.locate(0,0);
            olcd.printf("!Ueberkopflage!");
            }
        default: break;
        }
}    

/************************************************************************************
* void vLCDDebug(signed short int wWinkelX, signed short int wWinkelY, signed short int wWinkelZ)
* Zweck:    Debugfunktion zum Anzeigen der aktuellen Messwerte des Beschleunigungssensores
            zwecks Kalibrierung der einzelnen Nullpunkte der Achsen
* 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
    Hinweis: Alle Winkelwerte sind Spannungswerte des Sensores mit Faktor 10000 multipliziert!
* return Parameter:
    keine
*************************************************************************************/
void vLCDDebug(int16 wWinkelX, int16 wWinkelY, int16 wWinkelZ){
    /* Bildschirm bereinigen */
    olcd.cls();
    
    /* Anzeigen der einzelnen Parameter, oben X und Y, unten Z */
    olcd.locate(0,0);
    olcd.printf("X:%i Y:%i",wWinkelX,wWinkelY);   
    olcd.locate(0,1);
    olcd.printf("Z:%i",wWinkelZ); 
    }
    
/************************************************************************************
* void initLCD()
* Zweck:    Anzeigen des Initialtextes zum Programmstart.
* Parameter:
    keine
* return Parameter:
    keine
*************************************************************************************/    
void initLCD(){
    /* Löschen des Bildschirmes */
    olcd.cls();
    
    /* Anzeigen des Initialtextes */
    olcd.locate(3,0);
    olcd.printf("Lagesensor");
    
    olcd.locate(1,1);
    olcd.printf("Nils und Simon");
    }