Display text on screen.

Dependencies:   TextLCD mbed MaxSonar RTC-DS1307

Fork of TextLCD_HelloWorld by Simon Ford

Committer:
aueangpanit
Date:
Thu May 25 13:19:04 2017 +0000
Revision:
13:95eea857ed37
Parent:
12:75b8081e1304
Child:
14:2bde99b3345c
working ball physics

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 1:7418a52375a0 1 // Hello World! for the TextLCD
simon 1:7418a52375a0 2
simon 0:334327d1a416 3 #include "mbed.h"
aueangpanit 4:c669026b6f6e 4 #include <string>
simon 0:334327d1a416 5 #include "TextLCD.h"
aueangpanit 5:2f13ec8efe0b 6 #include "MaxSonar.h"
aueangpanit 5:2f13ec8efe0b 7 using std::string;
simon 0:334327d1a416 8
aueangpanit 3:5e0ba6e35849 9 TextLCD lcd(PTE30, PTE29, PTE23, PTE22, PTE21, PTE20); // rs, e, d4-d7
aueangpanit 3:5e0ba6e35849 10
aueangpanit 7:f00ddf85cacc 11 DigitalOut questionScreen(PTE3);
aueangpanit 4:c669026b6f6e 12 DigitalOut screen1(PTE5);
aueangpanit 4:c669026b6f6e 13 DigitalOut screen2(PTE4);
aueangpanit 4:c669026b6f6e 14
aueangpanit 9:39190ed25585 15 //All functions for controlling screens
aueangpanit 4:c669026b6f6e 16 void UpdateScreen(DigitalOut screen, string text);
aueangpanit 5:2f13ec8efe0b 17 void UpdateScreen(DigitalOut screen, char text[1024]);
aueangpanit 10:21c24327e65f 18 void UpdateScreen(DigitalOut screen, int firstLineLocation, string firstLineText, int secondLineLocation, string secondLineText);
aueangpanit 11:f6a39ae5ecbc 19 string GetLocationSpaces(int location);
aueangpanit 9:39190ed25585 20 void ClearAllScreen();
aueangpanit 9:39190ed25585 21
aueangpanit 9:39190ed25585 22 //All funcitons for range sensors
aueangpanit 9:39190ed25585 23 void UpdateRange();
aueangpanit 9:39190ed25585 24
aueangpanit 9:39190ed25585 25 //All functions for menu page
aueangpanit 9:39190ed25585 26 void GameOption();
aueangpanit 9:39190ed25585 27 void StartGame(int gameOptionLocation);
aueangpanit 9:39190ed25585 28
aueangpanit 9:39190ed25585 29 //All functions for exit screen menu
aueangpanit 9:39190ed25585 30 bool ExitScreen();
aueangpanit 9:39190ed25585 31 bool CheckExit(float r1, float r2);
aueangpanit 9:39190ed25585 32
aueangpanit 9:39190ed25585 33 //all functions for Multi-Maths game
aueangpanit 9:39190ed25585 34 void MultiChoice();
aueangpanit 8:8ce2ab8191cf 35 void DisplayNewQuestion();
aueangpanit 8:8ce2ab8191cf 36 bool CheckCorrect(int screenNumber);
aueangpanit 8:8ce2ab8191cf 37
aueangpanit 8:8ce2ab8191cf 38 string questions[4] = {"What is 2*2?",
aueangpanit 8:8ce2ab8191cf 39 "What is 5*2?",
aueangpanit 8:8ce2ab8191cf 40 "what is 2+2?",
aueangpanit 8:8ce2ab8191cf 41 "What is 5*4?"};
aueangpanit 8:8ce2ab8191cf 42
aueangpanit 8:8ce2ab8191cf 43 string screen1Answers[4] = {"4 ", "10 ", "5 ", "18 "};
aueangpanit 8:8ce2ab8191cf 44 string screen2Answers[4] = {"5 ", "8 ", "4 ", "20 "};
aueangpanit 8:8ce2ab8191cf 45 int correctScreen[4] = {1, 1, 2, 2}; //1 = screen1; 2 = screen2;
aueangpanit 8:8ce2ab8191cf 46
aueangpanit 8:8ce2ab8191cf 47 int questionCount = 0;
simon 0:334327d1a416 48
aueangpanit 11:f6a39ae5ecbc 49 //all functions for pong game
aueangpanit 11:f6a39ae5ecbc 50 void Pong();
aueangpanit 13:95eea857ed37 51 void UpdatePlayerLocation();
aueangpanit 13:95eea857ed37 52 void UpdateBallLocation();
aueangpanit 13:95eea857ed37 53 void Draw();
aueangpanit 9:39190ed25585 54
aueangpanit 9:39190ed25585 55 MaxSonar *range1;
aueangpanit 5:2f13ec8efe0b 56 float r1;
aueangpanit 6:fa30f8383b99 57
aueangpanit 6:fa30f8383b99 58 MaxSonar *range2;
aueangpanit 6:fa30f8383b99 59 float r2;
aueangpanit 9:39190ed25585 60 int main() {
aueangpanit 11:f6a39ae5ecbc 61
aueangpanit 12:75b8081e1304 62 //UpdateScreen(questionScreen, 5, "0", 7, "___");
aueangpanit 11:f6a39ae5ecbc 63
aueangpanit 11:f6a39ae5ecbc 64 /*questionScreen = 1;
aueangpanit 11:f6a39ae5ecbc 65
aueangpanit 11:f6a39ae5ecbc 66 for(int i = 0; i < 10; i++){
aueangpanit 11:f6a39ae5ecbc 67 lcd.cls();
aueangpanit 11:f6a39ae5ecbc 68 lcd.locate(2, 0);
aueangpanit 11:f6a39ae5ecbc 69 lcd.printf("0");
aueangpanit 11:f6a39ae5ecbc 70 lcd.locate(2, 1);
aueangpanit 11:f6a39ae5ecbc 71 lcd.printf("===");
aueangpanit 11:f6a39ae5ecbc 72 }*/
aueangpanit 12:75b8081e1304 73 //wait(5);
aueangpanit 10:21c24327e65f 74
aueangpanit 5:2f13ec8efe0b 75 // Create and configure object for 3.3V powered LV-series device,
aueangpanit 5:2f13ec8efe0b 76 // accessed with analog reads (in cm) on p16, triggered by p7.
aueangpanit 5:2f13ec8efe0b 77 range1 = new MaxSonar(MS_LV, MS_ANALOG, PTB8, PTC2);
aueangpanit 5:2f13ec8efe0b 78 range1->setVoltage(3.3);
aueangpanit 5:2f13ec8efe0b 79 range1->setUnits(MS_CM);
aueangpanit 5:2f13ec8efe0b 80
aueangpanit 6:fa30f8383b99 81 range2 = new MaxSonar(MS_LV, MS_ANALOG, PTB9, PTB3);
aueangpanit 6:fa30f8383b99 82 range2->setVoltage(3.3);
aueangpanit 6:fa30f8383b99 83 range2->setUnits(MS_CM);
aueangpanit 9:39190ed25585 84
aueangpanit 9:39190ed25585 85 ClearAllScreen();
aueangpanit 9:39190ed25585 86
aueangpanit 13:95eea857ed37 87 Pong();
aueangpanit 13:95eea857ed37 88 //GameOption();
aueangpanit 9:39190ed25585 89 }
aueangpanit 9:39190ed25585 90
aueangpanit 9:39190ed25585 91 int gameOptionLocation = 0;
aueangpanit 10:21c24327e65f 92 string gameName[2] = {"Muti-Maths", "Pong!"};
aueangpanit 9:39190ed25585 93 void GameOption()
aueangpanit 9:39190ed25585 94 {
aueangpanit 9:39190ed25585 95 ClearAllScreen();
aueangpanit 9:39190ed25585 96
aueangpanit 9:39190ed25585 97 UpdateScreen(questionScreen, "Select a game: >" + gameName[gameOptionLocation]);
aueangpanit 9:39190ed25585 98
aueangpanit 9:39190ed25585 99 bool gameOption = true;
aueangpanit 9:39190ed25585 100 while(gameOption)
aueangpanit 9:39190ed25585 101 {
aueangpanit 9:39190ed25585 102 UpdateRange();
aueangpanit 9:39190ed25585 103
aueangpanit 9:39190ed25585 104 if(r1 < 25 && r2 < 25)
aueangpanit 9:39190ed25585 105 {
aueangpanit 9:39190ed25585 106 UpdateScreen(questionScreen, "Entering " + gameName[gameOptionLocation] + ".....");
aueangpanit 9:39190ed25585 107 wait(1);
aueangpanit 9:39190ed25585 108
aueangpanit 9:39190ed25585 109 gameOption = false;
aueangpanit 9:39190ed25585 110 }
aueangpanit 6:fa30f8383b99 111
aueangpanit 9:39190ed25585 112 else if(r1 < 20)
aueangpanit 9:39190ed25585 113 {
aueangpanit 9:39190ed25585 114 if(gameOptionLocation > 0) { gameOptionLocation--; UpdateScreen(questionScreen, "Select a game: >" + gameName[gameOptionLocation]); }
aueangpanit 9:39190ed25585 115 }
aueangpanit 9:39190ed25585 116 else if(r2 < 20)
aueangpanit 9:39190ed25585 117 {
aueangpanit 9:39190ed25585 118 if(gameOptionLocation < 1) { gameOptionLocation++; UpdateScreen(questionScreen, "Select a game: >" + gameName[gameOptionLocation]); }
aueangpanit 9:39190ed25585 119 }
aueangpanit 9:39190ed25585 120 }
aueangpanit 9:39190ed25585 121
aueangpanit 9:39190ed25585 122 StartGame(gameOptionLocation);
aueangpanit 9:39190ed25585 123 }
aueangpanit 9:39190ed25585 124
aueangpanit 9:39190ed25585 125 void StartGame(int gameOptionLocation)
aueangpanit 9:39190ed25585 126 {
aueangpanit 9:39190ed25585 127 switch(gameOptionLocation)
aueangpanit 9:39190ed25585 128 {
aueangpanit 9:39190ed25585 129 case 0:
aueangpanit 9:39190ed25585 130 MultiChoice();
aueangpanit 9:39190ed25585 131 case 1:
aueangpanit 11:f6a39ae5ecbc 132 Pong();
aueangpanit 9:39190ed25585 133 }
aueangpanit 9:39190ed25585 134 }
aueangpanit 9:39190ed25585 135
aueangpanit 9:39190ed25585 136 void MultiChoice()
aueangpanit 9:39190ed25585 137 {
aueangpanit 9:39190ed25585 138 bool multiMaths = true;
aueangpanit 9:39190ed25585 139
aueangpanit 9:39190ed25585 140 DisplayNewQuestion();
aueangpanit 9:39190ed25585 141 while(multiMaths) {
aueangpanit 9:39190ed25585 142 UpdateRange();
aueangpanit 9:39190ed25585 143
aueangpanit 9:39190ed25585 144 if(CheckExit(r1, r2))
aueangpanit 9:39190ed25585 145 {
aueangpanit 9:39190ed25585 146 GameOption();
aueangpanit 9:39190ed25585 147 }
aueangpanit 9:39190ed25585 148
aueangpanit 8:8ce2ab8191cf 149 if(r1 < 20)
aueangpanit 8:8ce2ab8191cf 150 {
aueangpanit 8:8ce2ab8191cf 151 if(CheckCorrect(1))
aueangpanit 8:8ce2ab8191cf 152 {
aueangpanit 8:8ce2ab8191cf 153 UpdateScreen(questionScreen, "Correct!");
aueangpanit 8:8ce2ab8191cf 154 wait(1);
aueangpanit 8:8ce2ab8191cf 155 DisplayNewQuestion();
aueangpanit 8:8ce2ab8191cf 156 }
aueangpanit 8:8ce2ab8191cf 157 else
aueangpanit 8:8ce2ab8191cf 158 {
aueangpanit 8:8ce2ab8191cf 159 UpdateScreen(questionScreen, "Try Again!");
aueangpanit 8:8ce2ab8191cf 160 wait(1);
aueangpanit 8:8ce2ab8191cf 161 UpdateScreen(questionScreen, questions[questionCount]);
aueangpanit 8:8ce2ab8191cf 162 }
aueangpanit 8:8ce2ab8191cf 163 }
aueangpanit 8:8ce2ab8191cf 164 if(r2 < 20)
aueangpanit 8:8ce2ab8191cf 165 {
aueangpanit 8:8ce2ab8191cf 166 if(CheckCorrect(2))
aueangpanit 8:8ce2ab8191cf 167 {
aueangpanit 8:8ce2ab8191cf 168 UpdateScreen(questionScreen, "Correct!");
aueangpanit 8:8ce2ab8191cf 169 wait(1);
aueangpanit 8:8ce2ab8191cf 170 DisplayNewQuestion();
aueangpanit 8:8ce2ab8191cf 171 }
aueangpanit 8:8ce2ab8191cf 172 else
aueangpanit 8:8ce2ab8191cf 173 {
aueangpanit 8:8ce2ab8191cf 174 UpdateScreen(questionScreen, "Try Again!");
aueangpanit 8:8ce2ab8191cf 175 wait(1);
aueangpanit 8:8ce2ab8191cf 176 UpdateScreen(questionScreen, questions[questionCount]);
aueangpanit 8:8ce2ab8191cf 177 }
aueangpanit 8:8ce2ab8191cf 178 }
aueangpanit 8:8ce2ab8191cf 179
aueangpanit 5:2f13ec8efe0b 180 wait(0.5);
aueangpanit 5:2f13ec8efe0b 181 }
aueangpanit 4:c669026b6f6e 182 }
aueangpanit 4:c669026b6f6e 183
aueangpanit 8:8ce2ab8191cf 184 void DisplayNewQuestion()
aueangpanit 8:8ce2ab8191cf 185 {
aueangpanit 8:8ce2ab8191cf 186 if(questionCount >= 3)
aueangpanit 8:8ce2ab8191cf 187 {
aueangpanit 8:8ce2ab8191cf 188 questionCount = 0;
aueangpanit 8:8ce2ab8191cf 189 }
aueangpanit 8:8ce2ab8191cf 190 else
aueangpanit 8:8ce2ab8191cf 191 {
aueangpanit 8:8ce2ab8191cf 192 questionCount++;
aueangpanit 8:8ce2ab8191cf 193 }
aueangpanit 8:8ce2ab8191cf 194
aueangpanit 8:8ce2ab8191cf 195 UpdateScreen(questionScreen, questions[questionCount]);
aueangpanit 8:8ce2ab8191cf 196 UpdateScreen(screen1, screen1Answers[questionCount]);
aueangpanit 8:8ce2ab8191cf 197 UpdateScreen(screen2, screen2Answers[questionCount]);
aueangpanit 8:8ce2ab8191cf 198 }
aueangpanit 8:8ce2ab8191cf 199
aueangpanit 8:8ce2ab8191cf 200 bool CheckCorrect(int screenNumber)
aueangpanit 8:8ce2ab8191cf 201 {
aueangpanit 8:8ce2ab8191cf 202 if(screenNumber == correctScreen[questionCount])
aueangpanit 8:8ce2ab8191cf 203 {
aueangpanit 8:8ce2ab8191cf 204 return true;
aueangpanit 8:8ce2ab8191cf 205 }
aueangpanit 8:8ce2ab8191cf 206 else
aueangpanit 8:8ce2ab8191cf 207 {
aueangpanit 8:8ce2ab8191cf 208 return false;
aueangpanit 8:8ce2ab8191cf 209 }
aueangpanit 8:8ce2ab8191cf 210 }
aueangpanit 8:8ce2ab8191cf 211
aueangpanit 13:95eea857ed37 212 //player
aueangpanit 13:95eea857ed37 213 int pLocation = 5;
aueangpanit 13:95eea857ed37 214 string player = "___";
aueangpanit 13:95eea857ed37 215
aueangpanit 13:95eea857ed37 216 //ball
aueangpanit 13:95eea857ed37 217 string ball = 0;
aueangpanit 13:95eea857ed37 218
aueangpanit 13:95eea857ed37 219 int ballPX = 0;
aueangpanit 13:95eea857ed37 220 int ballPY = 0;
aueangpanit 13:95eea857ed37 221
aueangpanit 13:95eea857ed37 222 int ballVX = 1;
aueangpanit 13:95eea857ed37 223 int ballVY = 1;
aueangpanit 13:95eea857ed37 224
aueangpanit 13:95eea857ed37 225 void Pong() //this is a version of pong where you can't see the middle part of the board (15*10 pixel but only 4 horrizontal pixels are displaying)
aueangpanit 9:39190ed25585 226 {
aueangpanit 12:75b8081e1304 227 bool pong = true;
aueangpanit 12:75b8081e1304 228
aueangpanit 13:95eea857ed37 229
aueangpanit 12:75b8081e1304 230
aueangpanit 12:75b8081e1304 231
aueangpanit 12:75b8081e1304 232
aueangpanit 12:75b8081e1304 233 UpdateScreen(questionScreen, "Welcome to Pong!");
aueangpanit 12:75b8081e1304 234 UpdateScreen(screen2, 0, "", pLocation, player);
aueangpanit 12:75b8081e1304 235
aueangpanit 12:75b8081e1304 236 while(pong)
aueangpanit 12:75b8081e1304 237 {
aueangpanit 12:75b8081e1304 238 UpdateRange();
aueangpanit 12:75b8081e1304 239 if(CheckExit(r1, r2))
aueangpanit 12:75b8081e1304 240 {
aueangpanit 12:75b8081e1304 241 GameOption();
aueangpanit 12:75b8081e1304 242 }
aueangpanit 9:39190ed25585 243
aueangpanit 13:95eea857ed37 244 UpdatePlayerLocation();
aueangpanit 13:95eea857ed37 245 UpdateBallLocation();
aueangpanit 12:75b8081e1304 246
aueangpanit 13:95eea857ed37 247 Draw();
aueangpanit 12:75b8081e1304 248 }
aueangpanit 9:39190ed25585 249 }
aueangpanit 9:39190ed25585 250
aueangpanit 13:95eea857ed37 251 void UpdatePlayerLocation()
aueangpanit 13:95eea857ed37 252 {
aueangpanit 13:95eea857ed37 253 if(r2 < 20)
aueangpanit 13:95eea857ed37 254 {
aueangpanit 13:95eea857ed37 255 if(pLocation > 0)
aueangpanit 13:95eea857ed37 256 {
aueangpanit 13:95eea857ed37 257 pLocation--;
aueangpanit 13:95eea857ed37 258 }
aueangpanit 13:95eea857ed37 259 }
aueangpanit 13:95eea857ed37 260 if(r1 < 20)
aueangpanit 13:95eea857ed37 261 {
aueangpanit 13:95eea857ed37 262 if(pLocation < 12)
aueangpanit 13:95eea857ed37 263 {
aueangpanit 13:95eea857ed37 264 pLocation++;
aueangpanit 13:95eea857ed37 265 }
aueangpanit 13:95eea857ed37 266 }
aueangpanit 13:95eea857ed37 267
aueangpanit 13:95eea857ed37 268 wait(0.5);
aueangpanit 13:95eea857ed37 269 }
aueangpanit 13:95eea857ed37 270
aueangpanit 13:95eea857ed37 271 void UpdateBallLocation()
aueangpanit 13:95eea857ed37 272 {
aueangpanit 13:95eea857ed37 273 if(ballPY == 0) { ballVY = 1; }
aueangpanit 13:95eea857ed37 274 if(ballPY == 9) { ballVY = -1; }
aueangpanit 13:95eea857ed37 275 if(ballPX == 0) { ballVX = 1; }
aueangpanit 13:95eea857ed37 276 if(ballPX == 15) { ballVX = -1; }
aueangpanit 13:95eea857ed37 277
aueangpanit 13:95eea857ed37 278 ballPY += ballVY;
aueangpanit 13:95eea857ed37 279 ballPX += ballVX;
aueangpanit 13:95eea857ed37 280 }
aueangpanit 13:95eea857ed37 281
aueangpanit 13:95eea857ed37 282 void Draw()
aueangpanit 13:95eea857ed37 283 {
aueangpanit 13:95eea857ed37 284 //draw ball also
aueangpanit 13:95eea857ed37 285 if(ballPY < 2 || ballPY > 7)
aueangpanit 13:95eea857ed37 286 {
aueangpanit 13:95eea857ed37 287 if(ballPY == 0) { UpdateScreen(screen1, ballPX, "0", 0, ""); }
aueangpanit 13:95eea857ed37 288 if(ballPY == 1) { UpdateScreen(screen1, 0, "", ballPX, "0"); }
aueangpanit 13:95eea857ed37 289 if(ballPY == 8) { UpdateScreen(screen2, ballPX, "0", 0, ""); }
aueangpanit 13:95eea857ed37 290 if(ballPY == 9) { UpdateScreen(screen2, 0, "", ballPX, "0"); }
aueangpanit 13:95eea857ed37 291 }
aueangpanit 13:95eea857ed37 292 else //only draw player and enermy
aueangpanit 13:95eea857ed37 293 {
aueangpanit 13:95eea857ed37 294 ClearAllScreen();
aueangpanit 13:95eea857ed37 295 }
aueangpanit 13:95eea857ed37 296 }
aueangpanit 13:95eea857ed37 297
aueangpanit 13:95eea857ed37 298
aueangpanit 13:95eea857ed37 299
aueangpanit 9:39190ed25585 300 string exitOption[2] = {"Yes", "No"};
aueangpanit 9:39190ed25585 301 bool CheckExit(float r1, float r2)
aueangpanit 9:39190ed25585 302 {
aueangpanit 9:39190ed25585 303 if(r1 < 25 && r2 < 25)
aueangpanit 9:39190ed25585 304 {
aueangpanit 9:39190ed25585 305 return ExitScreen();
aueangpanit 9:39190ed25585 306 }
aueangpanit 9:39190ed25585 307 else
aueangpanit 9:39190ed25585 308 {
aueangpanit 9:39190ed25585 309 return false;
aueangpanit 9:39190ed25585 310 }
aueangpanit 9:39190ed25585 311 }
aueangpanit 9:39190ed25585 312
aueangpanit 9:39190ed25585 313 bool ExitScreen()
aueangpanit 9:39190ed25585 314 {
aueangpanit 9:39190ed25585 315 int exitOption_int = 0;
aueangpanit 9:39190ed25585 316 UpdateScreen(questionScreen, "AreYouSureYouWantToExit? >" + exitOption[exitOption_int]);
aueangpanit 9:39190ed25585 317
aueangpanit 9:39190ed25585 318 wait(1);
aueangpanit 9:39190ed25585 319
aueangpanit 9:39190ed25585 320 bool choosing = true;
aueangpanit 9:39190ed25585 321 while(choosing)
aueangpanit 9:39190ed25585 322 {
aueangpanit 9:39190ed25585 323 wait(0.5);
aueangpanit 9:39190ed25585 324 UpdateRange();
aueangpanit 9:39190ed25585 325 if(r1 < 25 && r2 < 25)
aueangpanit 9:39190ed25585 326 {
aueangpanit 9:39190ed25585 327 if(exitOption_int == 0)
aueangpanit 9:39190ed25585 328 {
aueangpanit 9:39190ed25585 329 choosing = false;
aueangpanit 9:39190ed25585 330 UpdateScreen(questionScreen, "Exiting...");
aueangpanit 9:39190ed25585 331 wait(1);
aueangpanit 9:39190ed25585 332 return true;
aueangpanit 9:39190ed25585 333 }
aueangpanit 9:39190ed25585 334 else
aueangpanit 9:39190ed25585 335 {
aueangpanit 9:39190ed25585 336 choosing = false;
aueangpanit 9:39190ed25585 337 UpdateScreen(questionScreen, "Returning to game");
aueangpanit 9:39190ed25585 338 wait(1);
aueangpanit 9:39190ed25585 339 return false;
aueangpanit 9:39190ed25585 340 }
aueangpanit 9:39190ed25585 341 }
aueangpanit 9:39190ed25585 342 else if(r1 < 20)
aueangpanit 9:39190ed25585 343 {
aueangpanit 9:39190ed25585 344 if(exitOption_int > 0) { exitOption_int--; UpdateScreen(questionScreen, "AreYouSureYouWantToExit? >" + exitOption[exitOption_int]); }
aueangpanit 9:39190ed25585 345 }
aueangpanit 9:39190ed25585 346 else if(r2 < 20)
aueangpanit 9:39190ed25585 347 {
aueangpanit 9:39190ed25585 348 if(exitOption_int < 1) { exitOption_int++; UpdateScreen(questionScreen, "AreYouSureYouWantToExit? >" + exitOption[exitOption_int]); }
aueangpanit 9:39190ed25585 349 }
aueangpanit 9:39190ed25585 350 }
aueangpanit 9:39190ed25585 351 }
aueangpanit 9:39190ed25585 352
aueangpanit 4:c669026b6f6e 353 void UpdateScreen(DigitalOut screen, string text)
aueangpanit 4:c669026b6f6e 354 {
aueangpanit 4:c669026b6f6e 355 //disable all E pin for all screens
aueangpanit 8:8ce2ab8191cf 356 questionScreen = 0;
aueangpanit 4:c669026b6f6e 357 screen1 = 0;
aueangpanit 4:c669026b6f6e 358 screen2 = 0;
aueangpanit 4:c669026b6f6e 359
aueangpanit 4:c669026b6f6e 360 //enable E pin for the scrren that we want to update
aueangpanit 4:c669026b6f6e 361 screen = 1;
aueangpanit 4:c669026b6f6e 362
aueangpanit 5:2f13ec8efe0b 363 //convert text to char array
aueangpanit 5:2f13ec8efe0b 364 char text_char_array[1024];
aueangpanit 5:2f13ec8efe0b 365 strcpy(text_char_array, text.c_str());
aueangpanit 4:c669026b6f6e 366 //some weird behaviour after disabling the E pin once means that we need to update the screen several times for it to display properly
aueangpanit 5:2f13ec8efe0b 367 for(int i = 0; i < 10; i++)
aueangpanit 4:c669026b6f6e 368 {
aueangpanit 3:5e0ba6e35849 369 lcd.cls();
aueangpanit 4:c669026b6f6e 370 lcd.printf(text_char_array);
aueangpanit 3:5e0ba6e35849 371 }
aueangpanit 5:2f13ec8efe0b 372 }
aueangpanit 5:2f13ec8efe0b 373
aueangpanit 5:2f13ec8efe0b 374 void UpdateScreen(DigitalOut screen, char text[1024])
aueangpanit 5:2f13ec8efe0b 375 {
aueangpanit 5:2f13ec8efe0b 376 //disable all E pin for all screens
aueangpanit 8:8ce2ab8191cf 377 questionScreen = 0;
aueangpanit 5:2f13ec8efe0b 378 screen1 = 0;
aueangpanit 5:2f13ec8efe0b 379 screen2 = 0;
aueangpanit 4:c669026b6f6e 380
aueangpanit 5:2f13ec8efe0b 381 //enable E pin for the scrren that we want to update
aueangpanit 5:2f13ec8efe0b 382 screen = 1;
aueangpanit 4:c669026b6f6e 383
aueangpanit 5:2f13ec8efe0b 384 //some weird behaviour after disabling the E pin once means that we need to update the screen several times for it to display properly
aueangpanit 5:2f13ec8efe0b 385 for(int i = 0; i < 10; i++)
aueangpanit 5:2f13ec8efe0b 386 {
aueangpanit 5:2f13ec8efe0b 387 lcd.cls();
aueangpanit 5:2f13ec8efe0b 388 lcd.printf(text);
aueangpanit 5:2f13ec8efe0b 389 }
simon 0:334327d1a416 390 }
aueangpanit 9:39190ed25585 391
aueangpanit 10:21c24327e65f 392 void UpdateScreen(DigitalOut screen, int firstLineLocation, string firstLineText, int secondLineLocation, string secondLineText)
aueangpanit 10:21c24327e65f 393 {
aueangpanit 10:21c24327e65f 394 //disable all E pin for all screens
aueangpanit 10:21c24327e65f 395 questionScreen = 0;
aueangpanit 10:21c24327e65f 396 screen1 = 0;
aueangpanit 10:21c24327e65f 397 screen2 = 0;
aueangpanit 10:21c24327e65f 398
aueangpanit 10:21c24327e65f 399 //enable E pin for the scrren that we want to update
aueangpanit 10:21c24327e65f 400 screen = 1;
aueangpanit 10:21c24327e65f 401
aueangpanit 11:f6a39ae5ecbc 402 string line1text = GetLocationSpaces(firstLineLocation) + firstLineText;
aueangpanit 11:f6a39ae5ecbc 403 string line2text = GetLocationSpaces(secondLineLocation) + secondLineText;
aueangpanit 11:f6a39ae5ecbc 404
aueangpanit 10:21c24327e65f 405 //convert text to char array
aueangpanit 10:21c24327e65f 406 char firstLine_char_array[1024];
aueangpanit 10:21c24327e65f 407 char secondLine_char_array[1024];
aueangpanit 11:f6a39ae5ecbc 408 strcpy(firstLine_char_array, line1text.c_str());
aueangpanit 11:f6a39ae5ecbc 409 strcpy(secondLine_char_array, line2text.c_str());
aueangpanit 10:21c24327e65f 410
aueangpanit 10:21c24327e65f 411 //some weird behaviour after disabling the E pin once means that we need to update the screen several times for it to display properly
aueangpanit 10:21c24327e65f 412 for(int i = 0; i < 10; i++)
aueangpanit 10:21c24327e65f 413 {
aueangpanit 10:21c24327e65f 414 lcd.cls();
aueangpanit 11:f6a39ae5ecbc 415 lcd.locate(0, 0);
aueangpanit 10:21c24327e65f 416 lcd.printf(firstLine_char_array);
aueangpanit 11:f6a39ae5ecbc 417 lcd.locate(0, 1);
aueangpanit 10:21c24327e65f 418 lcd.printf(secondLine_char_array);
aueangpanit 10:21c24327e65f 419 }
aueangpanit 10:21c24327e65f 420 }
aueangpanit 10:21c24327e65f 421
aueangpanit 11:f6a39ae5ecbc 422 string GetLocationSpaces(int location)
aueangpanit 10:21c24327e65f 423 {
aueangpanit 11:f6a39ae5ecbc 424 string space = "";
aueangpanit 11:f6a39ae5ecbc 425 for(int i = 0; i < location; i++)
aueangpanit 10:21c24327e65f 426 {
aueangpanit 11:f6a39ae5ecbc 427 space += " ";
aueangpanit 11:f6a39ae5ecbc 428 }
aueangpanit 11:f6a39ae5ecbc 429 return space;
aueangpanit 10:21c24327e65f 430 }
aueangpanit 10:21c24327e65f 431
aueangpanit 9:39190ed25585 432 void ClearAllScreen()
aueangpanit 9:39190ed25585 433 {
aueangpanit 9:39190ed25585 434 questionScreen = 1;
aueangpanit 9:39190ed25585 435 screen1 = 1;
aueangpanit 9:39190ed25585 436 screen2 = 1;
aueangpanit 9:39190ed25585 437
aueangpanit 9:39190ed25585 438 lcd.cls();
aueangpanit 9:39190ed25585 439 }
aueangpanit 9:39190ed25585 440
aueangpanit 9:39190ed25585 441 void UpdateRange()
aueangpanit 9:39190ed25585 442 {
aueangpanit 9:39190ed25585 443 // Trigger read, wait 49ms until ranger finder has
aueangpanit 9:39190ed25585 444 // finished, then read.
aueangpanit 9:39190ed25585 445 range1->triggerRead();
aueangpanit 9:39190ed25585 446 wait_ms(49);
aueangpanit 9:39190ed25585 447 r1 = range1->read();
aueangpanit 9:39190ed25585 448
aueangpanit 9:39190ed25585 449 range2->triggerRead();
aueangpanit 9:39190ed25585 450 wait_ms(49);
aueangpanit 9:39190ed25585 451 r2 = range2->read();
aueangpanit 9:39190ed25585 452 }