
Programm zur Darstellung der Lage eines Objektes im Raum mit Hilfe eines Beschleunigungssensores, 4 LED's und einem LCD-Display.
LCD.cpp@17:0b9e7a05b203, 2016-07-06 (annotated)
- 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?
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 | 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 | } |