
Programm zur Darstellung der Lage eines Objektes im Raum mit Hilfe eines Beschleunigungssensores, 4 LED's und einem LCD-Display.
LCD.cpp@15:462c8c89fe35, 2016-07-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |