Display driver for the Vives city game

Dependencies:   TextLCD

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?

UserRevisionLine numberNew 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 };