4180 Design project

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

Committer:
asims35
Date:
Tue Dec 08 16:30:32 2015 +0000
Revision:
0:be32bcd5f29d
Design project for ECE4180

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asims35 0:be32bcd5f29d 1 #include <mbed.h>
asims35 0:be32bcd5f29d 2 #include <mpr121.h>
asims35 0:be32bcd5f29d 3 #include "uLCD_4DGL.h"
asims35 0:be32bcd5f29d 4 #include "rtos.h"
asims35 0:be32bcd5f29d 5
asims35 0:be32bcd5f29d 6
asims35 0:be32bcd5f29d 7 //DigitalOut led1(LED1);
asims35 0:be32bcd5f29d 8 //DigitalOut led2(LED2);
asims35 0:be32bcd5f29d 9 //DigitalOut led3(LED3);
asims35 0:be32bcd5f29d 10 //DigitalOut led4(LED4);
asims35 0:be32bcd5f29d 11 AnalogIn ain1(p15);
asims35 0:be32bcd5f29d 12 AnalogIn ain2(p16);
asims35 0:be32bcd5f29d 13 AnalogIn ain3(p17);
asims35 0:be32bcd5f29d 14 AnalogIn ain4(p18);
asims35 0:be32bcd5f29d 15 AnalogIn ain5(p19);
asims35 0:be32bcd5f29d 16 AnalogIn ain6(p20);
asims35 0:be32bcd5f29d 17
asims35 0:be32bcd5f29d 18 DigitalOut led0(LED1);
asims35 0:be32bcd5f29d 19
asims35 0:be32bcd5f29d 20 DigitalOut led1(p21);
asims35 0:be32bcd5f29d 21 DigitalOut led2(p22);
asims35 0:be32bcd5f29d 22 DigitalOut led3(p23);
asims35 0:be32bcd5f29d 23 DigitalOut led4(p24);
asims35 0:be32bcd5f29d 24 DigitalOut led5(p25);
asims35 0:be32bcd5f29d 25 DigitalOut led6(p26);
asims35 0:be32bcd5f29d 26
asims35 0:be32bcd5f29d 27 int cupPresence1;
asims35 0:be32bcd5f29d 28 int cupPresence2;
asims35 0:be32bcd5f29d 29 int cupPresence3;
asims35 0:be32bcd5f29d 30 int cupPresence4;
asims35 0:be32bcd5f29d 31 int cupPresence5;
asims35 0:be32bcd5f29d 32 int cupPresence6;
asims35 0:be32bcd5f29d 33
asims35 0:be32bcd5f29d 34 int cupPreviousState1;
asims35 0:be32bcd5f29d 35 int cupPreviousState2;
asims35 0:be32bcd5f29d 36 int cupPreviousState3;
asims35 0:be32bcd5f29d 37 int cupPreviousState4;
asims35 0:be32bcd5f29d 38 int cupPreviousState5;
asims35 0:be32bcd5f29d 39 int cupPreviousState6;
asims35 0:be32bcd5f29d 40
asims35 0:be32bcd5f29d 41
asims35 0:be32bcd5f29d 42 int player1Points = 0;
asims35 0:be32bcd5f29d 43 int player2Points = 0;
asims35 0:be32bcd5f29d 44
asims35 0:be32bcd5f29d 45 int player1MassArray[] = {0, 0, 0};
asims35 0:be32bcd5f29d 46 int player2MassArray[] = {0, 0, 0};
asims35 0:be32bcd5f29d 47 int player1Mass = 0;
asims35 0:be32bcd5f29d 48 int player2Mass = 0;
asims35 0:be32bcd5f29d 49
asims35 0:be32bcd5f29d 50 float player1BAC = 0;
asims35 0:be32bcd5f29d 51 float player2BAC = 0;
asims35 0:be32bcd5f29d 52
asims35 0:be32bcd5f29d 53 float a1 = 0;
asims35 0:be32bcd5f29d 54 float a2 = 0;
asims35 0:be32bcd5f29d 55 float r = 0.73;
asims35 0:be32bcd5f29d 56
asims35 0:be32bcd5f29d 57 Mutex lcd_mutex;
asims35 0:be32bcd5f29d 58
asims35 0:be32bcd5f29d 59
asims35 0:be32bcd5f29d 60 uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin;
asims35 0:be32bcd5f29d 61
asims35 0:be32bcd5f29d 62 Serial pc(USBTX, USBRX); // tx, rx
asims35 0:be32bcd5f29d 63
asims35 0:be32bcd5f29d 64 InterruptIn keypadInterrupt(p14); // Create the interrupt receiver object on pin 26
asims35 0:be32bcd5f29d 65
asims35 0:be32bcd5f29d 66
asims35 0:be32bcd5f29d 67 I2C i2c(p9, p10); // Setup the i2c bus on pins 9 and 10
asims35 0:be32bcd5f29d 68
asims35 0:be32bcd5f29d 69 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); // constructor(i2c object, i2c address of the mpr121)
asims35 0:be32bcd5f29d 70
asims35 0:be32bcd5f29d 71 float ledThreshold = 0.25;
asims35 0:be32bcd5f29d 72
asims35 0:be32bcd5f29d 73 int keyPressed;
asims35 0:be32bcd5f29d 74
asims35 0:be32bcd5f29d 75 // Key hit/release interrupt routine
asims35 0:be32bcd5f29d 76 void fallInterrupt() {
asims35 0:be32bcd5f29d 77 int value=mpr121.read(0x00);
asims35 0:be32bcd5f29d 78 value +=mpr121.read(0x01)<<8;
asims35 0:be32bcd5f29d 79
asims35 0:be32bcd5f29d 80 switch (value)
asims35 0:be32bcd5f29d 81 {
asims35 0:be32bcd5f29d 82 case 1: keyPressed = 0;
asims35 0:be32bcd5f29d 83 break;
asims35 0:be32bcd5f29d 84 case 2: keyPressed = 1;
asims35 0:be32bcd5f29d 85 break;
asims35 0:be32bcd5f29d 86 case 4: keyPressed = 2;
asims35 0:be32bcd5f29d 87 break;
asims35 0:be32bcd5f29d 88 case 8: keyPressed = 3;
asims35 0:be32bcd5f29d 89 break;
asims35 0:be32bcd5f29d 90 case 16: keyPressed = 4;
asims35 0:be32bcd5f29d 91 break;
asims35 0:be32bcd5f29d 92 case 32: keyPressed = 5;
asims35 0:be32bcd5f29d 93 break;
asims35 0:be32bcd5f29d 94 case 64: keyPressed = 6;
asims35 0:be32bcd5f29d 95 break;
asims35 0:be32bcd5f29d 96 case 128: keyPressed = 7;
asims35 0:be32bcd5f29d 97 break;
asims35 0:be32bcd5f29d 98 case 256: keyPressed = 8;
asims35 0:be32bcd5f29d 99 break;
asims35 0:be32bcd5f29d 100 case 512: keyPressed = 9;
asims35 0:be32bcd5f29d 101 break;
asims35 0:be32bcd5f29d 102 case 1024: keyPressed = 10;
asims35 0:be32bcd5f29d 103 break;
asims35 0:be32bcd5f29d 104 case 2048: keyPressed = 11;
asims35 0:be32bcd5f29d 105 break;
asims35 0:be32bcd5f29d 106 default: keyPressed = 12; // no key pressed
asims35 0:be32bcd5f29d 107 break;
asims35 0:be32bcd5f29d 108 }
asims35 0:be32bcd5f29d 109
asims35 0:be32bcd5f29d 110
asims35 0:be32bcd5f29d 111 }
asims35 0:be32bcd5f29d 112
asims35 0:be32bcd5f29d 113 void checkLed1(void const *args)
asims35 0:be32bcd5f29d 114 {
asims35 0:be32bcd5f29d 115 while (true)
asims35 0:be32bcd5f29d 116 {
asims35 0:be32bcd5f29d 117 if(ain1.read() < ledThreshold)
asims35 0:be32bcd5f29d 118 {
asims35 0:be32bcd5f29d 119 cupPresence1 = 1;
asims35 0:be32bcd5f29d 120 led1 = 1;
asims35 0:be32bcd5f29d 121 cupPreviousState1 = 1;
asims35 0:be32bcd5f29d 122 }
asims35 0:be32bcd5f29d 123 else
asims35 0:be32bcd5f29d 124 {
asims35 0:be32bcd5f29d 125 if(cupPreviousState1 == 1){
asims35 0:be32bcd5f29d 126 a1 = a1 + 4;
asims35 0:be32bcd5f29d 127 }
asims35 0:be32bcd5f29d 128 cupPresence1 = 0;
asims35 0:be32bcd5f29d 129 led1 = 0;
asims35 0:be32bcd5f29d 130 cupPreviousState1 = 0;
asims35 0:be32bcd5f29d 131 }
asims35 0:be32bcd5f29d 132 Thread::wait(250);
asims35 0:be32bcd5f29d 133 }
asims35 0:be32bcd5f29d 134 }
asims35 0:be32bcd5f29d 135 void checkLed2(void const *args)
asims35 0:be32bcd5f29d 136 {
asims35 0:be32bcd5f29d 137 while (true)
asims35 0:be32bcd5f29d 138 {
asims35 0:be32bcd5f29d 139 if(ain2.read() < ledThreshold)
asims35 0:be32bcd5f29d 140 {
asims35 0:be32bcd5f29d 141 cupPresence2 = 1;
asims35 0:be32bcd5f29d 142 led2 = 1;
asims35 0:be32bcd5f29d 143 cupPreviousState2 = 1;
asims35 0:be32bcd5f29d 144 }
asims35 0:be32bcd5f29d 145 else
asims35 0:be32bcd5f29d 146 {
asims35 0:be32bcd5f29d 147 if(cupPreviousState2 == 1){
asims35 0:be32bcd5f29d 148 a1 = a1 + 4;
asims35 0:be32bcd5f29d 149 }
asims35 0:be32bcd5f29d 150 cupPresence2 = 0;
asims35 0:be32bcd5f29d 151 led2 = 0;
asims35 0:be32bcd5f29d 152 cupPreviousState2 = 0;
asims35 0:be32bcd5f29d 153 }
asims35 0:be32bcd5f29d 154 Thread::wait(250);
asims35 0:be32bcd5f29d 155 }
asims35 0:be32bcd5f29d 156 }
asims35 0:be32bcd5f29d 157 void checkLed3(void const *args)
asims35 0:be32bcd5f29d 158 {
asims35 0:be32bcd5f29d 159 while (true)
asims35 0:be32bcd5f29d 160 {
asims35 0:be32bcd5f29d 161 if(ain3.read() < ledThreshold - 0.22)
asims35 0:be32bcd5f29d 162 {
asims35 0:be32bcd5f29d 163 cupPresence3 = 1;
asims35 0:be32bcd5f29d 164 led3 = 1;
asims35 0:be32bcd5f29d 165 cupPreviousState3 = 1;
asims35 0:be32bcd5f29d 166 }
asims35 0:be32bcd5f29d 167 else
asims35 0:be32bcd5f29d 168 {
asims35 0:be32bcd5f29d 169 if(cupPreviousState3 == 1){
asims35 0:be32bcd5f29d 170 a1 = a1 + 4;
asims35 0:be32bcd5f29d 171 }
asims35 0:be32bcd5f29d 172 cupPresence3 = 0;
asims35 0:be32bcd5f29d 173 led3 = 0;
asims35 0:be32bcd5f29d 174 cupPreviousState3 = 0;
asims35 0:be32bcd5f29d 175 }
asims35 0:be32bcd5f29d 176 Thread::wait(250);
asims35 0:be32bcd5f29d 177 }
asims35 0:be32bcd5f29d 178 }
asims35 0:be32bcd5f29d 179 void checkLed4(void const *args)
asims35 0:be32bcd5f29d 180 {
asims35 0:be32bcd5f29d 181 while (true)
asims35 0:be32bcd5f29d 182 {
asims35 0:be32bcd5f29d 183 if(ain4.read() < ledThreshold)
asims35 0:be32bcd5f29d 184 {
asims35 0:be32bcd5f29d 185 cupPresence4 = 1;
asims35 0:be32bcd5f29d 186 led4 = 1;
asims35 0:be32bcd5f29d 187 cupPreviousState4 = 1;
asims35 0:be32bcd5f29d 188 }
asims35 0:be32bcd5f29d 189 else
asims35 0:be32bcd5f29d 190 {
asims35 0:be32bcd5f29d 191 if(cupPreviousState4 == 1){
asims35 0:be32bcd5f29d 192 a2 = a2 + 4;
asims35 0:be32bcd5f29d 193 }
asims35 0:be32bcd5f29d 194 cupPresence4 = 0;
asims35 0:be32bcd5f29d 195 led4 = 0;
asims35 0:be32bcd5f29d 196 cupPreviousState4 = 0;
asims35 0:be32bcd5f29d 197 }
asims35 0:be32bcd5f29d 198 Thread::wait(250);
asims35 0:be32bcd5f29d 199 }
asims35 0:be32bcd5f29d 200 }
asims35 0:be32bcd5f29d 201 void checkLed5(void const *args)
asims35 0:be32bcd5f29d 202 {
asims35 0:be32bcd5f29d 203 while (true)
asims35 0:be32bcd5f29d 204 {
asims35 0:be32bcd5f29d 205 if(ain5.read() < ledThreshold + 0.05)
asims35 0:be32bcd5f29d 206 {
asims35 0:be32bcd5f29d 207 cupPresence5 = 1;
asims35 0:be32bcd5f29d 208 led5 = 1;
asims35 0:be32bcd5f29d 209 cupPreviousState5 = 1;
asims35 0:be32bcd5f29d 210 }
asims35 0:be32bcd5f29d 211 else
asims35 0:be32bcd5f29d 212 {
asims35 0:be32bcd5f29d 213 if(cupPreviousState5 == 1){
asims35 0:be32bcd5f29d 214 a2 = a2 + 4;
asims35 0:be32bcd5f29d 215 }
asims35 0:be32bcd5f29d 216 cupPresence5 = 0;
asims35 0:be32bcd5f29d 217 led5 = 0;
asims35 0:be32bcd5f29d 218 cupPreviousState5 = 0;
asims35 0:be32bcd5f29d 219 }
asims35 0:be32bcd5f29d 220 Thread::wait(250);
asims35 0:be32bcd5f29d 221 }
asims35 0:be32bcd5f29d 222 }
asims35 0:be32bcd5f29d 223 void checkLed6(void const *args)
asims35 0:be32bcd5f29d 224 {
asims35 0:be32bcd5f29d 225 while (true)
asims35 0:be32bcd5f29d 226 {
asims35 0:be32bcd5f29d 227 if(ain6.read() < ledThreshold + 0.09)
asims35 0:be32bcd5f29d 228 {
asims35 0:be32bcd5f29d 229 cupPresence6 = 1;
asims35 0:be32bcd5f29d 230 led6 = 1;
asims35 0:be32bcd5f29d 231 cupPreviousState6 = 1;
asims35 0:be32bcd5f29d 232 }
asims35 0:be32bcd5f29d 233 else
asims35 0:be32bcd5f29d 234 {
asims35 0:be32bcd5f29d 235 if(cupPreviousState6 == 1){
asims35 0:be32bcd5f29d 236 a2 = a2 + 4;
asims35 0:be32bcd5f29d 237 }
asims35 0:be32bcd5f29d 238 cupPresence6 = 0;
asims35 0:be32bcd5f29d 239 led6 = 0;
asims35 0:be32bcd5f29d 240 cupPreviousState6 = 0;
asims35 0:be32bcd5f29d 241 }
asims35 0:be32bcd5f29d 242 Thread::wait(250);
asims35 0:be32bcd5f29d 243 }
asims35 0:be32bcd5f29d 244 }
asims35 0:be32bcd5f29d 245
asims35 0:be32bcd5f29d 246 void resetScore()
asims35 0:be32bcd5f29d 247 {
asims35 0:be32bcd5f29d 248
asims35 0:be32bcd5f29d 249 while(cupPresence4 != 1 || cupPresence5 != 1 || cupPresence6 != 1 || cupPresence1 != 1 || cupPresence2 != 1 || cupPresence3 != 1){
asims35 0:be32bcd5f29d 250 uLCD.locate(0,7);
asims35 0:be32bcd5f29d 251 uLCD.printf(" in while loop");
asims35 0:be32bcd5f29d 252 }
asims35 0:be32bcd5f29d 253 }
asims35 0:be32bcd5f29d 254
asims35 0:be32bcd5f29d 255 void declareWinner(int winner){
asims35 0:be32bcd5f29d 256 player1Points = 0;
asims35 0:be32bcd5f29d 257 player2Points = 0;
asims35 0:be32bcd5f29d 258 lcd_mutex.lock();
asims35 0:be32bcd5f29d 259 uLCD.cls();
asims35 0:be32bcd5f29d 260 uLCD.locate(0,1);
asims35 0:be32bcd5f29d 261 uLCD.printf("Player %i Wins!", winner);
asims35 0:be32bcd5f29d 262 lcd_mutex.lock();
asims35 0:be32bcd5f29d 263 wait(10);
asims35 0:be32bcd5f29d 264 }
asims35 0:be32bcd5f29d 265
asims35 0:be32bcd5f29d 266 void checkBAC(void const *args)
asims35 0:be32bcd5f29d 267 {
asims35 0:be32bcd5f29d 268 while (true)
asims35 0:be32bcd5f29d 269 {
asims35 0:be32bcd5f29d 270 player1BAC = ((0.06*a1*5.14)/(player1Mass*r));
asims35 0:be32bcd5f29d 271 player2BAC = ((0.06*a2*5.14)/(player2Mass*r));
asims35 0:be32bcd5f29d 272
asims35 0:be32bcd5f29d 273 Thread::wait(250);
asims35 0:be32bcd5f29d 274 }
asims35 0:be32bcd5f29d 275 }
asims35 0:be32bcd5f29d 276
asims35 0:be32bcd5f29d 277
asims35 0:be32bcd5f29d 278
asims35 0:be32bcd5f29d 279 void checkScore(void const *args)
asims35 0:be32bcd5f29d 280 {
asims35 0:be32bcd5f29d 281 while (true)
asims35 0:be32bcd5f29d 282 {
asims35 0:be32bcd5f29d 283 if(cupPresence4 == 0 && cupPresence5 == 0 && cupPresence6 == 0)
asims35 0:be32bcd5f29d 284 {
asims35 0:be32bcd5f29d 285 player1Points++;
asims35 0:be32bcd5f29d 286 //resetScore();
asims35 0:be32bcd5f29d 287
asims35 0:be32bcd5f29d 288 if(player1Points == 3){
asims35 0:be32bcd5f29d 289 //declareWinner(1);
asims35 0:be32bcd5f29d 290 }
asims35 0:be32bcd5f29d 291 wait(5);
asims35 0:be32bcd5f29d 292 }
asims35 0:be32bcd5f29d 293 else if(cupPresence1 == 0 && cupPresence2 == 0 && cupPresence3 == 0)
asims35 0:be32bcd5f29d 294 {
asims35 0:be32bcd5f29d 295 player2Points++;
asims35 0:be32bcd5f29d 296 //resetScore();
asims35 0:be32bcd5f29d 297 if(player2Points == 3){
asims35 0:be32bcd5f29d 298 //declareWinner(2);
asims35 0:be32bcd5f29d 299 }
asims35 0:be32bcd5f29d 300 wait(5);
asims35 0:be32bcd5f29d 301 }
asims35 0:be32bcd5f29d 302
asims35 0:be32bcd5f29d 303
asims35 0:be32bcd5f29d 304 Thread::wait(250);
asims35 0:be32bcd5f29d 305 }
asims35 0:be32bcd5f29d 306 }
asims35 0:be32bcd5f29d 307
asims35 0:be32bcd5f29d 308
asims35 0:be32bcd5f29d 309 void inputMass(){
asims35 0:be32bcd5f29d 310 uLCD.locate(0,1);
asims35 0:be32bcd5f29d 311 // uLCD.set_font_size(5,5);
asims35 0:be32bcd5f29d 312 // uLCD.color(BLACK);
asims35 0:be32bcd5f29d 313 // uLCD.background_color(LGREY);
asims35 0:be32bcd5f29d 314 uLCD.printf("Player 1 Weight");
asims35 0:be32bcd5f29d 315 wait(1);
asims35 0:be32bcd5f29d 316 for (int i=0; i<3; i++) {
asims35 0:be32bcd5f29d 317 player1MassArray[i] = keyPressed;
asims35 0:be32bcd5f29d 318 uLCD.locate(i,3);
asims35 0:be32bcd5f29d 319 uLCD.printf("%i",player1MassArray[i]);
asims35 0:be32bcd5f29d 320 wait(1);
asims35 0:be32bcd5f29d 321 }
asims35 0:be32bcd5f29d 322 uLCD.locate(0,4);
asims35 0:be32bcd5f29d 323 //uLCD.set_font_size(5,5);
asims35 0:be32bcd5f29d 324 // uLCD.color(BLACK);
asims35 0:be32bcd5f29d 325 //uLCD.background_color(LGREY);
asims35 0:be32bcd5f29d 326 uLCD.printf("Player 2 Weight");
asims35 0:be32bcd5f29d 327 wait(1);
asims35 0:be32bcd5f29d 328 for (int i=0; i<3; i++) {
asims35 0:be32bcd5f29d 329 player2MassArray[i] = keyPressed;
asims35 0:be32bcd5f29d 330 uLCD.locate(i,6);
asims35 0:be32bcd5f29d 331 uLCD.printf("%i",player2MassArray[i]);
asims35 0:be32bcd5f29d 332 wait(1);
asims35 0:be32bcd5f29d 333 }
asims35 0:be32bcd5f29d 334 for (int i=0; i < 3; i++)
asims35 0:be32bcd5f29d 335 {
asims35 0:be32bcd5f29d 336 player1Mass = player1Mass*10 + player1MassArray[i];
asims35 0:be32bcd5f29d 337 }
asims35 0:be32bcd5f29d 338 for (int i=0; i < 3; i++)
asims35 0:be32bcd5f29d 339 {
asims35 0:be32bcd5f29d 340 player2Mass = player2Mass*10 + player2MassArray[i];
asims35 0:be32bcd5f29d 341 }
asims35 0:be32bcd5f29d 342 }
asims35 0:be32bcd5f29d 343
asims35 0:be32bcd5f29d 344 int main() {
asims35 0:be32bcd5f29d 345 keypadInterrupt.fall(&fallInterrupt);
asims35 0:be32bcd5f29d 346 keypadInterrupt.mode(PullUp);
asims35 0:be32bcd5f29d 347 inputMass();
asims35 0:be32bcd5f29d 348 Thread thread1(checkLed1);
asims35 0:be32bcd5f29d 349 Thread thread2(checkLed2);
asims35 0:be32bcd5f29d 350 Thread thread3(checkLed3);
asims35 0:be32bcd5f29d 351 Thread thread4(checkLed4);
asims35 0:be32bcd5f29d 352 Thread thread5(checkLed5);
asims35 0:be32bcd5f29d 353 Thread thread6(checkLed6);
asims35 0:be32bcd5f29d 354 Thread thread7(checkScore);
asims35 0:be32bcd5f29d 355 Thread thread8(checkBAC);
asims35 0:be32bcd5f29d 356
asims35 0:be32bcd5f29d 357
asims35 0:be32bcd5f29d 358 // pc.printf("Hello World!\n");
asims35 0:be32bcd5f29d 359 // uLCD.printf("\nHello uLCD World\n"); //Default Green on black text
asims35 0:be32bcd5f29d 360 // uLCD.printf("\n Starting Demo...");
asims35 0:be32bcd5f29d 361 uLCD.filled_rectangle(0, 0 , 128, 64, BLUE);
asims35 0:be32bcd5f29d 362 uLCD.filled_rectangle(0, 64 , 128, 128, RED);
asims35 0:be32bcd5f29d 363 while (1)
asims35 0:be32bcd5f29d 364 {
asims35 0:be32bcd5f29d 365
asims35 0:be32bcd5f29d 366 //uLCD.color(BLACK);
asims35 0:be32bcd5f29d 367 // uLCD.background_color(LGREY);
asims35 0:be32bcd5f29d 368 uLCD.textbackground_color(BLUE);
asims35 0:be32bcd5f29d 369 //uLCD.set_font_size(20,20);
asims35 0:be32bcd5f29d 370 uLCD.text_width(2); //4X size text
asims35 0:be32bcd5f29d 371 uLCD.text_height(2);
asims35 0:be32bcd5f29d 372 uLCD.color(WHITE);
asims35 0:be32bcd5f29d 373 uLCD.locate(0,0);
asims35 0:be32bcd5f29d 374 uLCD.printf("Score: %i",player1Points);
asims35 0:be32bcd5f29d 375 uLCD.locate(0,2);
asims35 0:be32bcd5f29d 376 uLCD.printf(" BAC:\n %1.2f",player1BAC);
asims35 0:be32bcd5f29d 377
asims35 0:be32bcd5f29d 378 uLCD.textbackground_color(RED);
asims35 0:be32bcd5f29d 379 //uLCD.set_font_size(20,20);FONT_8X8
asims35 0:be32bcd5f29d 380 uLCD.text_width(2); //4X size text
asims35 0:be32bcd5f29d 381 uLCD.text_height(2);
asims35 0:be32bcd5f29d 382 uLCD.locate(0,4);
asims35 0:be32bcd5f29d 383 uLCD.color(WHITE);
asims35 0:be32bcd5f29d 384 uLCD.printf("Score: %i",player2Points);
asims35 0:be32bcd5f29d 385 uLCD.locate(0,6);
asims35 0:be32bcd5f29d 386 uLCD.printf(" BAC:\n %1.2f",player2BAC);
asims35 0:be32bcd5f29d 387 }
asims35 0:be32bcd5f29d 388 }