Jakobi Blackburn / Mbed 2 deprecated UltrasonicDistanceSensor-el13jb

Dependencies:   N5110WN PowerControl SRF02 mbed

Committer:
JakBlackburn
Date:
Wed Apr 08 00:46:27 2015 +0000
Revision:
4:2e9aa626a02c
Parent:
3:00933efbe463
Child:
5:f9b97f057836
designed and added the ability to print large numbers.; Also did some documentation and started on the number based visual representation

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 1:7f151ab172cb 11 timer.attach(&timerExpired,0.5);
JakBlackburn 4:2e9aa626a02c 12 LogTog.rise(&logToggle);
JakBlackburn 1:7f151ab172cb 13 UnitTog.rise(&unitToggle);
JakBlackburn 3:00933efbe463 14 VisTog.rise(&visToggle);
JakBlackburn 1:7f151ab172cb 15 pc.attach(&serialISR); // attach serial ISR
JakBlackburn 1:7f151ab172cb 16 char buffer[30]; // buffer used to store time string
JakBlackburn 1:7f151ab172cb 17 set_time(1427846400); // initialise time to 1st April 2015 00:00:00
JakBlackburn 3:00933efbe463 18
JakBlackburn 2:a1eaa4d74b63 19 BLED.period(0.02); //sets the frequency of the Backlight at 50Hz
JakBlackburn 3:00933efbe463 20 BLED=BLEDLevel.read(); //sets the brightness
JakBlackburn 2:a1eaa4d74b63 21 lcd.init(); //to initilize the display
JakBlackburn 2:a1eaa4d74b63 22 checkerBoard();
JakBlackburn 2:a1eaa4d74b63 23 wait(0.2);
JakBlackburn 2:a1eaa4d74b63 24 lcd.clear();
JakBlackburn 3:00933efbe463 25
JakBlackburn 2:a1eaa4d74b63 26 introTune(); // plays the intro tune
JakBlackburn 2:a1eaa4d74b63 27 lcd.printString("Parking",20,0);
JakBlackburn 3:00933efbe463 28 lcd.printString("Sensor",23,1);
JakBlackburn 2:a1eaa4d74b63 29 lcd.printString("by",35,2);
JakBlackburn 2:a1eaa4d74b63 30 lcd.printString("Jakobi",24,3);
JakBlackburn 2:a1eaa4d74b63 31 lcd.printString("Blackburn",16,4);
JakBlackburn 3:00933efbe463 32 wait(2);
JakBlackburn 2:a1eaa4d74b63 33 lcd.clear();
JakBlackburn 0:73bfbe8729d4 34 while(1) {
JakBlackburn 4:2e9aa626a02c 35
JakBlackburn 3:00933efbe463 36 if(timerFlag) {
JakBlackburn 4:2e9aa626a02c 37 BLED=BLEDLevel.read(); //sets the brightness
JakBlackburn 1:7f151ab172cb 38 timerFlag = 0; //resets flag
JakBlackburn 1:7f151ab172cb 39 time_t seconds = time(NULL); // get current time
JakBlackburn 1:7f151ab172cb 40 // format time into a string (time and date)
JakBlackburn 1:7f151ab172cb 41 strftime(buffer, 30 , "%d/%m/%y %R", localtime(&seconds));
JakBlackburn 3:00933efbe463 42 float dist = getDistance()*unitX; //reads the distance and sets it to a float value.
JakBlackburn 1:7f151ab172cb 43 //prints the value to the serial port.
JakBlackburn 3:00933efbe463 44 if(state==1) {
JakBlackburn 3:00933efbe463 45 pc.printf("%s , Distance = %.2f %s \n",buffer,dist,units); //prints the value to the serial port.
JakBlackburn 3:00933efbe463 46 }
JakBlackburn 3:00933efbe463 47 else if(state !=1) {
JakBlackburn 3:00933efbe463 48 pc.printf("%s , Distance = %.0f %s \n",buffer,dist,units); //prints the value to the serial port.
JakBlackburn 3:00933efbe463 49 }
JakBlackburn 3:00933efbe463 50 logging(buffer,distance);
JakBlackburn 3:00933efbe463 51 if(visual==0) {
JakBlackburn 3:00933efbe463 52 LCDVis0();
JakBlackburn 3:00933efbe463 53 }
JakBlackburn 3:00933efbe463 54 else if(visual==1) {
JakBlackburn 3:00933efbe463 55 LCDVis1();
JakBlackburn 3:00933efbe463 56 }
JakBlackburn 3:00933efbe463 57 else if(visual==2) {
JakBlackburn 3:00933efbe463 58 LCDVis2();
JakBlackburn 3:00933efbe463 59 }
JakBlackburn 4:2e9aa626a02c 60 else if(visual==3) {
JakBlackburn 4:2e9aa626a02c 61 LCDVis3();
JakBlackburn 4:2e9aa626a02c 62 }
JakBlackburn 3:00933efbe463 63 else{ error(2);}
JakBlackburn 3:00933efbe463 64
JakBlackburn 3:00933efbe463 65 }
JakBlackburn 3:00933efbe463 66 if (setTimeFlag) { // if updated time has been sent
JakBlackburn 1:7f151ab172cb 67 setTimeFlag = 0; // clear flag
JakBlackburn 1:7f151ab172cb 68 setTime(); // update time
JakBlackburn 1:7f151ab172cb 69 }
JakBlackburn 2:a1eaa4d74b63 70 Sleep();
JakBlackburn 0:73bfbe8729d4 71 }
JakBlackburn 0:73bfbe8729d4 72 }
JakBlackburn 0:73bfbe8729d4 73
JakBlackburn 3:00933efbe463 74 void timerExpired()
JakBlackburn 3:00933efbe463 75 {
JakBlackburn 3:00933efbe463 76 timerFlag=1;
JakBlackburn 0:73bfbe8729d4 77 }
JakBlackburn 0:73bfbe8729d4 78
JakBlackburn 0:73bfbe8729d4 79
JakBlackburn 3:00933efbe463 80 void warnings()
JakBlackburn 3:00933efbe463 81 {
JakBlackburn 0:73bfbe8729d4 82 WLED=1;
JakBlackburn 0:73bfbe8729d4 83 volume= BuzVol.read();
JakBlackburn 3:00933efbe463 84 Buzzer.PlayNote(1000.0, 0.1, volume);
JakBlackburn 3:00933efbe463 85 WLED=0;
JakBlackburn 0:73bfbe8729d4 86 }
JakBlackburn 3:00933efbe463 87 float getDistance()
JakBlackburn 3:00933efbe463 88 {
JakBlackburn 0:73bfbe8729d4 89 int dist0 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 90 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 91 int dist1 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 92 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 93 int dist2 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 94 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 95 int dist3 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 96 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 97 int dist4 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 98 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 99 int dist5 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 100 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 101 int dist6 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 102 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 103 int dist7 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 104 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 105 int dist8 = sensor.getDistanceCm();
JakBlackburn 1:7f151ab172cb 106 wait(0.1*scanSpeed);
JakBlackburn 0:73bfbe8729d4 107 int dist9 = sensor.getDistanceCm();
JakBlackburn 3:00933efbe463 108 distance=(dist0+dist1+dist2+dist3+dist4+dist5+dist6+dist7+dist8+dist9)/10;
JakBlackburn 1:7f151ab172cb 109 setScanSpeed();
JakBlackburn 0:73bfbe8729d4 110 warnings();
JakBlackburn 1:7f151ab172cb 111 return distance;
JakBlackburn 0:73bfbe8729d4 112 }
JakBlackburn 0:73bfbe8729d4 113
JakBlackburn 3:00933efbe463 114 void unitToggle()
JakBlackburn 3:00933efbe463 115 {
JakBlackburn 1:7f151ab172cb 116 state = fsm[state].nextState[UnitTog]; // read input and update current state
JakBlackburn 0:73bfbe8729d4 117 unitX = fsm[state].unitMultiple; // set output depending on current state
JakBlackburn 3:00933efbe463 118 units= fsm[state].Unit; //
JakBlackburn 1:7f151ab172cb 119 wait(0.2);
JakBlackburn 1:7f151ab172cb 120 pc.printf("unit multiple = %.2f \n",unitX);
JakBlackburn 2:a1eaa4d74b63 121 pc.printf("Units = %s \n",units);
JakBlackburn 1:7f151ab172cb 122 }
JakBlackburn 1:7f151ab172cb 123
JakBlackburn 3:00933efbe463 124 void setScanSpeed()
JakBlackburn 3:00933efbe463 125 {
JakBlackburn 3:00933efbe463 126 if(distance>=100) {
JakBlackburn 3:00933efbe463 127 scanSpeed=2; // sets the speed to normal
JakBlackburn 3:00933efbe463 128 } else if(distance>=25) {
JakBlackburn 3:00933efbe463 129 scanSpeed=1; // double speed
JakBlackburn 3:00933efbe463 130 } else if(distance<25) {
JakBlackburn 3:00933efbe463 131 scanSpeed=0.25; // quad speed
JakBlackburn 3:00933efbe463 132 } else{ error(1);}
JakBlackburn 1:7f151ab172cb 133 }
JakBlackburn 3:00933efbe463 134 void error(int E) //up to 14. IF 15 shown it is a ack bit error for the SRF02
JakBlackburn 3:00933efbe463 135 {
JakBlackburn 3:00933efbe463 136 while(1) {
JakBlackburn 1:7f151ab172cb 137 leds=0;
JakBlackburn 1:7f151ab172cb 138 wait(0.2);
JakBlackburn 1:7f151ab172cb 139 leds=E;
JakBlackburn 1:7f151ab172cb 140 wait(0.2);
JakBlackburn 1:7f151ab172cb 141 }
JakBlackburn 0:73bfbe8729d4 142 }
JakBlackburn 0:73bfbe8729d4 143
JakBlackburn 4:2e9aa626a02c 144 void logToggle()
JakBlackburn 1:7f151ab172cb 145 {
JakBlackburn 1:7f151ab172cb 146 logButtonFlag = !logButtonFlag; //flips the flag
JakBlackburn 1:7f151ab172cb 147 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 148 LLED=1; // Logging LED will be on if the device is logging
JakBlackburn 1:7f151ab172cb 149 pc.printf("-------\n Data Logging\n\r");
JakBlackburn 1:7f151ab172cb 150 } else {
JakBlackburn 1:7f151ab172cb 151 LLED=0; // Logging LED will be off if the device isn't logging
JakBlackburn 1:7f151ab172cb 152 pc.printf("-------\n Stopped Logging Data\n\r");
JakBlackburn 0:73bfbe8729d4 153 }
JakBlackburn 1:7f151ab172cb 154 wait(0.2);
JakBlackburn 1:7f151ab172cb 155 }
JakBlackburn 1:7f151ab172cb 156
JakBlackburn 1:7f151ab172cb 157 void logging(char* data,float data1)
JakBlackburn 1:7f151ab172cb 158 {
JakBlackburn 1:7f151ab172cb 159 if(logButtonFlag) {
JakBlackburn 1:7f151ab172cb 160 FILE *fp = fopen("/local/log.csv", "a"); // open 'log.csv' for appending
JakBlackburn 1:7f151ab172cb 161 // if the file doesn't exist it is created, if it exists, data is appended to the end
JakBlackburn 1:7f151ab172cb 162 fprintf(fp," %s , %.2f\n ",data,data1); // print string to file
JakBlackburn 1:7f151ab172cb 163 fclose(fp); // close file
JakBlackburn 4:2e9aa626a02c 164 pc.printf("Data Logged\n");
JakBlackburn 1:7f151ab172cb 165 LLED=1; //keeps the led on if it is logging
JakBlackburn 1:7f151ab172cb 166 } else {
JakBlackburn 4:2e9aa626a02c 167 pc.printf("WARNING : Unlogged Data\n");
JakBlackburn 1:7f151ab172cb 168 LLED=0;
JakBlackburn 0:73bfbe8729d4 169 }
JakBlackburn 1:7f151ab172cb 170 }
JakBlackburn 1:7f151ab172cb 171
JakBlackburn 1:7f151ab172cb 172 void setTime()
JakBlackburn 1:7f151ab172cb 173 {
JakBlackburn 1:7f151ab172cb 174 // print time for debugging
JakBlackburn 1:7f151ab172cb 175 pc.printf("set time - %s",rxString);
JakBlackburn 1:7f151ab172cb 176 // atoi() converts a string to an integer
JakBlackburn 1:7f151ab172cb 177 int time = atoi(rxString);
JakBlackburn 1:7f151ab172cb 178 // update the time
JakBlackburn 1:7f151ab172cb 179 set_time(time);
JakBlackburn 3:00933efbe463 180 pc.printf("set time - %d",time);
JakBlackburn 1:7f151ab172cb 181 }
JakBlackburn 1:7f151ab172cb 182 void serialISR()
JakBlackburn 1:7f151ab172cb 183 {
JakBlackburn 1:7f151ab172cb 184 // when a serial interrupt occurs, read rx string into buffer
JakBlackburn 1:7f151ab172cb 185 pc.gets(rxString,16);
JakBlackburn 1:7f151ab172cb 186 // set flag
JakBlackburn 1:7f151ab172cb 187 setTimeFlag = 1;
JakBlackburn 2:a1eaa4d74b63 188 }
JakBlackburn 2:a1eaa4d74b63 189
JakBlackburn 2:a1eaa4d74b63 190 void introTune()
JakBlackburn 2:a1eaa4d74b63 191 {
JakBlackburn 2:a1eaa4d74b63 192 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 193 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 194 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 195 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 196 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 197 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 198 Buzzer.PlayNote(1047.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 199 wait(0.01);
JakBlackburn 2:a1eaa4d74b63 200 Buzzer.PlayNote(1319.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 201 wait(0.094);
JakBlackburn 2:a1eaa4d74b63 202 Buzzer.PlayNote(1568.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 203 wait(0.26);
JakBlackburn 2:a1eaa4d74b63 204 Buzzer.PlayNote(784.0,0.084,1.0);
JakBlackburn 2:a1eaa4d74b63 205 }
JakBlackburn 2:a1eaa4d74b63 206
JakBlackburn 2:a1eaa4d74b63 207 void checkerBoard() // creates a checked pattern on the lcd
JakBlackburn 2:a1eaa4d74b63 208 {
JakBlackburn 2:a1eaa4d74b63 209 for(int i=0; i<84; i+=2) {
JakBlackburn 2:a1eaa4d74b63 210 for(int j=0; j<48; j+=2) {
JakBlackburn 2:a1eaa4d74b63 211 lcd.setPixel(i,j);
JakBlackburn 2:a1eaa4d74b63 212 }
JakBlackburn 2:a1eaa4d74b63 213 }
JakBlackburn 2:a1eaa4d74b63 214 lcd.refresh();
JakBlackburn 3:00933efbe463 215 }
JakBlackburn 3:00933efbe463 216
JakBlackburn 3:00933efbe463 217 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 218 {
JakBlackburn 3:00933efbe463 219 lcd.clear();
JakBlackburn 3:00933efbe463 220 int I = distance*0.337; //and then multiplies the current distance by that value as (84/249) =0.337...
JakBlackburn 4:2e9aa626a02c 221 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 4:2e9aa626a02c 222 lcd.printString("%s",0,0);
JakBlackburn 4:2e9aa626a02c 223 lcd.drawRect(0,18,I,12,1);
JakBlackburn 3:00933efbe463 224 lcd.refresh();
JakBlackburn 3:00933efbe463 225 }
JakBlackburn 3:00933efbe463 226
JakBlackburn 3:00933efbe463 227 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 228 {
JakBlackburn 3:00933efbe463 229 lcd.clear();
JakBlackburn 3:00933efbe463 230 int J = distance*0.19; //and then multiplies the current distance by that value as (48/249) = 0.19..
JakBlackburn 4:2e9aa626a02c 231 if(J>=48){J=48;}
JakBlackburn 4:2e9aa626a02c 232 pc.printf("bar height - %d pixels \n",J);
JakBlackburn 4:2e9aa626a02c 233 lcd.drawRect(27,48-J,30,48,1);
JakBlackburn 3:00933efbe463 234 lcd.refresh();
JakBlackburn 3:00933efbe463 235 }
JakBlackburn 3:00933efbe463 236
JakBlackburn 3:00933efbe463 237 void LCDVis2(){
JakBlackburn 4:2e9aa626a02c 238 lcd.clear();
JakBlackburn 4:2e9aa626a02c 239 car();
JakBlackburn 4:2e9aa626a02c 240 int I = distance*0.277; //and then multiplies the current distance by that value as (69/249) =0.277...
JakBlackburn 4:2e9aa626a02c 241 if(I>=84){I=84;}
JakBlackburn 4:2e9aa626a02c 242 pc.printf("bar width - %d pixels \n",I);
JakBlackburn 4:2e9aa626a02c 243 lcd.drawRect(I+15,9,69,30,1);
JakBlackburn 4:2e9aa626a02c 244 lcd.refresh();
JakBlackburn 4:2e9aa626a02c 245 }
JakBlackburn 4:2e9aa626a02c 246 void LCDVis3(){
JakBlackburn 4:2e9aa626a02c 247 lcd.clear();
JakBlackburn 4:2e9aa626a02c 248 int Dist=distance;
JakBlackburn 4:2e9aa626a02c 249 if(state==0){
JakBlackburn 4:2e9aa626a02c 250 lcd.printString("CM",54,3);
JakBlackburn 4:2e9aa626a02c 251 }
JakBlackburn 4:2e9aa626a02c 252 if(state==1){
JakBlackburn 4:2e9aa626a02c 253 decimal();
JakBlackburn 4:2e9aa626a02c 254 lcd.printString("M",54,3);
JakBlackburn 4:2e9aa626a02c 255 }
JakBlackburn 4:2e9aa626a02c 256 if(state==2){
JakBlackburn 4:2e9aa626a02c 257 number0(57);
JakBlackburn 4:2e9aa626a02c 258 lcd.printString("MM",73,3);
JakBlackburn 4:2e9aa626a02c 259 }
JakBlackburn 4:2e9aa626a02c 260 int S=Dist %10;
JakBlackburn 4:2e9aa626a02c 261 pc.printf("singles - %d \n",S);
JakBlackburn 4:2e9aa626a02c 262 if(S==0){
JakBlackburn 4:2e9aa626a02c 263 number0(38);
JakBlackburn 4:2e9aa626a02c 264 }
JakBlackburn 4:2e9aa626a02c 265 if(S==1){
JakBlackburn 4:2e9aa626a02c 266 number1(38);
JakBlackburn 4:2e9aa626a02c 267 }
JakBlackburn 4:2e9aa626a02c 268 if(S==2){
JakBlackburn 4:2e9aa626a02c 269 number2(38);
JakBlackburn 4:2e9aa626a02c 270 }
JakBlackburn 4:2e9aa626a02c 271 if(S==3){
JakBlackburn 4:2e9aa626a02c 272 number3(38);
JakBlackburn 4:2e9aa626a02c 273 }
JakBlackburn 4:2e9aa626a02c 274 if(S==4){
JakBlackburn 4:2e9aa626a02c 275 number4(38);
JakBlackburn 4:2e9aa626a02c 276 }
JakBlackburn 4:2e9aa626a02c 277 if(S==5){
JakBlackburn 4:2e9aa626a02c 278 number5(38);
JakBlackburn 3:00933efbe463 279 }
JakBlackburn 4:2e9aa626a02c 280 if(S==6){
JakBlackburn 4:2e9aa626a02c 281 number6(38);
JakBlackburn 4:2e9aa626a02c 282 }
JakBlackburn 4:2e9aa626a02c 283 if(S==7){
JakBlackburn 4:2e9aa626a02c 284 number7(38);
JakBlackburn 4:2e9aa626a02c 285 }
JakBlackburn 4:2e9aa626a02c 286 if(S==8){
JakBlackburn 4:2e9aa626a02c 287 number8(38);
JakBlackburn 4:2e9aa626a02c 288 }
JakBlackburn 4:2e9aa626a02c 289 if(S==9){
JakBlackburn 4:2e9aa626a02c 290 number9(38);
JakBlackburn 4:2e9aa626a02c 291 }
JakBlackburn 4:2e9aa626a02c 292
JakBlackburn 4:2e9aa626a02c 293 int T=Dist/10 %10;
JakBlackburn 4:2e9aa626a02c 294 pc.printf("tens - %d \n",t);
JakBlackburn 4:2e9aa626a02c 295 if(T==0){
JakBlackburn 4:2e9aa626a02c 296 number0(19);
JakBlackburn 4:2e9aa626a02c 297 }
JakBlackburn 4:2e9aa626a02c 298 int H=Dist/100 %10;
JakBlackburn 4:2e9aa626a02c 299 pc.printf("Hundreds - %d \n",H);
JakBlackburn 4:2e9aa626a02c 300 if(H==0){
JakBlackburn 4:2e9aa626a02c 301 number0(0);
JakBlackburn 4:2e9aa626a02c 302 }
JakBlackburn 4:2e9aa626a02c 303 }
JakBlackburn 4:2e9aa626a02c 304
JakBlackburn 4:2e9aa626a02c 305
JakBlackburn 4:2e9aa626a02c 306
JakBlackburn 4:2e9aa626a02c 307
JakBlackburn 4:2e9aa626a02c 308
JakBlackburn 4:2e9aa626a02c 309
JakBlackburn 4:2e9aa626a02c 310 void car(){
JakBlackburn 4:2e9aa626a02c 311 lcd.setPixel(4,19);lcd.setPixel(5,19);lcd.setPixel(6,19); lcd.setPixel(10,19);lcd.setPixel(11,19);lcd.setPixel(12,19);
JakBlackburn 4:2e9aa626a02c 312 lcd.setPixel(4,20);lcd.setPixel(5,20);lcd.setPixel(6,20); lcd.setPixel(10,20);lcd.setPixel(11,20);lcd.setPixel(12,20);
JakBlackburn 4:2e9aa626a02c 313 lcd.setPixel(1,21);lcd.setPixel(2,21);lcd.setPixel(3,21);lcd.setPixel(4,21);lcd.setPixel(5,21);lcd.setPixel(6,21);lcd.setPixel(7,21);lcd.setPixel(8,21);lcd.setPixel(9,21);lcd.setPixel(10,21);lcd.setPixel(11,21);lcd.setPixel(12,21);lcd.setPixel(13,21);
JakBlackburn 4:2e9aa626a02c 314 lcd.setPixel(0,22);lcd.setPixel(1,22);lcd.setPixel(2,22);lcd.setPixel(3,22);lcd.setPixel(4,22); lcd.setPixel(6,22);lcd.setPixel(7,22);lcd.setPixel(8,22);lcd.setPixel(9,22);lcd.setPixel(10,22); lcd.setPixel(12,22);lcd.setPixel(13,22);
JakBlackburn 4:2e9aa626a02c 315 lcd.setPixel(0,23);lcd.setPixel(1,23);lcd.setPixel(2,23);lcd.setPixel(3,23); lcd.setPixel(6,23);lcd.setPixel(7,23);lcd.setPixel(8,23);lcd.setPixel(9,23);lcd.setPixel(10,23); lcd.setPixel(12,23);lcd.setPixel(13,23);
JakBlackburn 4:2e9aa626a02c 316 lcd.setPixel(0,24);lcd.setPixel(1,24);lcd.setPixel(2,24);lcd.setPixel(3,24); lcd.setPixel(6,24);lcd.setPixel(7,24);lcd.setPixel(8,24);lcd.setPixel(9,24);lcd.setPixel(10,24); lcd.setPixel(12,24);lcd.setPixel(13,24);
JakBlackburn 4:2e9aa626a02c 317 lcd.setPixel(0,25);lcd.setPixel(1,25);lcd.setPixel(2,25);lcd.setPixel(3,25); lcd.setPixel(6,25);lcd.setPixel(7,25);lcd.setPixel(8,25);lcd.setPixel(9,25);lcd.setPixel(10,25); lcd.setPixel(12,25);lcd.setPixel(13,25);
JakBlackburn 4:2e9aa626a02c 318 lcd.setPixel(0,26);lcd.setPixel(1,26);lcd.setPixel(2,26);lcd.setPixel(3,26);lcd.setPixel(4,26); lcd.setPixel(6,26);lcd.setPixel(7,26);lcd.setPixel(8,26);lcd.setPixel(9,26);lcd.setPixel(10,26); lcd.setPixel(12,26);lcd.setPixel(13,26);
JakBlackburn 4:2e9aa626a02c 319 lcd.setPixel(1,27);lcd.setPixel(2,27);lcd.setPixel(3,27);lcd.setPixel(4,27);lcd.setPixel(5,27);lcd.setPixel(6,27);lcd.setPixel(7,27);lcd.setPixel(8,27);lcd.setPixel(9,27);lcd.setPixel(10,27);lcd.setPixel(11,27);lcd.setPixel(12,27);lcd.setPixel(13,27);
JakBlackburn 4:2e9aa626a02c 320 lcd.setPixel(4,28);lcd.setPixel(5,28);lcd.setPixel(6,28); lcd.setPixel(10,28);lcd.setPixel(11,28);lcd.setPixel(12,28);
JakBlackburn 4:2e9aa626a02c 321 lcd.setPixel(4,29);lcd.setPixel(5,29);lcd.setPixel(6,29); lcd.setPixel(10,29);lcd.setPixel(11,29);lcd.setPixel(12,29);
JakBlackburn 3:00933efbe463 322 }
JakBlackburn 3:00933efbe463 323
JakBlackburn 3:00933efbe463 324 void visToggle()
JakBlackburn 3:00933efbe463 325 {
JakBlackburn 3:00933efbe463 326 Vstate = Vfsm[Vstate].nextState[VisTog]; // read input and update current state
JakBlackburn 3:00933efbe463 327 visual = Vfsm[Vstate].visual; // set output depending on current state
JakBlackburn 3:00933efbe463 328 wait(0.2);
JakBlackburn 3:00933efbe463 329 if(visual==0) {
JakBlackburn 3:00933efbe463 330 pc.printf("----Left to Right----\n\r");
JakBlackburn 3:00933efbe463 331 }
JakBlackburn 3:00933efbe463 332 if(visual==1) {
JakBlackburn 3:00933efbe463 333 pc.printf("----Up to Down----\n\r");
JakBlackburn 3:00933efbe463 334 }
JakBlackburn 3:00933efbe463 335 if(visual==2) {
JakBlackburn 4:2e9aa626a02c 336 pc.printf("----Car & Wall----\n\r");
JakBlackburn 4:2e9aa626a02c 337 }
JakBlackburn 4:2e9aa626a02c 338 if(visual==3) {
JakBlackburn 4:2e9aa626a02c 339 pc.printf("----Numbers----\n\r");
JakBlackburn 3:00933efbe463 340 }
JakBlackburn 0:73bfbe8729d4 341 }