Jakobi Blackburn / Mbed 2 deprecated UltrasonicDistanceSensor-el13jb

Dependencies:   N5110WN PowerControl SRF02 mbed

Committer:
JakBlackburn
Date:
Wed Apr 08 23:02:14 2015 +0000
Revision:
6:a5cd7eb72264
Parent:
5:f9b97f057836
Child:
7:962b5f044a9b
tweaked visuals to a more pleasing standard. added the RTC to the display along with the actual distances on the bar visual modes. Then added a "-L-" that appears in the bottom left corner of the LCD when logging is enabled

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JakBlackburn 1:7f151ab172cb 1 /**
JakBlackburn 1:7f151ab172cb 2 @file main.cpp
JakBlackburn 1:7f151ab172cb 3 @brief Program implementation
JakBlackburn 0:73bfbe8729d4 4
JakBlackburn 1:7f151ab172cb 5 */
JakBlackburn 1:7f151ab172cb 6 #include "main.h"
JakBlackburn 0:73bfbe8729d4 7
JakBlackburn 3:00933efbe463 8 int main()
JakBlackburn 3:00933efbe463 9 {
JakBlackburn 1:7f151ab172cb 10 pc.baud(9600); //sets baud rate
JakBlackburn 5:f9b97f057836 11 timer.attach(&timerExpired,0.2);
JakBlackburn 5:f9b97f057836 12 timer2.attach(&timer2Expired,1);
JakBlackburn 5:f9b97f057836 13 timer3.attach(&timer3Expired,2);
JakBlackburn 4:2e9aa626a02c 14 LogTog.rise(&logToggle);
JakBlackburn 1:7f151ab172cb 15 UnitTog.rise(&unitToggle);
JakBlackburn 3:00933efbe463 16 VisTog.rise(&visToggle);
JakBlackburn 1:7f151ab172cb 17 pc.attach(&serialISR); // attach serial ISR
JakBlackburn 1:7f151ab172cb 18 set_time(1427846400); // initialise time to 1st April 2015 00:00:00
JakBlackburn 3:00933efbe463 19
JakBlackburn 2:a1eaa4d74b63 20 BLED.period(0.02); //sets the frequency of the Backlight at 50Hz
JakBlackburn 3:00933efbe463 21 BLED=BLEDLevel.read(); //sets the brightness
JakBlackburn 2:a1eaa4d74b63 22 lcd.init(); //to initilize the display
JakBlackburn 5:f9b97f057836 23
JakBlackburn 2:a1eaa4d74b63 24 checkerBoard();
JakBlackburn 2:a1eaa4d74b63 25 wait(0.2);
JakBlackburn 2:a1eaa4d74b63 26 lcd.clear();
JakBlackburn 3:00933efbe463 27
JakBlackburn 2:a1eaa4d74b63 28 introTune(); // plays the intro tune
JakBlackburn 2:a1eaa4d74b63 29 lcd.printString("Parking",20,0);
JakBlackburn 3:00933efbe463 30 lcd.printString("Sensor",23,1);
JakBlackburn 2:a1eaa4d74b63 31 lcd.printString("by",35,2);
JakBlackburn 2:a1eaa4d74b63 32 lcd.printString("Jakobi",24,3);
JakBlackburn 2:a1eaa4d74b63 33 lcd.printString("Blackburn",16,4);
JakBlackburn 3:00933efbe463 34 wait(2);
JakBlackburn 2:a1eaa4d74b63 35 lcd.clear();
JakBlackburn 0:73bfbe8729d4 36 while(1) {
JakBlackburn 3:00933efbe463 37 if (setTimeFlag) { // if updated time has been sent
JakBlackburn 1:7f151ab172cb 38 setTimeFlag = 0; // clear flag
JakBlackburn 1:7f151ab172cb 39 setTime(); // update time
JakBlackburn 1:7f151ab172cb 40 }
JakBlackburn 5:f9b97f057836 41 if(distance>=100) {
JakBlackburn 5:f9b97f057836 42 if(timer3Flag) {
JakBlackburn 5:f9b97f057836 43 pc.printf("Scan Speed = 0.5 \n");
JakBlackburn 5:f9b97f057836 44 theMain();
JakBlackburn 5:f9b97f057836 45
JakBlackburn 5:f9b97f057836 46 }
JakBlackburn 5:f9b97f057836 47 } else if(distance>=50) {
JakBlackburn 5:f9b97f057836 48 if(timer2Flag) {
JakBlackburn 5:f9b97f057836 49 pc.printf("Scan Speed = 1 \n");
JakBlackburn 5:f9b97f057836 50 theMain();
JakBlackburn 5:f9b97f057836 51 }
JakBlackburn 5:f9b97f057836 52 } else if(distance<50) {
JakBlackburn 5:f9b97f057836 53 if(timerFlag) {
JakBlackburn 5:f9b97f057836 54 pc.printf("Scan Speed = 5 \n");
JakBlackburn 5:f9b97f057836 55 theMain();
JakBlackburn 5:f9b97f057836 56 }
JakBlackburn 5:f9b97f057836 57 } else {
JakBlackburn 5:f9b97f057836 58 error(1);
JakBlackburn 5:f9b97f057836 59 }
JakBlackburn 5:f9b97f057836 60
JakBlackburn 2:a1eaa4d74b63 61 Sleep();
JakBlackburn 0:73bfbe8729d4 62 }
JakBlackburn 0:73bfbe8729d4 63 }
JakBlackburn 0:73bfbe8729d4 64
JakBlackburn 3:00933efbe463 65 void timerExpired()
JakBlackburn 3:00933efbe463 66 {
JakBlackburn 3:00933efbe463 67 timerFlag=1;
JakBlackburn 0:73bfbe8729d4 68 }
JakBlackburn 0:73bfbe8729d4 69
JakBlackburn 5:f9b97f057836 70 void timer2Expired()
JakBlackburn 5:f9b97f057836 71 {
JakBlackburn 5:f9b97f057836 72 timer2Flag=1;
JakBlackburn 5:f9b97f057836 73 }
JakBlackburn 5:f9b97f057836 74 void timer3Expired()
JakBlackburn 5:f9b97f057836 75 {
JakBlackburn 5:f9b97f057836 76 timer3Flag=1;
JakBlackburn 5:f9b97f057836 77 }
JakBlackburn 5:f9b97f057836 78
JakBlackburn 5:f9b97f057836 79 void theMain()
JakBlackburn 5:f9b97f057836 80 {
JakBlackburn 5:f9b97f057836 81 BLED=BLEDLevel.read(); //sets the brightness
JakBlackburn 5:f9b97f057836 82 timerFlag =0; //resets flags
JakBlackburn 5:f9b97f057836 83 timer2Flag=0;
JakBlackburn 5:f9b97f057836 84 timer3Flag=0;
JakBlackburn 5:f9b97f057836 85 time_t seconds = time(NULL); // get current time
JakBlackburn 5:f9b97f057836 86 // format time into a string (time and date)
JakBlackburn 5:f9b97f057836 87 strftime(buffer, 30 , "%d/%m/%y %R", localtime(&seconds));
JakBlackburn 5:f9b97f057836 88 float dist = getDistance()*unitX; //reads the distance and sets it to a float value.
JakBlackburn 5:f9b97f057836 89 //prints the value to the serial port.
JakBlackburn 5:f9b97f057836 90 if(state==1) {
JakBlackburn 5:f9b97f057836 91 pc.printf("%s , Distance = %.2f %s \n",buffer,dist,units); //prints the value to the serial port.
JakBlackburn 5:f9b97f057836 92 } else if(state !=1) {
JakBlackburn 5:f9b97f057836 93 pc.printf("%s , Distance = %.0f %s \n",buffer,dist,units); //prints the value to the serial port.
JakBlackburn 5:f9b97f057836 94 }
JakBlackburn 5:f9b97f057836 95 logging(buffer,distance);
JakBlackburn 5:f9b97f057836 96 if(visual==0) {
JakBlackburn 5:f9b97f057836 97 LCDVis0();
JakBlackburn 5:f9b97f057836 98 } else if(visual==1) {
JakBlackburn 5:f9b97f057836 99 LCDVis1();
JakBlackburn 5:f9b97f057836 100 } else if(visual==2) {
JakBlackburn 5:f9b97f057836 101 LCDVis2();
JakBlackburn 5:f9b97f057836 102 } else if(visual==3) {
JakBlackburn 5:f9b97f057836 103 LCDVis3();
JakBlackburn 5:f9b97f057836 104 } else {
JakBlackburn 5:f9b97f057836 105 error(2);
JakBlackburn 5:f9b97f057836 106 }
JakBlackburn 5:f9b97f057836 107
JakBlackburn 5:f9b97f057836 108 }
JakBlackburn 5:f9b97f057836 109
JakBlackburn 0:73bfbe8729d4 110
JakBlackburn 3:00933efbe463 111 void warnings()
JakBlackburn 3:00933efbe463 112 {
JakBlackburn 0:73bfbe8729d4 113 WLED=1;
JakBlackburn 0:73bfbe8729d4 114 volume= BuzVol.read();
JakBlackburn 5:f9b97f057836 115 if(distance<20) {
JakBlackburn 5:f9b97f057836 116 Buzzer.ContNote(1000.0, volume);
JakBlackburn 6:a5cd7eb72264 117
JakBlackburn 5:f9b97f057836 118 } else {
JakBlackburn 5:f9b97f057836 119 Buzzer.PlayNote(1000.0, 0.1, volume);
JakBlackburn 5:f9b97f057836 120 }
JakBlackburn 3:00933efbe463 121 WLED=0;
JakBlackburn 0:73bfbe8729d4 122 }
JakBlackburn 3:00933efbe463 123 float getDistance()
JakBlackburn 3:00933efbe463 124 {
JakBlackburn 0:73bfbe8729d4 125 int dist0 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 126
JakBlackburn 0:73bfbe8729d4 127 int dist1 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 128
JakBlackburn 0:73bfbe8729d4 129 int dist2 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 130
JakBlackburn 0:73bfbe8729d4 131 int dist3 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 132
JakBlackburn 0:73bfbe8729d4 133 int dist4 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 134
JakBlackburn 0:73bfbe8729d4 135 int dist5 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 136
JakBlackburn 0:73bfbe8729d4 137 int dist6 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 138
JakBlackburn 0:73bfbe8729d4 139 int dist7 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 140
JakBlackburn 0:73bfbe8729d4 141 int dist8 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 142
JakBlackburn 0:73bfbe8729d4 143 int dist9 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 144
JakBlackburn 3:00933efbe463 145 distance=(dist0+dist1+dist2+dist3+dist4+dist5+dist6+dist7+dist8+dist9)/10;
JakBlackburn 5:f9b97f057836 146
JakBlackburn 0:73bfbe8729d4 147 warnings();
JakBlackburn 1:7f151ab172cb 148 return distance;
JakBlackburn 0:73bfbe8729d4 149 }
JakBlackburn 0:73bfbe8729d4 150
JakBlackburn 3:00933efbe463 151 void unitToggle()
JakBlackburn 3:00933efbe463 152 {
JakBlackburn 1:7f151ab172cb 153 state = fsm[state].nextState[UnitTog]; // read input and update current state
JakBlackburn 0:73bfbe8729d4 154 unitX = fsm[state].unitMultiple; // set output depending on current state
JakBlackburn 3:00933efbe463 155 units= fsm[state].Unit; //
JakBlackburn 1:7f151ab172cb 156 wait(0.2);
JakBlackburn 1:7f151ab172cb 157 pc.printf("unit multiple = %.2f \n",unitX);
JakBlackburn 2:a1eaa4d74b63 158 pc.printf("Units = %s \n",units);
JakBlackburn 1:7f151ab172cb 159 }
JakBlackburn 1:7f151ab172cb 160
JakBlackburn 5:f9b97f057836 161
JakBlackburn 3:00933efbe463 162 void error(int E) //up to 14. IF 15 shown it is a ack bit error for the SRF02
JakBlackburn 3:00933efbe463 163 {
JakBlackburn 3:00933efbe463 164 while(1) {
JakBlackburn 1:7f151ab172cb 165 leds=0;
JakBlackburn 1:7f151ab172cb 166 wait(0.2);
JakBlackburn 1:7f151ab172cb 167 leds=E;
JakBlackburn 1:7f151ab172cb 168 wait(0.2);
JakBlackburn 1:7f151ab172cb 169 }
JakBlackburn 0:73bfbe8729d4 170 }
JakBlackburn 0:73bfbe8729d4 171
JakBlackburn 4:2e9aa626a02c 172 void logToggle()
JakBlackburn 1:7f151ab172cb 173 {
JakBlackburn 1:7f151ab172cb 174 logButtonFlag = !logButtonFlag; //flips the flag
JakBlackburn 1:7f151ab172cb 175 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 176 LLED=1; // Logging LED will be on if the device is logging
JakBlackburn 1:7f151ab172cb 177 pc.printf("-------\n Data Logging\n\r");
JakBlackburn 1:7f151ab172cb 178 } else {
JakBlackburn 1:7f151ab172cb 179 LLED=0; // Logging LED will be off if the device isn't logging
JakBlackburn 1:7f151ab172cb 180 pc.printf("-------\n Stopped Logging Data\n\r");
JakBlackburn 0:73bfbe8729d4 181 }
JakBlackburn 1:7f151ab172cb 182 wait(0.2);
JakBlackburn 1:7f151ab172cb 183 }
JakBlackburn 1:7f151ab172cb 184
JakBlackburn 1:7f151ab172cb 185 void logging(char* data,float data1)
JakBlackburn 1:7f151ab172cb 186 {
JakBlackburn 1:7f151ab172cb 187 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 188 FILE *fp = fopen("/local/log.csv", "a"); // open 'log.csv' for appending
JakBlackburn 1:7f151ab172cb 189 // if the file doesn't exist it is created, if it exists, data is appended to the end
JakBlackburn 1:7f151ab172cb 190 fprintf(fp," %s , %.2f\n ",data,data1); // print string to file
JakBlackburn 1:7f151ab172cb 191 fclose(fp); // close file
JakBlackburn 4:2e9aa626a02c 192 pc.printf("Data Logged\n");
JakBlackburn 1:7f151ab172cb 193 LLED=1; //keeps the led on if it is logging
JakBlackburn 1:7f151ab172cb 194 } else {
JakBlackburn 4:2e9aa626a02c 195 pc.printf("WARNING : Unlogged Data\n");
JakBlackburn 1:7f151ab172cb 196 LLED=0;
JakBlackburn 0:73bfbe8729d4 197 }
JakBlackburn 1:7f151ab172cb 198 }
JakBlackburn 1:7f151ab172cb 199
JakBlackburn 1:7f151ab172cb 200 void setTime()
JakBlackburn 1:7f151ab172cb 201 {
JakBlackburn 1:7f151ab172cb 202 // print time for debugging
JakBlackburn 1:7f151ab172cb 203 pc.printf("set time - %s",rxString);
JakBlackburn 1:7f151ab172cb 204 // atoi() converts a string to an integer
JakBlackburn 1:7f151ab172cb 205 int time = atoi(rxString);
JakBlackburn 1:7f151ab172cb 206 // update the time
JakBlackburn 1:7f151ab172cb 207 set_time(time);
JakBlackburn 3:00933efbe463 208 pc.printf("set time - %d",time);
JakBlackburn 1:7f151ab172cb 209 }
JakBlackburn 1:7f151ab172cb 210 void serialISR()
JakBlackburn 1:7f151ab172cb 211 {
JakBlackburn 1:7f151ab172cb 212 // when a serial interrupt occurs, read rx string into buffer
JakBlackburn 1:7f151ab172cb 213 pc.gets(rxString,16);
JakBlackburn 1:7f151ab172cb 214 // set flag
JakBlackburn 1:7f151ab172cb 215 setTimeFlag = 1;
JakBlackburn 2:a1eaa4d74b63 216 }
JakBlackburn 2:a1eaa4d74b63 217
JakBlackburn 2:a1eaa4d74b63 218 void introTune()
JakBlackburn 2:a1eaa4d74b63 219 {
JakBlackburn 2:a1eaa4d74b63 220 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 221 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 222 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 223 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 224 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 225 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 226 Buzzer.PlayNote(1047.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 227 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 228 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 229 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 230 Buzzer.PlayNote(1568.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 231 wait(0.26);
JakBlackburn 2:a1eaa4d74b63 232 Buzzer.PlayNote(784.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 233 }
JakBlackburn 2:a1eaa4d74b63 234
JakBlackburn 2:a1eaa4d74b63 235 void checkerBoard() // creates a checked pattern on the lcd
JakBlackburn 2:a1eaa4d74b63 236 {
JakBlackburn 2:a1eaa4d74b63 237 for(int i=0; i<84; i+=2) {
JakBlackburn 2:a1eaa4d74b63 238 for(int j=0; j<48; j+=2) {
JakBlackburn 2:a1eaa4d74b63 239 lcd.setPixel(i,j);
JakBlackburn 2:a1eaa4d74b63 240 }
JakBlackburn 2:a1eaa4d74b63 241 }
JakBlackburn 2:a1eaa4d74b63 242 lcd.refresh();
JakBlackburn 3:00933efbe463 243 }
JakBlackburn 3:00933efbe463 244
JakBlackburn 3:00933efbe463 245 void LCDVis0() //the max range is 249 (according to the data sheet) and there are 84 pixels wide on the LCD so this creates the amount of cm for each pixel
JakBlackburn 3:00933efbe463 246 {
JakBlackburn 3:00933efbe463 247 lcd.clear();
JakBlackburn 6:a5cd7eb72264 248 if(logButtonFlag) {
JakBlackburn 6:a5cd7eb72264 249 lcd.printString("-L-",0,5);
JakBlackburn 6:a5cd7eb72264 250 }
JakBlackburn 6:a5cd7eb72264 251
JakBlackburn 3:00933efbe463 252 int I = distance*0.337; //and then multiplies the current distance by that value as (84/249) =0.337...
JakBlackburn 6:a5cd7eb72264 253 I=I+3;
JakBlackburn 6:a5cd7eb72264 254 if(I>=79){I=79;}
JakBlackburn 4:2e9aa626a02c 255 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 6:a5cd7eb72264 256 lcd.drawRect(0,16,83,16,0);
JakBlackburn 6:a5cd7eb72264 257 lcd.drawRect(2,18,I,12,1);
JakBlackburn 6:a5cd7eb72264 258 if(state==1) {
JakBlackburn 6:a5cd7eb72264 259 sprintf(Dbuffer, "%.2f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 260 } else if(state !=1) {
JakBlackburn 6:a5cd7eb72264 261 sprintf(Dbuffer, "%.0f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 262 }
JakBlackburn 6:a5cd7eb72264 263 lcd.printString (buffer,0,0);
JakBlackburn 6:a5cd7eb72264 264 lcd.printString (Dbuffer,26,5);
JakBlackburn 6:a5cd7eb72264 265 lcd.printString (units,50,5);
JakBlackburn 3:00933efbe463 266 lcd.refresh();
JakBlackburn 3:00933efbe463 267 }
JakBlackburn 3:00933efbe463 268
JakBlackburn 3:00933efbe463 269 void LCDVis1() //the max range is 249 (according to the data sheet) and there are 48 pixels high on the LCD so this creates the amount of cm for each pixel
JakBlackburn 3:00933efbe463 270 {
JakBlackburn 3:00933efbe463 271 lcd.clear();
JakBlackburn 6:a5cd7eb72264 272 if(logButtonFlag) {
JakBlackburn 6:a5cd7eb72264 273 lcd.printString("-L-",0,5);
JakBlackburn 6:a5cd7eb72264 274 }
JakBlackburn 6:a5cd7eb72264 275
JakBlackburn 6:a5cd7eb72264 276 int J = distance*0.14; //and then multiplies the current distance by that value as (36/249) = 0.19..(as top 12 pixels are for time)
JakBlackburn 6:a5cd7eb72264 277 if(J>=36) {
JakBlackburn 6:a5cd7eb72264 278 J=36;
JakBlackburn 5:f9b97f057836 279 }
JakBlackburn 4:2e9aa626a02c 280 pc.printf("bar height - %d pixels \n",J);
JakBlackburn 6:a5cd7eb72264 281 lcd.drawRect(24,9,34,38,0);
JakBlackburn 6:a5cd7eb72264 282 lcd.drawRect(26,47-J,30,J-2,1);
JakBlackburn 6:a5cd7eb72264 283 if(state==1) {
JakBlackburn 6:a5cd7eb72264 284 sprintf(Dbuffer, "%.2f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 285 } else if(state !=1) {
JakBlackburn 6:a5cd7eb72264 286 sprintf(Dbuffer, "%.0f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 287 }
JakBlackburn 6:a5cd7eb72264 288 lcd.printString (buffer,0,0);
JakBlackburn 6:a5cd7eb72264 289 lcd.printString (Dbuffer,60,3);
JakBlackburn 6:a5cd7eb72264 290 lcd.printString (units,64,4);
JakBlackburn 3:00933efbe463 291 lcd.refresh();
JakBlackburn 3:00933efbe463 292 }
JakBlackburn 3:00933efbe463 293
JakBlackburn 5:f9b97f057836 294 void LCDVis2()
JakBlackburn 5:f9b97f057836 295 {
JakBlackburn 4:2e9aa626a02c 296 lcd.clear();
JakBlackburn 6:a5cd7eb72264 297 if(logButtonFlag) {
JakBlackburn 6:a5cd7eb72264 298 lcd.printString("-L-",0,5);
JakBlackburn 6:a5cd7eb72264 299 }
JakBlackburn 6:a5cd7eb72264 300
JakBlackburn 4:2e9aa626a02c 301 car();
JakBlackburn 4:2e9aa626a02c 302 int I = distance*0.277; //and then multiplies the current distance by that value as (69/249) =0.277...
JakBlackburn 5:f9b97f057836 303 if(I>=84) {
JakBlackburn 5:f9b97f057836 304 I=84;
JakBlackburn 5:f9b97f057836 305 }
JakBlackburn 4:2e9aa626a02c 306 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 6:a5cd7eb72264 307 lcd.drawRect(I+15,9,69,29,1);
JakBlackburn 6:a5cd7eb72264 308 if(state==1) {
JakBlackburn 6:a5cd7eb72264 309 sprintf(Dbuffer, "%.2f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 310 } else if(state !=1) {
JakBlackburn 6:a5cd7eb72264 311 sprintf(Dbuffer, "%.0f", distance*unitX); //prints the value to the serial port.
JakBlackburn 6:a5cd7eb72264 312 }
JakBlackburn 6:a5cd7eb72264 313 lcd.printString (buffer,0,0);
JakBlackburn 6:a5cd7eb72264 314 lcd.printString (Dbuffer,26,5);
JakBlackburn 6:a5cd7eb72264 315 lcd.printString (units,50,5);
JakBlackburn 4:2e9aa626a02c 316 lcd.refresh();
JakBlackburn 4:2e9aa626a02c 317 }
JakBlackburn 5:f9b97f057836 318 void LCDVis3()
JakBlackburn 5:f9b97f057836 319 {
JakBlackburn 4:2e9aa626a02c 320 lcd.clear();
JakBlackburn 6:a5cd7eb72264 321 if(logButtonFlag) {
JakBlackburn 6:a5cd7eb72264 322 lcd.printString("-L-",0,5);
JakBlackburn 6:a5cd7eb72264 323 }
JakBlackburn 6:a5cd7eb72264 324 lcd.printString (buffer,0,0);
JakBlackburn 4:2e9aa626a02c 325 int Dist=distance;
JakBlackburn 5:f9b97f057836 326 if(state==0) {
JakBlackburn 5:f9b97f057836 327 lcd.printString("CM",54,3);
JakBlackburn 4:2e9aa626a02c 328 }
JakBlackburn 5:f9b97f057836 329 if(state==1) {
JakBlackburn 5:f9b97f057836 330 lcd.decimal();
JakBlackburn 5:f9b97f057836 331 lcd.printString("M",54,3);
JakBlackburn 4:2e9aa626a02c 332 }
JakBlackburn 5:f9b97f057836 333 if(state==2) {
JakBlackburn 5:f9b97f057836 334 lcd.number0(57);
JakBlackburn 4:2e9aa626a02c 335 lcd.printString("MM",73,3);
JakBlackburn 4:2e9aa626a02c 336 }
JakBlackburn 4:2e9aa626a02c 337 int S=Dist %10;
JakBlackburn 4:2e9aa626a02c 338 pc.printf("singles - %d \n",S);
JakBlackburn 5:f9b97f057836 339 if(S==0) {
JakBlackburn 5:f9b97f057836 340 lcd.number0(38);
JakBlackburn 5:f9b97f057836 341 } else if(S==1) {
JakBlackburn 5:f9b97f057836 342 lcd.number1(38);
JakBlackburn 5:f9b97f057836 343 } else if(S==2) {
JakBlackburn 5:f9b97f057836 344 lcd.number2(38);
JakBlackburn 5:f9b97f057836 345 } else if(S==3) {
JakBlackburn 5:f9b97f057836 346 lcd.number3(38);
JakBlackburn 5:f9b97f057836 347 } else if(S==4) {
JakBlackburn 5:f9b97f057836 348 lcd.number4(38);
JakBlackburn 5:f9b97f057836 349 } else if(S==5) {
JakBlackburn 5:f9b97f057836 350 lcd.number5(38);
JakBlackburn 5:f9b97f057836 351 } else if(S==6) {
JakBlackburn 5:f9b97f057836 352 lcd.number6(38);
JakBlackburn 5:f9b97f057836 353 } else if(S==7) {
JakBlackburn 5:f9b97f057836 354 lcd.number7(38);
JakBlackburn 5:f9b97f057836 355 } else if(S==8) {
JakBlackburn 5:f9b97f057836 356 lcd.number8(38);
JakBlackburn 5:f9b97f057836 357 } else if(S==9) {
JakBlackburn 5:f9b97f057836 358 lcd.number9(38);
JakBlackburn 5:f9b97f057836 359 } else {
JakBlackburn 5:f9b97f057836 360 error(4);
JakBlackburn 3:00933efbe463 361 }
JakBlackburn 5:f9b97f057836 362
JakBlackburn 4:2e9aa626a02c 363 int T=Dist/10 %10;
JakBlackburn 5:f9b97f057836 364 pc.printf("tens - %d \n",T);
JakBlackburn 5:f9b97f057836 365 if(T==0) {
JakBlackburn 5:f9b97f057836 366 lcd.number0(19);
JakBlackburn 5:f9b97f057836 367 } else if(T==1) {
JakBlackburn 5:f9b97f057836 368 lcd.number1(19);
JakBlackburn 5:f9b97f057836 369 } else if(T==2) {
JakBlackburn 5:f9b97f057836 370 lcd.number2(19);
JakBlackburn 5:f9b97f057836 371 } else if(T==3) {
JakBlackburn 5:f9b97f057836 372 lcd.number3(19);
JakBlackburn 5:f9b97f057836 373 } else if(T==4) {
JakBlackburn 5:f9b97f057836 374 lcd.number4(19);
JakBlackburn 5:f9b97f057836 375 } else if(T==5) {
JakBlackburn 5:f9b97f057836 376 lcd.number5(19);
JakBlackburn 5:f9b97f057836 377 } else if(T==6) {
JakBlackburn 5:f9b97f057836 378 lcd.number6(19);
JakBlackburn 5:f9b97f057836 379 } else if(T==7) {
JakBlackburn 5:f9b97f057836 380 lcd.number7(19);
JakBlackburn 5:f9b97f057836 381 } else if(T==8) {
JakBlackburn 5:f9b97f057836 382 lcd.number8(19);
JakBlackburn 5:f9b97f057836 383 } else if(T==9) {
JakBlackburn 5:f9b97f057836 384 lcd.number9(19);
JakBlackburn 5:f9b97f057836 385 } else {
JakBlackburn 5:f9b97f057836 386 error(4);
JakBlackburn 4:2e9aa626a02c 387 }
JakBlackburn 4:2e9aa626a02c 388 int H=Dist/100 %10;
JakBlackburn 4:2e9aa626a02c 389 pc.printf("Hundreds - %d \n",H);
JakBlackburn 5:f9b97f057836 390 if(H==0) {
JakBlackburn 5:f9b97f057836 391
JakBlackburn 5:f9b97f057836 392 } else if(H==1) {
JakBlackburn 5:f9b97f057836 393 lcd.number1(0);
JakBlackburn 5:f9b97f057836 394 } else if(H==2) {
JakBlackburn 5:f9b97f057836 395 lcd.number2(0);
JakBlackburn 5:f9b97f057836 396 } else if(H==3) {
JakBlackburn 5:f9b97f057836 397 lcd.number3(0);
JakBlackburn 5:f9b97f057836 398 } else if(H==4) {
JakBlackburn 5:f9b97f057836 399 lcd.number4(0);
JakBlackburn 5:f9b97f057836 400 } else if(H==5) {
JakBlackburn 5:f9b97f057836 401 lcd.number5(0);
JakBlackburn 5:f9b97f057836 402 } else if(H==6) {
JakBlackburn 5:f9b97f057836 403 lcd.number6(0);
JakBlackburn 5:f9b97f057836 404 } else if(H==7) {
JakBlackburn 5:f9b97f057836 405 lcd.number7(0);
JakBlackburn 5:f9b97f057836 406 } else if(H==8) {
JakBlackburn 5:f9b97f057836 407 lcd.number8(0);
JakBlackburn 5:f9b97f057836 408 } else if(H==9) {
JakBlackburn 5:f9b97f057836 409 lcd.number9(0);
JakBlackburn 5:f9b97f057836 410 } else {
JakBlackburn 5:f9b97f057836 411 error(4);
JakBlackburn 4:2e9aa626a02c 412 }
JakBlackburn 5:f9b97f057836 413 lcd.refresh();
JakBlackburn 4:2e9aa626a02c 414 }
JakBlackburn 4:2e9aa626a02c 415
JakBlackburn 4:2e9aa626a02c 416
JakBlackburn 4:2e9aa626a02c 417
JakBlackburn 4:2e9aa626a02c 418
JakBlackburn 4:2e9aa626a02c 419
JakBlackburn 4:2e9aa626a02c 420
JakBlackburn 5:f9b97f057836 421 void car()
JakBlackburn 5:f9b97f057836 422 {
JakBlackburn 5:f9b97f057836 423 lcd.setPixel(4,19);
JakBlackburn 5:f9b97f057836 424 lcd.setPixel(5,19);
JakBlackburn 5:f9b97f057836 425 lcd.setPixel(6,19);
JakBlackburn 5:f9b97f057836 426 lcd.setPixel(10,19);
JakBlackburn 5:f9b97f057836 427 lcd.setPixel(11,19);
JakBlackburn 5:f9b97f057836 428 lcd.setPixel(12,19);
JakBlackburn 5:f9b97f057836 429 lcd.setPixel(4,20);
JakBlackburn 5:f9b97f057836 430 lcd.setPixel(5,20);
JakBlackburn 5:f9b97f057836 431 lcd.setPixel(6,20);
JakBlackburn 5:f9b97f057836 432 lcd.setPixel(10,20);
JakBlackburn 5:f9b97f057836 433 lcd.setPixel(11,20);
JakBlackburn 5:f9b97f057836 434 lcd.setPixel(12,20);
JakBlackburn 5:f9b97f057836 435 lcd.setPixel(1,21);
JakBlackburn 5:f9b97f057836 436 lcd.setPixel(2,21);
JakBlackburn 5:f9b97f057836 437 lcd.setPixel(3,21);
JakBlackburn 5:f9b97f057836 438 lcd.setPixel(4,21);
JakBlackburn 5:f9b97f057836 439 lcd.setPixel(5,21);
JakBlackburn 5:f9b97f057836 440 lcd.setPixel(6,21);
JakBlackburn 5:f9b97f057836 441 lcd.setPixel(7,21);
JakBlackburn 5:f9b97f057836 442 lcd.setPixel(8,21);
JakBlackburn 5:f9b97f057836 443 lcd.setPixel(9,21);
JakBlackburn 5:f9b97f057836 444 lcd.setPixel(10,21);
JakBlackburn 5:f9b97f057836 445 lcd.setPixel(11,21);
JakBlackburn 5:f9b97f057836 446 lcd.setPixel(12,21);
JakBlackburn 5:f9b97f057836 447 lcd.setPixel(13,21);
JakBlackburn 5:f9b97f057836 448 lcd.setPixel(0,22);
JakBlackburn 5:f9b97f057836 449 lcd.setPixel(1,22);
JakBlackburn 5:f9b97f057836 450 lcd.setPixel(2,22);
JakBlackburn 5:f9b97f057836 451 lcd.setPixel(3,22);
JakBlackburn 5:f9b97f057836 452 lcd.setPixel(4,22);
JakBlackburn 5:f9b97f057836 453 lcd.setPixel(6,22);
JakBlackburn 5:f9b97f057836 454 lcd.setPixel(7,22);
JakBlackburn 5:f9b97f057836 455 lcd.setPixel(8,22);
JakBlackburn 5:f9b97f057836 456 lcd.setPixel(9,22);
JakBlackburn 5:f9b97f057836 457 lcd.setPixel(10,22);
JakBlackburn 5:f9b97f057836 458 lcd.setPixel(12,22);
JakBlackburn 5:f9b97f057836 459 lcd.setPixel(13,22);
JakBlackburn 5:f9b97f057836 460 lcd.setPixel(0,23);
JakBlackburn 5:f9b97f057836 461 lcd.setPixel(1,23);
JakBlackburn 5:f9b97f057836 462 lcd.setPixel(2,23);
JakBlackburn 5:f9b97f057836 463 lcd.setPixel(3,23);
JakBlackburn 5:f9b97f057836 464 lcd.setPixel(6,23);
JakBlackburn 5:f9b97f057836 465 lcd.setPixel(7,23);
JakBlackburn 5:f9b97f057836 466 lcd.setPixel(8,23);
JakBlackburn 5:f9b97f057836 467 lcd.setPixel(9,23);
JakBlackburn 5:f9b97f057836 468 lcd.setPixel(10,23);
JakBlackburn 5:f9b97f057836 469 lcd.setPixel(12,23);
JakBlackburn 5:f9b97f057836 470 lcd.setPixel(13,23);
JakBlackburn 5:f9b97f057836 471 lcd.setPixel(0,24);
JakBlackburn 5:f9b97f057836 472 lcd.setPixel(1,24);
JakBlackburn 5:f9b97f057836 473 lcd.setPixel(2,24);
JakBlackburn 5:f9b97f057836 474 lcd.setPixel(3,24);
JakBlackburn 5:f9b97f057836 475 lcd.setPixel(6,24);
JakBlackburn 5:f9b97f057836 476 lcd.setPixel(7,24);
JakBlackburn 5:f9b97f057836 477 lcd.setPixel(8,24);
JakBlackburn 5:f9b97f057836 478 lcd.setPixel(9,24);
JakBlackburn 5:f9b97f057836 479 lcd.setPixel(10,24);
JakBlackburn 5:f9b97f057836 480 lcd.setPixel(12,24);
JakBlackburn 5:f9b97f057836 481 lcd.setPixel(13,24);
JakBlackburn 5:f9b97f057836 482 lcd.setPixel(0,25);
JakBlackburn 5:f9b97f057836 483 lcd.setPixel(1,25);
JakBlackburn 5:f9b97f057836 484 lcd.setPixel(2,25);
JakBlackburn 5:f9b97f057836 485 lcd.setPixel(3,25);
JakBlackburn 5:f9b97f057836 486 lcd.setPixel(6,25);
JakBlackburn 5:f9b97f057836 487 lcd.setPixel(7,25);
JakBlackburn 5:f9b97f057836 488 lcd.setPixel(8,25);
JakBlackburn 5:f9b97f057836 489 lcd.setPixel(9,25);
JakBlackburn 5:f9b97f057836 490 lcd.setPixel(10,25);
JakBlackburn 5:f9b97f057836 491 lcd.setPixel(12,25);
JakBlackburn 5:f9b97f057836 492 lcd.setPixel(13,25);
JakBlackburn 5:f9b97f057836 493 lcd.setPixel(0,26);
JakBlackburn 5:f9b97f057836 494 lcd.setPixel(1,26);
JakBlackburn 5:f9b97f057836 495 lcd.setPixel(2,26);
JakBlackburn 5:f9b97f057836 496 lcd.setPixel(3,26);
JakBlackburn 5:f9b97f057836 497 lcd.setPixel(4,26);
JakBlackburn 5:f9b97f057836 498 lcd.setPixel(6,26);
JakBlackburn 5:f9b97f057836 499 lcd.setPixel(7,26);
JakBlackburn 5:f9b97f057836 500 lcd.setPixel(8,26);
JakBlackburn 5:f9b97f057836 501 lcd.setPixel(9,26);
JakBlackburn 5:f9b97f057836 502 lcd.setPixel(10,26);
JakBlackburn 5:f9b97f057836 503 lcd.setPixel(12,26);
JakBlackburn 5:f9b97f057836 504 lcd.setPixel(13,26);
JakBlackburn 5:f9b97f057836 505 lcd.setPixel(1,27);
JakBlackburn 5:f9b97f057836 506 lcd.setPixel(2,27);
JakBlackburn 5:f9b97f057836 507 lcd.setPixel(3,27);
JakBlackburn 5:f9b97f057836 508 lcd.setPixel(4,27);
JakBlackburn 5:f9b97f057836 509 lcd.setPixel(5,27);
JakBlackburn 5:f9b97f057836 510 lcd.setPixel(6,27);
JakBlackburn 5:f9b97f057836 511 lcd.setPixel(7,27);
JakBlackburn 5:f9b97f057836 512 lcd.setPixel(8,27);
JakBlackburn 5:f9b97f057836 513 lcd.setPixel(9,27);
JakBlackburn 5:f9b97f057836 514 lcd.setPixel(10,27);
JakBlackburn 5:f9b97f057836 515 lcd.setPixel(11,27);
JakBlackburn 5:f9b97f057836 516 lcd.setPixel(12,27);
JakBlackburn 5:f9b97f057836 517 lcd.setPixel(13,27);
JakBlackburn 5:f9b97f057836 518 lcd.setPixel(4,28);
JakBlackburn 5:f9b97f057836 519 lcd.setPixel(5,28);
JakBlackburn 5:f9b97f057836 520 lcd.setPixel(6,28);
JakBlackburn 5:f9b97f057836 521 lcd.setPixel(10,28);
JakBlackburn 5:f9b97f057836 522 lcd.setPixel(11,28);
JakBlackburn 5:f9b97f057836 523 lcd.setPixel(12,28);
JakBlackburn 5:f9b97f057836 524 lcd.setPixel(4,29);
JakBlackburn 5:f9b97f057836 525 lcd.setPixel(5,29);
JakBlackburn 5:f9b97f057836 526 lcd.setPixel(6,29);
JakBlackburn 5:f9b97f057836 527 lcd.setPixel(10,29);
JakBlackburn 5:f9b97f057836 528 lcd.setPixel(11,29);
JakBlackburn 5:f9b97f057836 529 lcd.setPixel(12,29);
JakBlackburn 3:00933efbe463 530 }
JakBlackburn 3:00933efbe463 531
JakBlackburn 3:00933efbe463 532 void visToggle()
JakBlackburn 3:00933efbe463 533 {
JakBlackburn 3:00933efbe463 534 Vstate = Vfsm[Vstate].nextState[VisTog]; // read input and update current state
JakBlackburn 3:00933efbe463 535 visual = Vfsm[Vstate].visual; // set output depending on current state
JakBlackburn 3:00933efbe463 536 wait(0.2);
JakBlackburn 5:f9b97f057836 537 if(visual==0) {
JakBlackburn 3:00933efbe463 538 pc.printf("----Left to Right----\n\r");
JakBlackburn 3:00933efbe463 539 }
JakBlackburn 3:00933efbe463 540 if(visual==1) {
JakBlackburn 3:00933efbe463 541 pc.printf("----Up to Down----\n\r");
JakBlackburn 3:00933efbe463 542 }
JakBlackburn 3:00933efbe463 543 if(visual==2) {
JakBlackburn 4:2e9aa626a02c 544 pc.printf("----Car & Wall----\n\r");
JakBlackburn 4:2e9aa626a02c 545 }
JakBlackburn 4:2e9aa626a02c 546 if(visual==3) {
JakBlackburn 4:2e9aa626a02c 547 pc.printf("----Numbers----\n\r");
JakBlackburn 3:00933efbe463 548 }
JakBlackburn 0:73bfbe8729d4 549 }