Display driver for the Vives city game
Display.cpp@1:2196e0eba43a, 2017-04-25 (annotated)
- Committer:
- atomicLogic
- Date:
- Tue Apr 25 20:10:13 2017 +0000
- Revision:
- 1:2196e0eba43a
- Parent:
- 0:80ce68cdf568
- Child:
- 2:dd81a3e3c360
Lcd interface
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
atomicLogic | 0:80ce68cdf568 | 1 | #include "Display.h" |
atomicLogic | 0:80ce68cdf568 | 2 | #include "TextLCD.h" |
atomicLogic | 0:80ce68cdf568 | 3 | #include "CostumCharacters.h" |
atomicLogic | 1:2196e0eba43a | 4 | #include "Mission.h" |
atomicLogic | 0:80ce68cdf568 | 5 | #include <string> |
atomicLogic | 0:80ce68cdf568 | 6 | |
atomicLogic | 0:80ce68cdf568 | 7 | namespace VivesCityGame |
atomicLogic | 0:80ce68cdf568 | 8 | { |
atomicLogic | 0:80ce68cdf568 | 9 | |
atomicLogic | 0:80ce68cdf568 | 10 | Display::Display() |
atomicLogic | 0:80ce68cdf568 | 11 | { |
atomicLogic | 0:80ce68cdf568 | 12 | emptyRow = " "; |
atomicLogic | 0:80ce68cdf568 | 13 | lcd = new TextLCD( PTC5, PTC7, PTC0, PTC9, PTC8, PTC1, TextLCD::LCD20x4 ); |
atomicLogic | 0:80ce68cdf568 | 14 | costumCharacters = new CostumCharacters( lcd ); |
atomicLogic | 0:80ce68cdf568 | 15 | |
atomicLogic | 0:80ce68cdf568 | 16 | costumCharacters->setBatteryIcon( 0 ); |
atomicLogic | 0:80ce68cdf568 | 17 | costumCharacters->setGpsIcon( 1 ); //op 0 maar uitzonderlijk op 1 voor demo |
atomicLogic | 0:80ce68cdf568 | 18 | costumCharacters->setLoraIcon( 1 ); // zelfde als hierboven |
atomicLogic | 0:80ce68cdf568 | 19 | costumCharacters->setLoraStatusIcon( 0 ); |
atomicLogic | 0:80ce68cdf568 | 20 | |
atomicLogic | 0:80ce68cdf568 | 21 | lcd->cls(); |
atomicLogic | 0:80ce68cdf568 | 22 | lcd->printf("\3\4 00:00:00 \2\1"); |
atomicLogic | 0:80ce68cdf568 | 23 | } |
atomicLogic | 0:80ce68cdf568 | 24 | |
atomicLogic | 0:80ce68cdf568 | 25 | void Display::setTime(int hours, int minutes, int seconds) |
atomicLogic | 0:80ce68cdf568 | 26 | { |
atomicLogic | 0:80ce68cdf568 | 27 | char buffer[10]; |
atomicLogic | 0:80ce68cdf568 | 28 | std::string time = ""; |
atomicLogic | 0:80ce68cdf568 | 29 | |
atomicLogic | 0:80ce68cdf568 | 30 | |
atomicLogic | 0:80ce68cdf568 | 31 | if(hours <= 9) { time.append( "0" ); } |
atomicLogic | 0:80ce68cdf568 | 32 | std::sprintf(buffer, "%d", hours); |
atomicLogic | 0:80ce68cdf568 | 33 | time.append( std::string(buffer) ); |
atomicLogic | 0:80ce68cdf568 | 34 | |
atomicLogic | 0:80ce68cdf568 | 35 | time.append( ":" ); |
atomicLogic | 0:80ce68cdf568 | 36 | |
atomicLogic | 0:80ce68cdf568 | 37 | if(minutes <= 9) { time.append( "0" ); } |
atomicLogic | 0:80ce68cdf568 | 38 | std::sprintf(buffer, "%d", minutes); |
atomicLogic | 0:80ce68cdf568 | 39 | time.append( std::string(buffer) ); |
atomicLogic | 0:80ce68cdf568 | 40 | |
atomicLogic | 0:80ce68cdf568 | 41 | time.append( ":" ); |
atomicLogic | 0:80ce68cdf568 | 42 | |
atomicLogic | 0:80ce68cdf568 | 43 | if(seconds <= 9) { time.append( "0" ); } |
atomicLogic | 0:80ce68cdf568 | 44 | std::sprintf(buffer, "%d", seconds); |
atomicLogic | 0:80ce68cdf568 | 45 | time.append( std::string(buffer) ); |
atomicLogic | 0:80ce68cdf568 | 46 | |
atomicLogic | 0:80ce68cdf568 | 47 | lcd->locate(6,0); |
atomicLogic | 0:80ce68cdf568 | 48 | lcd->printf( time.c_str()); |
atomicLogic | 0:80ce68cdf568 | 49 | } |
atomicLogic | 0:80ce68cdf568 | 50 | |
atomicLogic | 0:80ce68cdf568 | 51 | void Display::setStatusBattery( float batteryLvl ) |
atomicLogic | 0:80ce68cdf568 | 52 | { |
atomicLogic | 0:80ce68cdf568 | 53 | if ( 1 >= batteryLvl && batteryLvl >= 0 ) |
atomicLogic | 0:80ce68cdf568 | 54 | { |
atomicLogic | 0:80ce68cdf568 | 55 | int lvl; |
atomicLogic | 0:80ce68cdf568 | 56 | batteryLvl = batteryLvl * 5; //get size of replace 5 |
atomicLogic | 0:80ce68cdf568 | 57 | lvl = (int) batteryLvl; |
atomicLogic | 0:80ce68cdf568 | 58 | costumCharacters->setBatteryIcon( lvl ); |
atomicLogic | 0:80ce68cdf568 | 59 | } |
atomicLogic | 0:80ce68cdf568 | 60 | } |
atomicLogic | 0:80ce68cdf568 | 61 | |
atomicLogic | 0:80ce68cdf568 | 62 | void Display::setStatusLora( bool lora, int loraStatus ) |
atomicLogic | 0:80ce68cdf568 | 63 | { |
atomicLogic | 0:80ce68cdf568 | 64 | costumCharacters->setLoraIcon( lora ); |
atomicLogic | 0:80ce68cdf568 | 65 | costumCharacters->setLoraStatusIcon( loraStatus ); |
atomicLogic | 0:80ce68cdf568 | 66 | } |
atomicLogic | 0:80ce68cdf568 | 67 | |
atomicLogic | 0:80ce68cdf568 | 68 | void Display::setStatusGps( bool gpsFix ) |
atomicLogic | 0:80ce68cdf568 | 69 | { |
atomicLogic | 0:80ce68cdf568 | 70 | costumCharacters->setGpsIcon( gpsFix ); |
atomicLogic | 0:80ce68cdf568 | 71 | } |
atomicLogic | 0:80ce68cdf568 | 72 | |
atomicLogic | 0:80ce68cdf568 | 73 | void Display::setWelcomeScreen( void ) |
atomicLogic | 0:80ce68cdf568 | 74 | { |
atomicLogic | 0:80ce68cdf568 | 75 | for(int i; i < 7; i++) |
atomicLogic | 0:80ce68cdf568 | 76 | { |
atomicLogic | 0:80ce68cdf568 | 77 | Display::clearScreen(); |
atomicLogic | 0:80ce68cdf568 | 78 | lcd->locate( i, 1 ); |
atomicLogic | 0:80ce68cdf568 | 79 | lcd->printf( "Welcome" ); |
atomicLogic | 0:80ce68cdf568 | 80 | lcd->locate( i+1, 2 ); |
atomicLogic | 0:80ce68cdf568 | 81 | lcd->printf( "to the" ); |
atomicLogic | 0:80ce68cdf568 | 82 | lcd->locate( i-3, 3 ); |
atomicLogic | 0:80ce68cdf568 | 83 | lcd->printf( "Vives City Game" ); |
atomicLogic | 0:80ce68cdf568 | 84 | wait_ms( 200 ); |
atomicLogic | 0:80ce68cdf568 | 85 | } |
atomicLogic | 0:80ce68cdf568 | 86 | |
atomicLogic | 0:80ce68cdf568 | 87 | } |
atomicLogic | 0:80ce68cdf568 | 88 | |
atomicLogic | 0:80ce68cdf568 | 89 | void Display::setMissionScreen( Mission * currentMission ) |
atomicLogic | 0:80ce68cdf568 | 90 | { |
atomicLogic | 0:80ce68cdf568 | 91 | std::string description = currentMission->getDescription(); |
atomicLogic | 0:80ce68cdf568 | 92 | double distance = currentMission->getDistanceToTarget(); |
atomicLogic | 0:80ce68cdf568 | 93 | int distanceInt = (int) distance; |
atomicLogic | 0:80ce68cdf568 | 94 | |
atomicLogic | 0:80ce68cdf568 | 95 | Display::clearScreen(); |
atomicLogic | 0:80ce68cdf568 | 96 | lcd->locate( 0, 1 ); |
atomicLogic | 0:80ce68cdf568 | 97 | lcd->printf( description.c_str() ); |
atomicLogic | 0:80ce68cdf568 | 98 | |
atomicLogic | 0:80ce68cdf568 | 99 | char buffer[10]; |
atomicLogic | 0:80ce68cdf568 | 100 | std::string distanceString = ""; |
atomicLogic | 0:80ce68cdf568 | 101 | distanceString.append( "Distance: " ); |
atomicLogic | 0:80ce68cdf568 | 102 | std::sprintf(buffer, "%d", distanceInt); |
atomicLogic | 0:80ce68cdf568 | 103 | distanceString.append( std::string(buffer) ); |
atomicLogic | 0:80ce68cdf568 | 104 | distanceString.append( "m" ); |
atomicLogic | 0:80ce68cdf568 | 105 | |
atomicLogic | 0:80ce68cdf568 | 106 | lcd->locate( 0, 3 ); |
atomicLogic | 0:80ce68cdf568 | 107 | lcd->printf( distanceString.c_str() ); |
atomicLogic | 0:80ce68cdf568 | 108 | } |
atomicLogic | 0:80ce68cdf568 | 109 | |
atomicLogic | 0:80ce68cdf568 | 110 | void Display::setEndScreen( void ) |
atomicLogic | 0:80ce68cdf568 | 111 | { |
atomicLogic | 0:80ce68cdf568 | 112 | Display::clearScreen(); |
atomicLogic | 0:80ce68cdf568 | 113 | |
atomicLogic | 0:80ce68cdf568 | 114 | for(int i; i < 7; i++) |
atomicLogic | 0:80ce68cdf568 | 115 | { |
atomicLogic | 0:80ce68cdf568 | 116 | lcd->locate( 2, 1 ); |
atomicLogic | 0:80ce68cdf568 | 117 | lcd->printf( "Congratulations!" ); |
atomicLogic | 0:80ce68cdf568 | 118 | wait_ms( 120 ); |
atomicLogic | 0:80ce68cdf568 | 119 | Display::clearScreen(); |
atomicLogic | 0:80ce68cdf568 | 120 | wait_ms( 100 ); |
atomicLogic | 0:80ce68cdf568 | 121 | } |
atomicLogic | 0:80ce68cdf568 | 122 | |
atomicLogic | 0:80ce68cdf568 | 123 | lcd->locate( 2, 1 ); |
atomicLogic | 0:80ce68cdf568 | 124 | lcd->printf( "Congratulations!" ); |
atomicLogic | 0:80ce68cdf568 | 125 | lcd->locate( 1, 2 ); |
atomicLogic | 0:80ce68cdf568 | 126 | lcd->printf( "You finished this" ); |
atomicLogic | 0:80ce68cdf568 | 127 | lcd->locate( 3, 3 ); |
atomicLogic | 0:80ce68cdf568 | 128 | lcd->printf( "awesome game!" ); |
atomicLogic | 0:80ce68cdf568 | 129 | |
atomicLogic | 0:80ce68cdf568 | 130 | } |
atomicLogic | 0:80ce68cdf568 | 131 | |
atomicLogic | 0:80ce68cdf568 | 132 | void Display::clearScreen( void ) |
atomicLogic | 0:80ce68cdf568 | 133 | { |
atomicLogic | 0:80ce68cdf568 | 134 | lcd->locate(0,1); |
atomicLogic | 0:80ce68cdf568 | 135 | lcd->printf( emptyRow.c_str() ); |
atomicLogic | 0:80ce68cdf568 | 136 | lcd->locate(0,2); |
atomicLogic | 0:80ce68cdf568 | 137 | lcd->printf( emptyRow.c_str() ); |
atomicLogic | 0:80ce68cdf568 | 138 | lcd->locate(0,3); |
atomicLogic | 0:80ce68cdf568 | 139 | lcd->printf( emptyRow.c_str()); |
atomicLogic | 0:80ce68cdf568 | 140 | } |
atomicLogic | 0:80ce68cdf568 | 141 | |
atomicLogic | 0:80ce68cdf568 | 142 | }; |