Jakobi Blackburn / Mbed 2 deprecated UltrasonicDistanceSensor-el13jb

Dependencies:   N5110WN PowerControl SRF02 mbed

Committer:
JakBlackburn
Date:
Wed Apr 08 19:54:03 2015 +0000
Revision:
5:f9b97f057836
Parent:
4:2e9aa626a02c
Child:
6:a5cd7eb72264
Created a new member for the Speaker.h which creates a continuous note.; (See ContNote).; replaced waits in the scan speed with timers;

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 5:f9b97f057836 117 } else {
JakBlackburn 5:f9b97f057836 118 Buzzer.PlayNote(1000.0, 0.1, volume);
JakBlackburn 5:f9b97f057836 119 }
JakBlackburn 3:00933efbe463 120 WLED=0;
JakBlackburn 0:73bfbe8729d4 121 }
JakBlackburn 3:00933efbe463 122 float getDistance()
JakBlackburn 3:00933efbe463 123 {
JakBlackburn 0:73bfbe8729d4 124 int dist0 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 125
JakBlackburn 0:73bfbe8729d4 126 int dist1 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 127
JakBlackburn 0:73bfbe8729d4 128 int dist2 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 129
JakBlackburn 0:73bfbe8729d4 130 int dist3 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 131
JakBlackburn 0:73bfbe8729d4 132 int dist4 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 133
JakBlackburn 0:73bfbe8729d4 134 int dist5 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 135
JakBlackburn 0:73bfbe8729d4 136 int dist6 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 137
JakBlackburn 0:73bfbe8729d4 138 int dist7 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 139
JakBlackburn 0:73bfbe8729d4 140 int dist8 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 141
JakBlackburn 0:73bfbe8729d4 142 int dist9 = sensor.getDistanceCm();
JakBlackburn 5:f9b97f057836 143
JakBlackburn 3:00933efbe463 144 distance=(dist0+dist1+dist2+dist3+dist4+dist5+dist6+dist7+dist8+dist9)/10;
JakBlackburn 5:f9b97f057836 145
JakBlackburn 0:73bfbe8729d4 146 warnings();
JakBlackburn 1:7f151ab172cb 147 return distance;
JakBlackburn 0:73bfbe8729d4 148 }
JakBlackburn 0:73bfbe8729d4 149
JakBlackburn 3:00933efbe463 150 void unitToggle()
JakBlackburn 3:00933efbe463 151 {
JakBlackburn 1:7f151ab172cb 152 state = fsm[state].nextState[UnitTog]; // read input and update current state
JakBlackburn 0:73bfbe8729d4 153 unitX = fsm[state].unitMultiple; // set output depending on current state
JakBlackburn 3:00933efbe463 154 units= fsm[state].Unit; //
JakBlackburn 1:7f151ab172cb 155 wait(0.2);
JakBlackburn 1:7f151ab172cb 156 pc.printf("unit multiple = %.2f \n",unitX);
JakBlackburn 2:a1eaa4d74b63 157 pc.printf("Units = %s \n",units);
JakBlackburn 1:7f151ab172cb 158 }
JakBlackburn 1:7f151ab172cb 159
JakBlackburn 5:f9b97f057836 160
JakBlackburn 3:00933efbe463 161 void error(int E) //up to 14. IF 15 shown it is a ack bit error for the SRF02
JakBlackburn 3:00933efbe463 162 {
JakBlackburn 3:00933efbe463 163 while(1) {
JakBlackburn 1:7f151ab172cb 164 leds=0;
JakBlackburn 1:7f151ab172cb 165 wait(0.2);
JakBlackburn 1:7f151ab172cb 166 leds=E;
JakBlackburn 1:7f151ab172cb 167 wait(0.2);
JakBlackburn 1:7f151ab172cb 168 }
JakBlackburn 0:73bfbe8729d4 169 }
JakBlackburn 0:73bfbe8729d4 170
JakBlackburn 4:2e9aa626a02c 171 void logToggle()
JakBlackburn 1:7f151ab172cb 172 {
JakBlackburn 1:7f151ab172cb 173 logButtonFlag = !logButtonFlag; //flips the flag
JakBlackburn 1:7f151ab172cb 174 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 175 LLED=1; // Logging LED will be on if the device is logging
JakBlackburn 1:7f151ab172cb 176 pc.printf("-------\n Data Logging\n\r");
JakBlackburn 1:7f151ab172cb 177 } else {
JakBlackburn 1:7f151ab172cb 178 LLED=0; // Logging LED will be off if the device isn't logging
JakBlackburn 1:7f151ab172cb 179 pc.printf("-------\n Stopped Logging Data\n\r");
JakBlackburn 0:73bfbe8729d4 180 }
JakBlackburn 1:7f151ab172cb 181 wait(0.2);
JakBlackburn 1:7f151ab172cb 182 }
JakBlackburn 1:7f151ab172cb 183
JakBlackburn 1:7f151ab172cb 184 void logging(char* data,float data1)
JakBlackburn 1:7f151ab172cb 185 {
JakBlackburn 1:7f151ab172cb 186 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 187 FILE *fp = fopen("/local/log.csv", "a"); // open 'log.csv' for appending
JakBlackburn 1:7f151ab172cb 188 // if the file doesn't exist it is created, if it exists, data is appended to the end
JakBlackburn 1:7f151ab172cb 189 fprintf(fp," %s , %.2f\n ",data,data1); // print string to file
JakBlackburn 1:7f151ab172cb 190 fclose(fp); // close file
JakBlackburn 4:2e9aa626a02c 191 pc.printf("Data Logged\n");
JakBlackburn 1:7f151ab172cb 192 LLED=1; //keeps the led on if it is logging
JakBlackburn 1:7f151ab172cb 193 } else {
JakBlackburn 4:2e9aa626a02c 194 pc.printf("WARNING : Unlogged Data\n");
JakBlackburn 1:7f151ab172cb 195 LLED=0;
JakBlackburn 0:73bfbe8729d4 196 }
JakBlackburn 1:7f151ab172cb 197 }
JakBlackburn 1:7f151ab172cb 198
JakBlackburn 1:7f151ab172cb 199 void setTime()
JakBlackburn 1:7f151ab172cb 200 {
JakBlackburn 1:7f151ab172cb 201 // print time for debugging
JakBlackburn 1:7f151ab172cb 202 pc.printf("set time - %s",rxString);
JakBlackburn 1:7f151ab172cb 203 // atoi() converts a string to an integer
JakBlackburn 1:7f151ab172cb 204 int time = atoi(rxString);
JakBlackburn 1:7f151ab172cb 205 // update the time
JakBlackburn 1:7f151ab172cb 206 set_time(time);
JakBlackburn 3:00933efbe463 207 pc.printf("set time - %d",time);
JakBlackburn 1:7f151ab172cb 208 }
JakBlackburn 1:7f151ab172cb 209 void serialISR()
JakBlackburn 1:7f151ab172cb 210 {
JakBlackburn 1:7f151ab172cb 211 // when a serial interrupt occurs, read rx string into buffer
JakBlackburn 1:7f151ab172cb 212 pc.gets(rxString,16);
JakBlackburn 1:7f151ab172cb 213 // set flag
JakBlackburn 1:7f151ab172cb 214 setTimeFlag = 1;
JakBlackburn 2:a1eaa4d74b63 215 }
JakBlackburn 2:a1eaa4d74b63 216
JakBlackburn 2:a1eaa4d74b63 217 void introTune()
JakBlackburn 2:a1eaa4d74b63 218 {
JakBlackburn 2:a1eaa4d74b63 219 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 220 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 221 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 222 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 223 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 224 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 225 Buzzer.PlayNote(1047.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 226 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 227 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 228 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 229 Buzzer.PlayNote(1568.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 230 wait(0.26);
JakBlackburn 2:a1eaa4d74b63 231 Buzzer.PlayNote(784.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 232 }
JakBlackburn 2:a1eaa4d74b63 233
JakBlackburn 2:a1eaa4d74b63 234 void checkerBoard() // creates a checked pattern on the lcd
JakBlackburn 2:a1eaa4d74b63 235 {
JakBlackburn 2:a1eaa4d74b63 236 for(int i=0; i<84; i+=2) {
JakBlackburn 2:a1eaa4d74b63 237 for(int j=0; j<48; j+=2) {
JakBlackburn 2:a1eaa4d74b63 238 lcd.setPixel(i,j);
JakBlackburn 2:a1eaa4d74b63 239 }
JakBlackburn 2:a1eaa4d74b63 240 }
JakBlackburn 2:a1eaa4d74b63 241 lcd.refresh();
JakBlackburn 3:00933efbe463 242 }
JakBlackburn 3:00933efbe463 243
JakBlackburn 3:00933efbe463 244 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 245 {
JakBlackburn 3:00933efbe463 246 lcd.clear();
JakBlackburn 3:00933efbe463 247 int I = distance*0.337; //and then multiplies the current distance by that value as (84/249) =0.337...
JakBlackburn 4:2e9aa626a02c 248 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 4:2e9aa626a02c 249 lcd.drawRect(0,18,I,12,1);
JakBlackburn 3:00933efbe463 250 lcd.refresh();
JakBlackburn 3:00933efbe463 251 }
JakBlackburn 3:00933efbe463 252
JakBlackburn 3:00933efbe463 253 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 254 {
JakBlackburn 3:00933efbe463 255 lcd.clear();
JakBlackburn 3:00933efbe463 256 int J = distance*0.19; //and then multiplies the current distance by that value as (48/249) = 0.19..
JakBlackburn 5:f9b97f057836 257 if(J>=48) {
JakBlackburn 5:f9b97f057836 258 J=48;
JakBlackburn 5:f9b97f057836 259 }
JakBlackburn 4:2e9aa626a02c 260 pc.printf("bar height - %d pixels \n",J);
JakBlackburn 4:2e9aa626a02c 261 lcd.drawRect(27,48-J,30,48,1);
JakBlackburn 3:00933efbe463 262 lcd.refresh();
JakBlackburn 3:00933efbe463 263 }
JakBlackburn 3:00933efbe463 264
JakBlackburn 5:f9b97f057836 265 void LCDVis2()
JakBlackburn 5:f9b97f057836 266 {
JakBlackburn 4:2e9aa626a02c 267 lcd.clear();
JakBlackburn 4:2e9aa626a02c 268 car();
JakBlackburn 4:2e9aa626a02c 269 int I = distance*0.277; //and then multiplies the current distance by that value as (69/249) =0.277...
JakBlackburn 5:f9b97f057836 270 if(I>=84) {
JakBlackburn 5:f9b97f057836 271 I=84;
JakBlackburn 5:f9b97f057836 272 }
JakBlackburn 4:2e9aa626a02c 273 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 4:2e9aa626a02c 274 lcd.drawRect(I+15,9,69,30,1);
JakBlackburn 4:2e9aa626a02c 275 lcd.refresh();
JakBlackburn 4:2e9aa626a02c 276 }
JakBlackburn 5:f9b97f057836 277 void LCDVis3()
JakBlackburn 5:f9b97f057836 278 {
JakBlackburn 4:2e9aa626a02c 279 lcd.clear();
JakBlackburn 4:2e9aa626a02c 280 int Dist=distance;
JakBlackburn 5:f9b97f057836 281 if(state==0) {
JakBlackburn 5:f9b97f057836 282 lcd.printString("CM",54,3);
JakBlackburn 4:2e9aa626a02c 283 }
JakBlackburn 5:f9b97f057836 284 if(state==1) {
JakBlackburn 5:f9b97f057836 285 lcd.decimal();
JakBlackburn 5:f9b97f057836 286 lcd.printString("M",54,3);
JakBlackburn 4:2e9aa626a02c 287 }
JakBlackburn 5:f9b97f057836 288 if(state==2) {
JakBlackburn 5:f9b97f057836 289 lcd.number0(57);
JakBlackburn 4:2e9aa626a02c 290 lcd.printString("MM",73,3);
JakBlackburn 4:2e9aa626a02c 291 }
JakBlackburn 4:2e9aa626a02c 292 int S=Dist %10;
JakBlackburn 4:2e9aa626a02c 293 pc.printf("singles - %d \n",S);
JakBlackburn 5:f9b97f057836 294 if(S==0) {
JakBlackburn 5:f9b97f057836 295 lcd.number0(38);
JakBlackburn 5:f9b97f057836 296 } else if(S==1) {
JakBlackburn 5:f9b97f057836 297 lcd.number1(38);
JakBlackburn 5:f9b97f057836 298 } else if(S==2) {
JakBlackburn 5:f9b97f057836 299 lcd.number2(38);
JakBlackburn 5:f9b97f057836 300 } else if(S==3) {
JakBlackburn 5:f9b97f057836 301 lcd.number3(38);
JakBlackburn 5:f9b97f057836 302 } else if(S==4) {
JakBlackburn 5:f9b97f057836 303 lcd.number4(38);
JakBlackburn 5:f9b97f057836 304 } else if(S==5) {
JakBlackburn 5:f9b97f057836 305 lcd.number5(38);
JakBlackburn 5:f9b97f057836 306 } else if(S==6) {
JakBlackburn 5:f9b97f057836 307 lcd.number6(38);
JakBlackburn 5:f9b97f057836 308 } else if(S==7) {
JakBlackburn 5:f9b97f057836 309 lcd.number7(38);
JakBlackburn 5:f9b97f057836 310 } else if(S==8) {
JakBlackburn 5:f9b97f057836 311 lcd.number8(38);
JakBlackburn 5:f9b97f057836 312 } else if(S==9) {
JakBlackburn 5:f9b97f057836 313 lcd.number9(38);
JakBlackburn 5:f9b97f057836 314 } else {
JakBlackburn 5:f9b97f057836 315 error(4);
JakBlackburn 3:00933efbe463 316 }
JakBlackburn 5:f9b97f057836 317
JakBlackburn 4:2e9aa626a02c 318 int T=Dist/10 %10;
JakBlackburn 5:f9b97f057836 319 pc.printf("tens - %d \n",T);
JakBlackburn 5:f9b97f057836 320 if(T==0) {
JakBlackburn 5:f9b97f057836 321 lcd.number0(19);
JakBlackburn 5:f9b97f057836 322 } else if(T==1) {
JakBlackburn 5:f9b97f057836 323 lcd.number1(19);
JakBlackburn 5:f9b97f057836 324 } else if(T==2) {
JakBlackburn 5:f9b97f057836 325 lcd.number2(19);
JakBlackburn 5:f9b97f057836 326 } else if(T==3) {
JakBlackburn 5:f9b97f057836 327 lcd.number3(19);
JakBlackburn 5:f9b97f057836 328 } else if(T==4) {
JakBlackburn 5:f9b97f057836 329 lcd.number4(19);
JakBlackburn 5:f9b97f057836 330 } else if(T==5) {
JakBlackburn 5:f9b97f057836 331 lcd.number5(19);
JakBlackburn 5:f9b97f057836 332 } else if(T==6) {
JakBlackburn 5:f9b97f057836 333 lcd.number6(19);
JakBlackburn 5:f9b97f057836 334 } else if(T==7) {
JakBlackburn 5:f9b97f057836 335 lcd.number7(19);
JakBlackburn 5:f9b97f057836 336 } else if(T==8) {
JakBlackburn 5:f9b97f057836 337 lcd.number8(19);
JakBlackburn 5:f9b97f057836 338 } else if(T==9) {
JakBlackburn 5:f9b97f057836 339 lcd.number9(19);
JakBlackburn 5:f9b97f057836 340 } else {
JakBlackburn 5:f9b97f057836 341 error(4);
JakBlackburn 4:2e9aa626a02c 342 }
JakBlackburn 4:2e9aa626a02c 343 int H=Dist/100 %10;
JakBlackburn 4:2e9aa626a02c 344 pc.printf("Hundreds - %d \n",H);
JakBlackburn 5:f9b97f057836 345 if(H==0) {
JakBlackburn 5:f9b97f057836 346
JakBlackburn 5:f9b97f057836 347 } else if(H==1) {
JakBlackburn 5:f9b97f057836 348 lcd.number1(0);
JakBlackburn 5:f9b97f057836 349 } else if(H==2) {
JakBlackburn 5:f9b97f057836 350 lcd.number2(0);
JakBlackburn 5:f9b97f057836 351 } else if(H==3) {
JakBlackburn 5:f9b97f057836 352 lcd.number3(0);
JakBlackburn 5:f9b97f057836 353 } else if(H==4) {
JakBlackburn 5:f9b97f057836 354 lcd.number4(0);
JakBlackburn 5:f9b97f057836 355 } else if(H==5) {
JakBlackburn 5:f9b97f057836 356 lcd.number5(0);
JakBlackburn 5:f9b97f057836 357 } else if(H==6) {
JakBlackburn 5:f9b97f057836 358 lcd.number6(0);
JakBlackburn 5:f9b97f057836 359 } else if(H==7) {
JakBlackburn 5:f9b97f057836 360 lcd.number7(0);
JakBlackburn 5:f9b97f057836 361 } else if(H==8) {
JakBlackburn 5:f9b97f057836 362 lcd.number8(0);
JakBlackburn 5:f9b97f057836 363 } else if(H==9) {
JakBlackburn 5:f9b97f057836 364 lcd.number9(0);
JakBlackburn 5:f9b97f057836 365 } else {
JakBlackburn 5:f9b97f057836 366 error(4);
JakBlackburn 4:2e9aa626a02c 367 }
JakBlackburn 5:f9b97f057836 368 lcd.refresh();
JakBlackburn 4:2e9aa626a02c 369 }
JakBlackburn 4:2e9aa626a02c 370
JakBlackburn 4:2e9aa626a02c 371
JakBlackburn 4:2e9aa626a02c 372
JakBlackburn 4:2e9aa626a02c 373
JakBlackburn 4:2e9aa626a02c 374
JakBlackburn 4:2e9aa626a02c 375
JakBlackburn 5:f9b97f057836 376 void car()
JakBlackburn 5:f9b97f057836 377 {
JakBlackburn 5:f9b97f057836 378 lcd.setPixel(4,19);
JakBlackburn 5:f9b97f057836 379 lcd.setPixel(5,19);
JakBlackburn 5:f9b97f057836 380 lcd.setPixel(6,19);
JakBlackburn 5:f9b97f057836 381 lcd.setPixel(10,19);
JakBlackburn 5:f9b97f057836 382 lcd.setPixel(11,19);
JakBlackburn 5:f9b97f057836 383 lcd.setPixel(12,19);
JakBlackburn 5:f9b97f057836 384 lcd.setPixel(4,20);
JakBlackburn 5:f9b97f057836 385 lcd.setPixel(5,20);
JakBlackburn 5:f9b97f057836 386 lcd.setPixel(6,20);
JakBlackburn 5:f9b97f057836 387 lcd.setPixel(10,20);
JakBlackburn 5:f9b97f057836 388 lcd.setPixel(11,20);
JakBlackburn 5:f9b97f057836 389 lcd.setPixel(12,20);
JakBlackburn 5:f9b97f057836 390 lcd.setPixel(1,21);
JakBlackburn 5:f9b97f057836 391 lcd.setPixel(2,21);
JakBlackburn 5:f9b97f057836 392 lcd.setPixel(3,21);
JakBlackburn 5:f9b97f057836 393 lcd.setPixel(4,21);
JakBlackburn 5:f9b97f057836 394 lcd.setPixel(5,21);
JakBlackburn 5:f9b97f057836 395 lcd.setPixel(6,21);
JakBlackburn 5:f9b97f057836 396 lcd.setPixel(7,21);
JakBlackburn 5:f9b97f057836 397 lcd.setPixel(8,21);
JakBlackburn 5:f9b97f057836 398 lcd.setPixel(9,21);
JakBlackburn 5:f9b97f057836 399 lcd.setPixel(10,21);
JakBlackburn 5:f9b97f057836 400 lcd.setPixel(11,21);
JakBlackburn 5:f9b97f057836 401 lcd.setPixel(12,21);
JakBlackburn 5:f9b97f057836 402 lcd.setPixel(13,21);
JakBlackburn 5:f9b97f057836 403 lcd.setPixel(0,22);
JakBlackburn 5:f9b97f057836 404 lcd.setPixel(1,22);
JakBlackburn 5:f9b97f057836 405 lcd.setPixel(2,22);
JakBlackburn 5:f9b97f057836 406 lcd.setPixel(3,22);
JakBlackburn 5:f9b97f057836 407 lcd.setPixel(4,22);
JakBlackburn 5:f9b97f057836 408 lcd.setPixel(6,22);
JakBlackburn 5:f9b97f057836 409 lcd.setPixel(7,22);
JakBlackburn 5:f9b97f057836 410 lcd.setPixel(8,22);
JakBlackburn 5:f9b97f057836 411 lcd.setPixel(9,22);
JakBlackburn 5:f9b97f057836 412 lcd.setPixel(10,22);
JakBlackburn 5:f9b97f057836 413 lcd.setPixel(12,22);
JakBlackburn 5:f9b97f057836 414 lcd.setPixel(13,22);
JakBlackburn 5:f9b97f057836 415 lcd.setPixel(0,23);
JakBlackburn 5:f9b97f057836 416 lcd.setPixel(1,23);
JakBlackburn 5:f9b97f057836 417 lcd.setPixel(2,23);
JakBlackburn 5:f9b97f057836 418 lcd.setPixel(3,23);
JakBlackburn 5:f9b97f057836 419 lcd.setPixel(6,23);
JakBlackburn 5:f9b97f057836 420 lcd.setPixel(7,23);
JakBlackburn 5:f9b97f057836 421 lcd.setPixel(8,23);
JakBlackburn 5:f9b97f057836 422 lcd.setPixel(9,23);
JakBlackburn 5:f9b97f057836 423 lcd.setPixel(10,23);
JakBlackburn 5:f9b97f057836 424 lcd.setPixel(12,23);
JakBlackburn 5:f9b97f057836 425 lcd.setPixel(13,23);
JakBlackburn 5:f9b97f057836 426 lcd.setPixel(0,24);
JakBlackburn 5:f9b97f057836 427 lcd.setPixel(1,24);
JakBlackburn 5:f9b97f057836 428 lcd.setPixel(2,24);
JakBlackburn 5:f9b97f057836 429 lcd.setPixel(3,24);
JakBlackburn 5:f9b97f057836 430 lcd.setPixel(6,24);
JakBlackburn 5:f9b97f057836 431 lcd.setPixel(7,24);
JakBlackburn 5:f9b97f057836 432 lcd.setPixel(8,24);
JakBlackburn 5:f9b97f057836 433 lcd.setPixel(9,24);
JakBlackburn 5:f9b97f057836 434 lcd.setPixel(10,24);
JakBlackburn 5:f9b97f057836 435 lcd.setPixel(12,24);
JakBlackburn 5:f9b97f057836 436 lcd.setPixel(13,24);
JakBlackburn 5:f9b97f057836 437 lcd.setPixel(0,25);
JakBlackburn 5:f9b97f057836 438 lcd.setPixel(1,25);
JakBlackburn 5:f9b97f057836 439 lcd.setPixel(2,25);
JakBlackburn 5:f9b97f057836 440 lcd.setPixel(3,25);
JakBlackburn 5:f9b97f057836 441 lcd.setPixel(6,25);
JakBlackburn 5:f9b97f057836 442 lcd.setPixel(7,25);
JakBlackburn 5:f9b97f057836 443 lcd.setPixel(8,25);
JakBlackburn 5:f9b97f057836 444 lcd.setPixel(9,25);
JakBlackburn 5:f9b97f057836 445 lcd.setPixel(10,25);
JakBlackburn 5:f9b97f057836 446 lcd.setPixel(12,25);
JakBlackburn 5:f9b97f057836 447 lcd.setPixel(13,25);
JakBlackburn 5:f9b97f057836 448 lcd.setPixel(0,26);
JakBlackburn 5:f9b97f057836 449 lcd.setPixel(1,26);
JakBlackburn 5:f9b97f057836 450 lcd.setPixel(2,26);
JakBlackburn 5:f9b97f057836 451 lcd.setPixel(3,26);
JakBlackburn 5:f9b97f057836 452 lcd.setPixel(4,26);
JakBlackburn 5:f9b97f057836 453 lcd.setPixel(6,26);
JakBlackburn 5:f9b97f057836 454 lcd.setPixel(7,26);
JakBlackburn 5:f9b97f057836 455 lcd.setPixel(8,26);
JakBlackburn 5:f9b97f057836 456 lcd.setPixel(9,26);
JakBlackburn 5:f9b97f057836 457 lcd.setPixel(10,26);
JakBlackburn 5:f9b97f057836 458 lcd.setPixel(12,26);
JakBlackburn 5:f9b97f057836 459 lcd.setPixel(13,26);
JakBlackburn 5:f9b97f057836 460 lcd.setPixel(1,27);
JakBlackburn 5:f9b97f057836 461 lcd.setPixel(2,27);
JakBlackburn 5:f9b97f057836 462 lcd.setPixel(3,27);
JakBlackburn 5:f9b97f057836 463 lcd.setPixel(4,27);
JakBlackburn 5:f9b97f057836 464 lcd.setPixel(5,27);
JakBlackburn 5:f9b97f057836 465 lcd.setPixel(6,27);
JakBlackburn 5:f9b97f057836 466 lcd.setPixel(7,27);
JakBlackburn 5:f9b97f057836 467 lcd.setPixel(8,27);
JakBlackburn 5:f9b97f057836 468 lcd.setPixel(9,27);
JakBlackburn 5:f9b97f057836 469 lcd.setPixel(10,27);
JakBlackburn 5:f9b97f057836 470 lcd.setPixel(11,27);
JakBlackburn 5:f9b97f057836 471 lcd.setPixel(12,27);
JakBlackburn 5:f9b97f057836 472 lcd.setPixel(13,27);
JakBlackburn 5:f9b97f057836 473 lcd.setPixel(4,28);
JakBlackburn 5:f9b97f057836 474 lcd.setPixel(5,28);
JakBlackburn 5:f9b97f057836 475 lcd.setPixel(6,28);
JakBlackburn 5:f9b97f057836 476 lcd.setPixel(10,28);
JakBlackburn 5:f9b97f057836 477 lcd.setPixel(11,28);
JakBlackburn 5:f9b97f057836 478 lcd.setPixel(12,28);
JakBlackburn 5:f9b97f057836 479 lcd.setPixel(4,29);
JakBlackburn 5:f9b97f057836 480 lcd.setPixel(5,29);
JakBlackburn 5:f9b97f057836 481 lcd.setPixel(6,29);
JakBlackburn 5:f9b97f057836 482 lcd.setPixel(10,29);
JakBlackburn 5:f9b97f057836 483 lcd.setPixel(11,29);
JakBlackburn 5:f9b97f057836 484 lcd.setPixel(12,29);
JakBlackburn 3:00933efbe463 485 }
JakBlackburn 3:00933efbe463 486
JakBlackburn 3:00933efbe463 487 void visToggle()
JakBlackburn 3:00933efbe463 488 {
JakBlackburn 3:00933efbe463 489 Vstate = Vfsm[Vstate].nextState[VisTog]; // read input and update current state
JakBlackburn 3:00933efbe463 490 visual = Vfsm[Vstate].visual; // set output depending on current state
JakBlackburn 3:00933efbe463 491 wait(0.2);
JakBlackburn 5:f9b97f057836 492 if(visual==0) {
JakBlackburn 3:00933efbe463 493 pc.printf("----Left to Right----\n\r");
JakBlackburn 3:00933efbe463 494 }
JakBlackburn 3:00933efbe463 495 if(visual==1) {
JakBlackburn 3:00933efbe463 496 pc.printf("----Up to Down----\n\r");
JakBlackburn 3:00933efbe463 497 }
JakBlackburn 3:00933efbe463 498 if(visual==2) {
JakBlackburn 4:2e9aa626a02c 499 pc.printf("----Car & Wall----\n\r");
JakBlackburn 4:2e9aa626a02c 500 }
JakBlackburn 4:2e9aa626a02c 501 if(visual==3) {
JakBlackburn 4:2e9aa626a02c 502 pc.printf("----Numbers----\n\r");
JakBlackburn 3:00933efbe463 503 }
JakBlackburn 0:73bfbe8729d4 504 }