Program implementing various applications of the ultrasonic distance sensor SRF02 combined with other components. Five different modules to show the various possible applications of the device. A focus on linear distance measurement, the synchronization of an alert/signalling system and accessibility.
Dependencies: N5110 SRF02 beep mbed
obstacle.cpp@1:37d0985c814e, 2015-05-11 (annotated)
- Committer:
- MahletShimellis
- Date:
- Mon May 11 22:30:17 2015 +0000
- Revision:
- 1:37d0985c814e
Echolocation using Obstacle Detection with Ultrasonic Distance Sensor SRF02
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MahletShimellis | 1:37d0985c814e | 1 | /** |
MahletShimellis | 1:37d0985c814e | 2 | @file obstacle.cpp |
MahletShimellis | 1:37d0985c814e | 3 | @brief Program Implementation |
MahletShimellis | 1:37d0985c814e | 4 | */ |
MahletShimellis | 1:37d0985c814e | 5 | |
MahletShimellis | 1:37d0985c814e | 6 | #include "mbed.h" |
MahletShimellis | 1:37d0985c814e | 7 | #include "SRF02.h" |
MahletShimellis | 1:37d0985c814e | 8 | #include "N5110.h" |
MahletShimellis | 1:37d0985c814e | 9 | #include "beep.h" |
MahletShimellis | 1:37d0985c814e | 10 | #include "obstacle.h" |
MahletShimellis | 1:37d0985c814e | 11 | |
MahletShimellis | 1:37d0985c814e | 12 | |
MahletShimellis | 1:37d0985c814e | 13 | //////////////////////////PART 1 - SETTING UP THE MEASUREMENTS////////////////////////////// |
MahletShimellis | 1:37d0985c814e | 14 | |
MahletShimellis | 1:37d0985c814e | 15 | int timerFlag=0; |
MahletShimellis | 1:37d0985c814e | 16 | void timerExpired() |
MahletShimellis | 1:37d0985c814e | 17 | { |
MahletShimellis | 1:37d0985c814e | 18 | timerFlag =1; |
MahletShimellis | 1:37d0985c814e | 19 | } |
MahletShimellis | 1:37d0985c814e | 20 | |
MahletShimellis | 1:37d0985c814e | 21 | void error(int code) |
MahletShimellis | 1:37d0985c814e | 22 | { |
MahletShimellis | 1:37d0985c814e | 23 | while(1) { |
MahletShimellis | 1:37d0985c814e | 24 | leds = 0; |
MahletShimellis | 1:37d0985c814e | 25 | wait(0.25); |
MahletShimellis | 1:37d0985c814e | 26 | leds = code; |
MahletShimellis | 1:37d0985c814e | 27 | wait(0.25); |
MahletShimellis | 1:37d0985c814e | 28 | } |
MahletShimellis | 1:37d0985c814e | 29 | } |
MahletShimellis | 1:37d0985c814e | 30 | |
MahletShimellis | 1:37d0985c814e | 31 | void measureExpired() |
MahletShimellis | 1:37d0985c814e | 32 | { |
MahletShimellis | 1:37d0985c814e | 33 | measureFlag =1; |
MahletShimellis | 1:37d0985c814e | 34 | } |
MahletShimellis | 1:37d0985c814e | 35 | |
MahletShimellis | 1:37d0985c814e | 36 | |
MahletShimellis | 1:37d0985c814e | 37 | /* |
MahletShimellis | 1:37d0985c814e | 38 | void initTMP102() |
MahletShimellis | 1:37d0985c814e | 39 | { |
MahletShimellis | 1:37d0985c814e | 40 | tmp102.frequency(400000); // set bus speed to 400 kHz |
MahletShimellis | 1:37d0985c814e | 41 | int ack; // used to store acknowledgement bit |
MahletShimellis | 1:37d0985c814e | 42 | char data[2]; // array for data |
MahletShimellis | 1:37d0985c814e | 43 | char reg = CONFIG_REG; // register address |
MahletShimellis | 1:37d0985c814e | 44 | //////// Read current status of configuration register /////// |
MahletShimellis | 1:37d0985c814e | 45 | |
MahletShimellis | 1:37d0985c814e | 46 | ack = tmp102.write(TMP102_W_ADD,®,1); // send the slave write address and the configuration register address |
MahletShimellis | 1:37d0985c814e | 47 | if (ack) |
MahletShimellis | 1:37d0985c814e | 48 | error(1); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 49 | ack = tmp102.read(TMP102_R_ADD,data,2); // read default 2 bytes from configuration register and store in buffer |
MahletShimellis | 1:37d0985c814e | 50 | if (ack) |
MahletShimellis | 1:37d0985c814e | 51 | error(2); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 52 | ///////// Configure the register ////////// |
MahletShimellis | 1:37d0985c814e | 53 | // set conversion rate to 1 Hz |
MahletShimellis | 1:37d0985c814e | 54 | data[1] |= (1 << 6); // set bit 6 |
MahletShimellis | 1:37d0985c814e | 55 | data[1] &= ~(1 << 7); // clear bit 7 |
MahletShimellis | 1:37d0985c814e | 56 | |
MahletShimellis | 1:37d0985c814e | 57 | //////// Send the configured register to the slave //////////// |
MahletShimellis | 1:37d0985c814e | 58 | |
MahletShimellis | 1:37d0985c814e | 59 | ack = tmp102.write(TMP102_W_ADD,®,1); // send the slave write address and the configuration register address |
MahletShimellis | 1:37d0985c814e | 60 | if (ack) |
MahletShimellis | 1:37d0985c814e | 61 | error(3); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 62 | ack = tmp102.write(TMP102_W_ADD,data,2); // send 2 data bytes to the configuration register |
MahletShimellis | 1:37d0985c814e | 63 | if (ack) |
MahletShimellis | 1:37d0985c814e | 64 | error(4); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 65 | |
MahletShimellis | 1:37d0985c814e | 66 | } |
MahletShimellis | 1:37d0985c814e | 67 | |
MahletShimellis | 1:37d0985c814e | 68 | float getTemperature() |
MahletShimellis | 1:37d0985c814e | 69 | { |
MahletShimellis | 1:37d0985c814e | 70 | int ack; // used to store acknowledgement bit |
MahletShimellis | 1:37d0985c814e | 71 | char data[2]; // array for data |
MahletShimellis | 1:37d0985c814e | 72 | char reg = TEMP_REG; // temperature register address |
MahletShimellis | 1:37d0985c814e | 73 | ack = tmp102.write(TMP102_W_ADD,®,1); // send temperature register address |
MahletShimellis | 1:37d0985c814e | 74 | if (ack) |
MahletShimellis | 1:37d0985c814e | 75 | error(5); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 76 | ack = tmp102.read(TMP102_R_ADD,data,2); // read 2 bytes from temperature register and store in array |
MahletShimellis | 1:37d0985c814e | 77 | if (ack) |
MahletShimellis | 1:37d0985c814e | 78 | error(6); // if we don't receive acknowledgement, flash error message |
MahletShimellis | 1:37d0985c814e | 79 | temperature = (data[0] << 4) | (data[1] >> 4); |
MahletShimellis | 1:37d0985c814e | 80 | return temperature*0.0625; |
MahletShimellis | 1:37d0985c814e | 81 | } |
MahletShimellis | 1:37d0985c814e | 82 | |
MahletShimellis | 1:37d0985c814e | 83 | float calcSoundSpeed(float temperature) |
MahletShimellis | 1:37d0985c814e | 84 | { |
MahletShimellis | 1:37d0985c814e | 85 | return soundSpeed = temperature*0.6 + 331.3; |
MahletShimellis | 1:37d0985c814e | 86 | } |
MahletShimellis | 1:37d0985c814e | 87 | |
MahletShimellis | 1:37d0985c814e | 88 | float calcSoundTimeDelay (int distance, float soundSpeed) |
MahletShimellis | 1:37d0985c814e | 89 | { distance =srf.getDistanceCm(); |
MahletShimellis | 1:37d0985c814e | 90 | return soundTimeDelay = distance/soundSpeed; |
MahletShimellis | 1:37d0985c814e | 91 | } |
MahletShimellis | 1:37d0985c814e | 92 | */ |
MahletShimellis | 1:37d0985c814e | 93 | |
MahletShimellis | 1:37d0985c814e | 94 | |
MahletShimellis | 1:37d0985c814e | 95 | ///////////////////PART 2 - Distance Upadate and Speed ////////////////////// |
MahletShimellis | 1:37d0985c814e | 96 | |
MahletShimellis | 1:37d0985c814e | 97 | |
MahletShimellis | 1:37d0985c814e | 98 | void updateExpired() |
MahletShimellis | 1:37d0985c814e | 99 | { |
MahletShimellis | 1:37d0985c814e | 100 | updateFlag=1; /// |
MahletShimellis | 1:37d0985c814e | 101 | } |
MahletShimellis | 1:37d0985c814e | 102 | |
MahletShimellis | 1:37d0985c814e | 103 | void update_distance_new() |
MahletShimellis | 1:37d0985c814e | 104 | { |
MahletShimellis | 1:37d0985c814e | 105 | lastDistance = newDistance; ///updates the lastDistance variable by storing into it the previous distance measurement |
MahletShimellis | 1:37d0985c814e | 106 | newDistance = srf.getDistanceCm();///updates the newDistance variable by adding to it the new distance measurement |
MahletShimellis | 1:37d0985c814e | 107 | } |
MahletShimellis | 1:37d0985c814e | 108 | |
MahletShimellis | 1:37d0985c814e | 109 | |
MahletShimellis | 1:37d0985c814e | 110 | ///////////////////PART 3 - Distance Range Alert////////////////////////////// |
MahletShimellis | 1:37d0985c814e | 111 | |
MahletShimellis | 1:37d0985c814e | 112 | void rangeExpired() |
MahletShimellis | 1:37d0985c814e | 113 | { |
MahletShimellis | 1:37d0985c814e | 114 | rangeFlag =1; |
MahletShimellis | 1:37d0985c814e | 115 | } |
MahletShimellis | 1:37d0985c814e | 116 | |
MahletShimellis | 1:37d0985c814e | 117 | struct State { |
MahletShimellis | 1:37d0985c814e | 118 | float bOutput; /// buzzer output value |
MahletShimellis | 1:37d0985c814e | 119 | int nextState[5]; /// array of next states |
MahletShimellis | 1:37d0985c814e | 120 | }; |
MahletShimellis | 1:37d0985c814e | 121 | typedef const struct State STyp; |
MahletShimellis | 1:37d0985c814e | 122 | |
MahletShimellis | 1:37d0985c814e | 123 | STyp fsm[5] = { |
MahletShimellis | 1:37d0985c814e | 124 | {8000,{0,1,2,3,4}}, // State 0 - object at less than 20 cm away |
MahletShimellis | 1:37d0985c814e | 125 | {2000,{0,1,2,3,4}}, // 1 - object in the 20-65cm range from the person |
MahletShimellis | 1:37d0985c814e | 126 | {1000,{0,1,2,3,4}}, // 2 - object in the 65-110cm range from the person |
MahletShimellis | 1:37d0985c814e | 127 | {500,{0,1,2,3,4}}, // 3 - object in the 110-155cm range from the person |
MahletShimellis | 1:37d0985c814e | 128 | {200,{0,1,2,3,4}}, // 4 - object in the 155-200cm range from the person |
MahletShimellis | 1:37d0985c814e | 129 | |
MahletShimellis | 1:37d0985c814e | 130 | }; |
MahletShimellis | 1:37d0985c814e | 131 | |
MahletShimellis | 1:37d0985c814e | 132 | void updateState() |
MahletShimellis | 1:37d0985c814e | 133 | { |
MahletShimellis | 1:37d0985c814e | 134 | |
MahletShimellis | 1:37d0985c814e | 135 | distance = srf.getDistanceCm(); |
MahletShimellis | 1:37d0985c814e | 136 | if(distance<=20) rangeState=0; |
MahletShimellis | 1:37d0985c814e | 137 | else if((distance>20)&&(distance<=65))rangeState=1; |
MahletShimellis | 1:37d0985c814e | 138 | else if ((distance>65)&&(distance<=110))rangeState=2; |
MahletShimellis | 1:37d0985c814e | 139 | else if ((distance>110)&&(distance<=155))rangeState=3; |
MahletShimellis | 1:37d0985c814e | 140 | else if ((distance>155)&&(distance<=200))rangeState=4; |
MahletShimellis | 1:37d0985c814e | 141 | |
MahletShimellis | 1:37d0985c814e | 142 | |
MahletShimellis | 1:37d0985c814e | 143 | currentState = fsm[currentState].nextState[rangeState]; |
MahletShimellis | 1:37d0985c814e | 144 | } |
MahletShimellis | 1:37d0985c814e | 145 | |
MahletShimellis | 1:37d0985c814e | 146 | ///////////////////PART 4 - Beam Pattern /////////////////////////////////// |
MahletShimellis | 1:37d0985c814e | 147 | |
MahletShimellis | 1:37d0985c814e | 148 | double angleArray[5]= {0,10,20,30,40}; /*!<array of angles from the center of the sensor*/ |
MahletShimellis | 1:37d0985c814e | 149 | |
MahletShimellis | 1:37d0985c814e | 150 | |
MahletShimellis | 1:37d0985c814e | 151 | void beamExpired() |
MahletShimellis | 1:37d0985c814e | 152 | { |
MahletShimellis | 1:37d0985c814e | 153 | beamFlag=1; |
MahletShimellis | 1:37d0985c814e | 154 | } |
MahletShimellis | 1:37d0985c814e | 155 | |
MahletShimellis | 1:37d0985c814e | 156 | double convertDegrees(double angleDegrees) |
MahletShimellis | 1:37d0985c814e | 157 | { |
MahletShimellis | 1:37d0985c814e | 158 | ///uses equivalence of 2pi and 180 degrees |
MahletShimellis | 1:37d0985c814e | 159 | return angleDegrees*3.16/180; |
MahletShimellis | 1:37d0985c814e | 160 | } |
MahletShimellis | 1:37d0985c814e | 161 | |
MahletShimellis | 1:37d0985c814e | 162 | void drawSemiCircle() |
MahletShimellis | 1:37d0985c814e | 163 | { |
MahletShimellis | 1:37d0985c814e | 164 | //draws a semi circle on the screen of radius equal to the distance from the object |
MahletShimellis | 1:37d0985c814e | 165 | int radius = srf.getDistanceCm(); /// int radius = ((30*srf.getDistanceCm())/20); other possibility |
MahletShimellis | 1:37d0985c814e | 166 | lcd.drawCircle(WIDTH/2,1,radius,0); /// x,y,radius,transparent with outline |
MahletShimellis | 1:37d0985c814e | 167 | lcd.drawLine(WIDTH/2,1,WIDTH/2,radius,2); ///draws one diameter |
MahletShimellis | 1:37d0985c814e | 168 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 169 | } |
MahletShimellis | 1:37d0985c814e | 170 | |
MahletShimellis | 1:37d0985c814e | 171 | void drawBeamLines() |
MahletShimellis | 1:37d0985c814e | 172 | { |
MahletShimellis | 1:37d0985c814e | 173 | ///draws a beam line for each calcualted value |
MahletShimellis | 1:37d0985c814e | 174 | lcd.drawLine(WIDTH/2,1,WIDTH/2+l,h,2); |
MahletShimellis | 1:37d0985c814e | 175 | lcd.drawLine(WIDTH/2,1,WIDTH/2-l,h,2); |
MahletShimellis | 1:37d0985c814e | 176 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 177 | } |
MahletShimellis | 1:37d0985c814e | 178 | |
MahletShimellis | 1:37d0985c814e | 179 | double lat(double a, double d) |
MahletShimellis | 1:37d0985c814e | 180 | { |
MahletShimellis | 1:37d0985c814e | 181 | return (tan(a) *d); |
MahletShimellis | 1:37d0985c814e | 182 | } |
MahletShimellis | 1:37d0985c814e | 183 | |
MahletShimellis | 1:37d0985c814e | 184 | double hyp(double a, double d) |
MahletShimellis | 1:37d0985c814e | 185 | { |
MahletShimellis | 1:37d0985c814e | 186 | return ((tan(a) *d)/sin(a)); |
MahletShimellis | 1:37d0985c814e | 187 | } |
MahletShimellis | 1:37d0985c814e | 188 | |
MahletShimellis | 1:37d0985c814e | 189 | /////////////////////////PART 5 - the Wall Follower Simulation ////////////////////// |
MahletShimellis | 1:37d0985c814e | 190 | |
MahletShimellis | 1:37d0985c814e | 191 | void wallExpired() |
MahletShimellis | 1:37d0985c814e | 192 | { |
MahletShimellis | 1:37d0985c814e | 193 | wallFlag=1; |
MahletShimellis | 1:37d0985c814e | 194 | } |
MahletShimellis | 1:37d0985c814e | 195 | |
MahletShimellis | 1:37d0985c814e | 196 | void moveForward() |
MahletShimellis | 1:37d0985c814e | 197 | { |
MahletShimellis | 1:37d0985c814e | 198 | /// sets pixel to move forward |
MahletShimellis | 1:37d0985c814e | 199 | |
MahletShimellis | 1:37d0985c814e | 200 | for(int k=0; k<=22; k++) { |
MahletShimellis | 1:37d0985c814e | 201 | lcd.setPixel(16,k); /// (x,y) starting point of the pixel - here fixed x coordinate - vertical movement |
MahletShimellis | 1:37d0985c814e | 202 | wait(0.2); ///can be considered as the "speed of the movement" because it defines the rate if change of pixel - delay between two k values |
MahletShimellis | 1:37d0985c814e | 203 | pix++; ///increments the pix vlaue for each increase in k |
MahletShimellis | 1:37d0985c814e | 204 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 205 | } |
MahletShimellis | 1:37d0985c814e | 206 | } |
MahletShimellis | 1:37d0985c814e | 207 | |
MahletShimellis | 1:37d0985c814e | 208 | void turnLeftForward_one() |
MahletShimellis | 1:37d0985c814e | 209 | { |
MahletShimellis | 1:37d0985c814e | 210 | ///sets the pixel to turn left forward |
MahletShimellis | 1:37d0985c814e | 211 | |
MahletShimellis | 1:37d0985c814e | 212 | for(int l=0; l<=64; l++) { |
MahletShimellis | 1:37d0985c814e | 213 | lcd.setPixel(l+16,22); /// (x,22) starting point of the pixel - here fixed y coordinate - horizontal movement |
MahletShimellis | 1:37d0985c814e | 214 | wait(0.2); |
MahletShimellis | 1:37d0985c814e | 215 | pix=pix+1; ///increments the pix vlaue for each increase in l |
MahletShimellis | 1:37d0985c814e | 216 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 217 | } |
MahletShimellis | 1:37d0985c814e | 218 | |
MahletShimellis | 1:37d0985c814e | 219 | } |
MahletShimellis | 1:37d0985c814e | 220 | |
MahletShimellis | 1:37d0985c814e | 221 | void turnLeftForward_two() |
MahletShimellis | 1:37d0985c814e | 222 | { |
MahletShimellis | 1:37d0985c814e | 223 | ///sets the pixel to turn right forward -one |
MahletShimellis | 1:37d0985c814e | 224 | |
MahletShimellis | 1:37d0985c814e | 225 | for (int m=0; m<=16; m++) { |
MahletShimellis | 1:37d0985c814e | 226 | lcd.setPixel(80,m+22); /// (80,y) starting point of the pixel - here fixed x coordinate - vertical movement |
MahletShimellis | 1:37d0985c814e | 227 | wait(0.2); |
MahletShimellis | 1:37d0985c814e | 228 | pix=pix+1; ///increments the pix vlaue for each increase in m |
MahletShimellis | 1:37d0985c814e | 229 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 230 | } |
MahletShimellis | 1:37d0985c814e | 231 | |
MahletShimellis | 1:37d0985c814e | 232 | } |
MahletShimellis | 1:37d0985c814e | 233 | |
MahletShimellis | 1:37d0985c814e | 234 | void turnRightForward() |
MahletShimellis | 1:37d0985c814e | 235 | { |
MahletShimellis | 1:37d0985c814e | 236 | ///sets the pixel to turn right forward -two |
MahletShimellis | 1:37d0985c814e | 237 | |
MahletShimellis | 1:37d0985c814e | 238 | for(int n=0; n<=78; n++) { |
MahletShimellis | 1:37d0985c814e | 239 | lcd.setPixel(80-n,38); /// (x,38) starting point of the pixel - here fixed y coordinate - horizontal movement- x=80-n because counting down from the end x=80 to he beginning x=2 of the screen |
MahletShimellis | 1:37d0985c814e | 240 | wait(0.2); |
MahletShimellis | 1:37d0985c814e | 241 | pix=pix+1; ///increments the pix vlaue for each increase in n |
MahletShimellis | 1:37d0985c814e | 242 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 243 | } |
MahletShimellis | 1:37d0985c814e | 244 | //lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 245 | } |
MahletShimellis | 1:37d0985c814e | 246 | |
MahletShimellis | 1:37d0985c814e | 247 | |
MahletShimellis | 1:37d0985c814e | 248 | ///intial beep zero move forward |
MahletShimellis | 1:37d0985c814e | 249 | void beep_zero() |
MahletShimellis | 1:37d0985c814e | 250 | { |
MahletShimellis | 1:37d0985c814e | 251 | int sound_zero = 200; /// local varaible integer gives specific frequency value for the buzzer |
MahletShimellis | 1:37d0985c814e | 252 | float time_zero = 0.22; /// local varaible integer gives specific time for the buzzer |
MahletShimellis | 1:37d0985c814e | 253 | buzzer.beep(sound_zero,time_zero); |
MahletShimellis | 1:37d0985c814e | 254 | |
MahletShimellis | 1:37d0985c814e | 255 | } |
MahletShimellis | 1:37d0985c814e | 256 | |
MahletShimellis | 1:37d0985c814e | 257 | ///turns on beep one Turn Left |
MahletShimellis | 1:37d0985c814e | 258 | void beep_one() |
MahletShimellis | 1:37d0985c814e | 259 | { |
MahletShimellis | 1:37d0985c814e | 260 | int sound_one = 600; |
MahletShimellis | 1:37d0985c814e | 261 | float time_one = 0.2; |
MahletShimellis | 1:37d0985c814e | 262 | buzzer.beep(sound_one,time_one); |
MahletShimellis | 1:37d0985c814e | 263 | } |
MahletShimellis | 1:37d0985c814e | 264 | |
MahletShimellis | 1:37d0985c814e | 265 | /// turns on beep two Trun Left and move Forward |
MahletShimellis | 1:37d0985c814e | 266 | void beep_two() |
MahletShimellis | 1:37d0985c814e | 267 | { |
MahletShimellis | 1:37d0985c814e | 268 | int sound_two = 800; |
MahletShimellis | 1:37d0985c814e | 269 | float time_two = 0.23; |
MahletShimellis | 1:37d0985c814e | 270 | buzzer.beep(sound_two,time_two); |
MahletShimellis | 1:37d0985c814e | 271 | } |
MahletShimellis | 1:37d0985c814e | 272 | |
MahletShimellis | 1:37d0985c814e | 273 | //turns on beep three Turn Right |
MahletShimellis | 1:37d0985c814e | 274 | void beep_three() |
MahletShimellis | 1:37d0985c814e | 275 | { |
MahletShimellis | 1:37d0985c814e | 276 | int sound_three = 1600; |
MahletShimellis | 1:37d0985c814e | 277 | float time_three = 0.2; |
MahletShimellis | 1:37d0985c814e | 278 | buzzer.beep(sound_three,time_three); |
MahletShimellis | 1:37d0985c814e | 279 | } |
MahletShimellis | 1:37d0985c814e | 280 | |
MahletShimellis | 1:37d0985c814e | 281 | /// turns on beep four Turn Right and move Forward |
MahletShimellis | 1:37d0985c814e | 282 | void beep_four() |
MahletShimellis | 1:37d0985c814e | 283 | { |
MahletShimellis | 1:37d0985c814e | 284 | int sound_four = 2000; |
MahletShimellis | 1:37d0985c814e | 285 | float time_four = 0.14; |
MahletShimellis | 1:37d0985c814e | 286 | buzzer.beep(sound_four,time_four); |
MahletShimellis | 1:37d0985c814e | 287 | } |
MahletShimellis | 1:37d0985c814e | 288 | |
MahletShimellis | 1:37d0985c814e | 289 | /// turns on beep five Stop Dead End |
MahletShimellis | 1:37d0985c814e | 290 | void beep_five() |
MahletShimellis | 1:37d0985c814e | 291 | { |
MahletShimellis | 1:37d0985c814e | 292 | int sound_five = 2600; |
MahletShimellis | 1:37d0985c814e | 293 | float time_five = 0.6; |
MahletShimellis | 1:37d0985c814e | 294 | buzzer.beep(sound_five,time_five); |
MahletShimellis | 1:37d0985c814e | 295 | } |
MahletShimellis | 1:37d0985c814e | 296 | |
MahletShimellis | 1:37d0985c814e | 297 | void toggle_red() |
MahletShimellis | 1:37d0985c814e | 298 | { |
MahletShimellis | 1:37d0985c814e | 299 | red=!red; ///toggle red led |
MahletShimellis | 1:37d0985c814e | 300 | } |
MahletShimellis | 1:37d0985c814e | 301 | void toggle_yellow() |
MahletShimellis | 1:37d0985c814e | 302 | { |
MahletShimellis | 1:37d0985c814e | 303 | yellow=!yellow; ///toggles yellow led |
MahletShimellis | 1:37d0985c814e | 304 | } |
MahletShimellis | 1:37d0985c814e | 305 | void toggle_green() |
MahletShimellis | 1:37d0985c814e | 306 | { |
MahletShimellis | 1:37d0985c814e | 307 | green=!green; ///toggles green led |
MahletShimellis | 1:37d0985c814e | 308 | } |
MahletShimellis | 1:37d0985c814e | 309 | |
MahletShimellis | 1:37d0985c814e | 310 | |
MahletShimellis | 1:37d0985c814e | 311 | |
MahletShimellis | 1:37d0985c814e | 312 | void move() |
MahletShimellis | 1:37d0985c814e | 313 | { |
MahletShimellis | 1:37d0985c814e | 314 | if (pix<=22) { |
MahletShimellis | 1:37d0985c814e | 315 | lcd.printString(" Forward ",32,0); |
MahletShimellis | 1:37d0985c814e | 316 | beep_ticker_zero.attach(&beep_zero, 0.61); //move forward |
MahletShimellis | 1:37d0985c814e | 317 | toggle_green_ticker.attach(&toggle_green, 0.61); |
MahletShimellis | 1:37d0985c814e | 318 | moveForward(); |
MahletShimellis | 1:37d0985c814e | 319 | } |
MahletShimellis | 1:37d0985c814e | 320 | |
MahletShimellis | 1:37d0985c814e | 321 | beep_ticker_zero.detach(); |
MahletShimellis | 1:37d0985c814e | 322 | beep_ticker_one.attach(&beep_one, 0.2);//turn left |
MahletShimellis | 1:37d0985c814e | 323 | lcd.printString(" T Left ",32,0); |
MahletShimellis | 1:37d0985c814e | 324 | toggle_green_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 325 | toggle_red_ticker.attach(&toggle_red,0.1); |
MahletShimellis | 1:37d0985c814e | 326 | wait(0.5); |
MahletShimellis | 1:37d0985c814e | 327 | beep_ticker_one.detach(); |
MahletShimellis | 1:37d0985c814e | 328 | |
MahletShimellis | 1:37d0985c814e | 329 | |
MahletShimellis | 1:37d0985c814e | 330 | if (22<pix && pix<86) { |
MahletShimellis | 1:37d0985c814e | 331 | toggle_red_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 332 | lcd.printString(" Forward ",32,0); |
MahletShimellis | 1:37d0985c814e | 333 | beep_ticker_two.attach(&beep_two, 0.66); //turn left and move forward |
MahletShimellis | 1:37d0985c814e | 334 | toggle_green_ticker.attach(&toggle_green, 0.66); |
MahletShimellis | 1:37d0985c814e | 335 | turnLeftForward_one(); |
MahletShimellis | 1:37d0985c814e | 336 | } |
MahletShimellis | 1:37d0985c814e | 337 | |
MahletShimellis | 1:37d0985c814e | 338 | beep_ticker_two.detach(); |
MahletShimellis | 1:37d0985c814e | 339 | beep_ticker_three.attach(&beep_three,0.2);//turn right |
MahletShimellis | 1:37d0985c814e | 340 | lcd.printString(" T Right ",32,0); |
MahletShimellis | 1:37d0985c814e | 341 | toggle_green_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 342 | toggle_red_ticker.attach(&toggle_red,0.1); |
MahletShimellis | 1:37d0985c814e | 343 | wait(0.5); |
MahletShimellis | 1:37d0985c814e | 344 | beep_ticker_three.detach(); |
MahletShimellis | 1:37d0985c814e | 345 | |
MahletShimellis | 1:37d0985c814e | 346 | |
MahletShimellis | 1:37d0985c814e | 347 | if(86<pix && pix<102) { |
MahletShimellis | 1:37d0985c814e | 348 | toggle_red_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 349 | lcd.printString(" Forward ",32,0); |
MahletShimellis | 1:37d0985c814e | 350 | toggle_green_ticker.attach(&toggle_green, 0.76); |
MahletShimellis | 1:37d0985c814e | 351 | beep_ticker_four.attach(&beep_four, 0.76);//turn right and move forward |
MahletShimellis | 1:37d0985c814e | 352 | turnLeftForward_two(); |
MahletShimellis | 1:37d0985c814e | 353 | } |
MahletShimellis | 1:37d0985c814e | 354 | |
MahletShimellis | 1:37d0985c814e | 355 | beep_ticker_four.detach(); |
MahletShimellis | 1:37d0985c814e | 356 | beep_ticker_three.attach(&beep_three,0.2);//turn right |
MahletShimellis | 1:37d0985c814e | 357 | lcd.printString(" T Right ",32,0); |
MahletShimellis | 1:37d0985c814e | 358 | toggle_red_ticker.attach(&toggle_red,0.1); |
MahletShimellis | 1:37d0985c814e | 359 | wait(0.5); |
MahletShimellis | 1:37d0985c814e | 360 | beep_ticker_three.detach(); |
MahletShimellis | 1:37d0985c814e | 361 | |
MahletShimellis | 1:37d0985c814e | 362 | |
MahletShimellis | 1:37d0985c814e | 363 | if (102<pix) { |
MahletShimellis | 1:37d0985c814e | 364 | toggle_red_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 365 | beep_ticker_four.attach(&beep_four,0.8);///turn right and move forward- function called every 0.8s |
MahletShimellis | 1:37d0985c814e | 366 | toggle_green_ticker.attach(&toggle_green, 0.76); /// toggle green led function called every 0.76s |
MahletShimellis | 1:37d0985c814e | 367 | lcd.printString(" Forward ",32,0); |
MahletShimellis | 1:37d0985c814e | 368 | turnRightForward(); |
MahletShimellis | 1:37d0985c814e | 369 | } |
MahletShimellis | 1:37d0985c814e | 370 | |
MahletShimellis | 1:37d0985c814e | 371 | beep_ticker_four.detach(); |
MahletShimellis | 1:37d0985c814e | 372 | toggle_green_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 373 | lcd.printString(" STOP!! ",32,0); |
MahletShimellis | 1:37d0985c814e | 374 | toggle_red_ticker.attach(&toggle_red,0.1); |
MahletShimellis | 1:37d0985c814e | 375 | beep_ticker_five.attach(&beep_five,0.8);//stop dead end |
MahletShimellis | 1:37d0985c814e | 376 | } |
MahletShimellis | 1:37d0985c814e | 377 | |
MahletShimellis | 1:37d0985c814e | 378 | void drawMaze() |
MahletShimellis | 1:37d0985c814e | 379 | { |
MahletShimellis | 1:37d0985c814e | 380 | lcd.drawRect(0,0,12,25,1); /// top left filled rectangle-green on report |
MahletShimellis | 1:37d0985c814e | 381 | lcd.drawRect(20,0,10,20,1); /// top middle filled rectangle-orange on report |
MahletShimellis | 1:37d0985c814e | 382 | lcd.drawRect(30,10,52,10,1); /// top right filled rectangle-pink on report |
MahletShimellis | 1:37d0985c814e | 383 | lcd.drawRect(0,25,76,10,1); /// middle filled rectangle-purple on report |
MahletShimellis | 1:37d0985c814e | 384 | lcd.drawRect(0,40,80,1,1); /// bottom filled rectangle-red on report |
MahletShimellis | 1:37d0985c814e | 385 | lcd.drawRect(0,36,1,4,1); /// dead end small filled rectangle-black on report |
MahletShimellis | 1:37d0985c814e | 386 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 387 | } |
MahletShimellis | 1:37d0985c814e | 388 | |
MahletShimellis | 1:37d0985c814e | 389 | ///////////////////////////////Transitions/User interface (button) selection and event order elements////////////////////////////////// |
MahletShimellis | 1:37d0985c814e | 390 | |
MahletShimellis | 1:37d0985c814e | 391 | void buttonPressed() |
MahletShimellis | 1:37d0985c814e | 392 | { |
MahletShimellis | 1:37d0985c814e | 393 | buttonFlag++; ///increments and keepd the value of the buttonFlag counter for every button press |
MahletShimellis | 1:37d0985c814e | 394 | if ( buttonFlag > 4) { /// sets the limit value of the buttonFlag before going back to zero => five different flag states to be used for the five different modules |
MahletShimellis | 1:37d0985c814e | 395 | buttonFlag = 0; |
MahletShimellis | 1:37d0985c814e | 396 | } |
MahletShimellis | 1:37d0985c814e | 397 | } |
MahletShimellis | 1:37d0985c814e | 398 | |
MahletShimellis | 1:37d0985c814e | 399 | |
MahletShimellis | 1:37d0985c814e | 400 | void manageScreen() |
MahletShimellis | 1:37d0985c814e | 401 | { |
MahletShimellis | 1:37d0985c814e | 402 | if ( buttonFlag== 0) { |
MahletShimellis | 1:37d0985c814e | 403 | measureFlag = !measureFlag; /// toggles measureFlag - if the flag is intially low then it goes high for buttonFlag = 0 - first screen view |
MahletShimellis | 1:37d0985c814e | 404 | } |
MahletShimellis | 1:37d0985c814e | 405 | if ( buttonFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 406 | updateFlag = !updateFlag; /// toggles updateFlag - if the flag is intially low then it goes high for buttonFlag = 1 - first button press - second screen view |
MahletShimellis | 1:37d0985c814e | 407 | } |
MahletShimellis | 1:37d0985c814e | 408 | if ( buttonFlag == 2) { |
MahletShimellis | 1:37d0985c814e | 409 | |
MahletShimellis | 1:37d0985c814e | 410 | rangeFlag = !rangeFlag; /// toggles rangeFlag - if the flag is intially low then it goes high for buttonFlag = 2 - second button press - third screen view |
MahletShimellis | 1:37d0985c814e | 411 | } |
MahletShimellis | 1:37d0985c814e | 412 | if ( buttonFlag == 3) { |
MahletShimellis | 1:37d0985c814e | 413 | beamFlag = !beamFlag; /// toggles beamFlag - if the flag is intially low then it goes high for buttonFlag = 3 - third button press - fourth screen view |
MahletShimellis | 1:37d0985c814e | 414 | } |
MahletShimellis | 1:37d0985c814e | 415 | if ( buttonFlag == 4) { |
MahletShimellis | 1:37d0985c814e | 416 | wallFlag = !wallFlag; /// toggles wallFlag - if the flag is intially low then it goes high for buttonFlag = 4 - fourth button press - fifth screen view |
MahletShimellis | 1:37d0985c814e | 417 | } |
MahletShimellis | 1:37d0985c814e | 418 | |
MahletShimellis | 1:37d0985c814e | 419 | if(measureFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 420 | measure_ticker.attach(&update_distance_new,1.0); |
MahletShimellis | 1:37d0985c814e | 421 | // temperature_ticker.attach(&getTemperature,1.0); |
MahletShimellis | 1:37d0985c814e | 422 | } else { |
MahletShimellis | 1:37d0985c814e | 423 | measure_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 424 | } |
MahletShimellis | 1:37d0985c814e | 425 | |
MahletShimellis | 1:37d0985c814e | 426 | if(updateFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 427 | |
MahletShimellis | 1:37d0985c814e | 428 | update_ticker.attach(&updateExpired,2.0); |
MahletShimellis | 1:37d0985c814e | 429 | |
MahletShimellis | 1:37d0985c814e | 430 | } else { |
MahletShimellis | 1:37d0985c814e | 431 | update_ticker.detach(); // detach ticker |
MahletShimellis | 1:37d0985c814e | 432 | } |
MahletShimellis | 1:37d0985c814e | 433 | |
MahletShimellis | 1:37d0985c814e | 434 | if(rangeFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 435 | range_ticker.attach(&rangeExpired,3.0); |
MahletShimellis | 1:37d0985c814e | 436 | } else { |
MahletShimellis | 1:37d0985c814e | 437 | range_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 438 | } |
MahletShimellis | 1:37d0985c814e | 439 | |
MahletShimellis | 1:37d0985c814e | 440 | if(beamFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 441 | beam_ticker.attach(&beamExpired,1.0); |
MahletShimellis | 1:37d0985c814e | 442 | } else { |
MahletShimellis | 1:37d0985c814e | 443 | beam_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 444 | } |
MahletShimellis | 1:37d0985c814e | 445 | |
MahletShimellis | 1:37d0985c814e | 446 | if(wallFlag == 1) { |
MahletShimellis | 1:37d0985c814e | 447 | wall_ticker.attach(&wallExpired, 4.0); |
MahletShimellis | 1:37d0985c814e | 448 | } else { |
MahletShimellis | 1:37d0985c814e | 449 | wall_ticker.detach(); |
MahletShimellis | 1:37d0985c814e | 450 | } |
MahletShimellis | 1:37d0985c814e | 451 | } |
MahletShimellis | 1:37d0985c814e | 452 | |
MahletShimellis | 1:37d0985c814e | 453 | |
MahletShimellis | 1:37d0985c814e | 454 | |
MahletShimellis | 1:37d0985c814e | 455 | |
MahletShimellis | 1:37d0985c814e | 456 | |
MahletShimellis | 1:37d0985c814e | 457 | int main() |
MahletShimellis | 1:37d0985c814e | 458 | { |
MahletShimellis | 1:37d0985c814e | 459 | lcd.init(); //initializes the LCD display |
MahletShimellis | 1:37d0985c814e | 460 | /// initTMP102(); |
MahletShimellis | 1:37d0985c814e | 461 | |
MahletShimellis | 1:37d0985c814e | 462 | lcd.normalMode(); /// normal colour mode |
MahletShimellis | 1:37d0985c814e | 463 | lcd.setBrightness(0.5); /// put LED backlight on 50% |
MahletShimellis | 1:37d0985c814e | 464 | button.rise(&buttonPressed); /// indicates that the button has been pressed. button flag rises when button pressed |
MahletShimellis | 1:37d0985c814e | 465 | |
MahletShimellis | 1:37d0985c814e | 466 | measure_ticker.attach(&measureExpired,1.0); |
MahletShimellis | 1:37d0985c814e | 467 | update_ticker.attach(&updateExpired,2.0); |
MahletShimellis | 1:37d0985c814e | 468 | beam_ticker.attach(&beamExpired,3.0); |
MahletShimellis | 1:37d0985c814e | 469 | // update_ticker_two.attach(&update_distance_new,2.0); |
MahletShimellis | 1:37d0985c814e | 470 | range_ticker.attach(&rangeExpired,4.0); |
MahletShimellis | 1:37d0985c814e | 471 | wall_ticker.attach(&wallExpired, 5.0); |
MahletShimellis | 1:37d0985c814e | 472 | |
MahletShimellis | 1:37d0985c814e | 473 | |
MahletShimellis | 1:37d0985c814e | 474 | while(1) { |
MahletShimellis | 1:37d0985c814e | 475 | // distance = srf.getDistanceCm(); |
MahletShimellis | 1:37d0985c814e | 476 | |
MahletShimellis | 1:37d0985c814e | 477 | manageScreen(); |
MahletShimellis | 1:37d0985c814e | 478 | if (timerFlag) { |
MahletShimellis | 1:37d0985c814e | 479 | timerFlag=0; ///reset flag |
MahletShimellis | 1:37d0985c814e | 480 | |
MahletShimellis | 1:37d0985c814e | 481 | |
MahletShimellis | 1:37d0985c814e | 482 | if(measureFlag) { |
MahletShimellis | 1:37d0985c814e | 483 | lcd.clear(); |
MahletShimellis | 1:37d0985c814e | 484 | measureFlag =0; ///reset flag |
MahletShimellis | 1:37d0985c814e | 485 | |
MahletShimellis | 1:37d0985c814e | 486 | char buffer[14]; |
MahletShimellis | 1:37d0985c814e | 487 | |
MahletShimellis | 1:37d0985c814e | 488 | distance = srf.getDistanceCm(); /// same idea with floats |
MahletShimellis | 1:37d0985c814e | 489 | float length = sprintf(buffer,"D = %.2f cm",distance); |
MahletShimellis | 1:37d0985c814e | 490 | if (length <= 14) |
MahletShimellis | 1:37d0985c814e | 491 | lcd.printString(buffer,0,4); |
MahletShimellis | 1:37d0985c814e | 492 | |
MahletShimellis | 1:37d0985c814e | 493 | /* temperature = getTemperature(); |
MahletShimellis | 1:37d0985c814e | 494 | int lengthT = sprintf(buffer,"T = %.2f C",temperature); /// print formatted data to buffer |
MahletShimellis | 1:37d0985c814e | 495 | if (lengthT <= 14) /// if string will fit on display |
MahletShimellis | 1:37d0985c814e | 496 | lcd.printString(buffer,0,5); |
MahletShimellis | 1:37d0985c814e | 497 | |
MahletShimellis | 1:37d0985c814e | 498 | soundSpeed = calcSoundSpeed(temperature); |
MahletShimellis | 1:37d0985c814e | 499 | soundTimeDelay = calcSoundTimeDelay(distance, soundSpeed); |
MahletShimellis | 1:37d0985c814e | 500 | */ |
MahletShimellis | 1:37d0985c814e | 501 | } |
MahletShimellis | 1:37d0985c814e | 502 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 503 | |
MahletShimellis | 1:37d0985c814e | 504 | |
MahletShimellis | 1:37d0985c814e | 505 | if(updateFlag) { |
MahletShimellis | 1:37d0985c814e | 506 | lcd.clear(); |
MahletShimellis | 1:37d0985c814e | 507 | updateFlag=0; ///reset flag |
MahletShimellis | 1:37d0985c814e | 508 | char bufferOne[14]; ///character array that stores the values of the newDistance variable |
MahletShimellis | 1:37d0985c814e | 509 | char bufferTwo[14];///character array that stores the values of the lastDistance variable |
MahletShimellis | 1:37d0985c814e | 510 | |
MahletShimellis | 1:37d0985c814e | 511 | |
MahletShimellis | 1:37d0985c814e | 512 | |
MahletShimellis | 1:37d0985c814e | 513 | float lengthN = sprintf(bufferOne,"Dn = %.2f cm",distance); |
MahletShimellis | 1:37d0985c814e | 514 | if (lengthN <= 14) |
MahletShimellis | 1:37d0985c814e | 515 | lcd.printString(bufferTwo,0,4); |
MahletShimellis | 1:37d0985c814e | 516 | |
MahletShimellis | 1:37d0985c814e | 517 | float lengthL = sprintf(bufferTwo,"Dl = %.2f cm",lastDistance); |
MahletShimellis | 1:37d0985c814e | 518 | if (lengthL <= 14) |
MahletShimellis | 1:37d0985c814e | 519 | lcd.printString(bufferTwo,0,5); |
MahletShimellis | 1:37d0985c814e | 520 | } |
MahletShimellis | 1:37d0985c814e | 521 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 522 | |
MahletShimellis | 1:37d0985c814e | 523 | |
MahletShimellis | 1:37d0985c814e | 524 | if (rangeFlag) { |
MahletShimellis | 1:37d0985c814e | 525 | lcd.clear(); |
MahletShimellis | 1:37d0985c814e | 526 | rangeFlag=0; ///reset flag |
MahletShimellis | 1:37d0985c814e | 527 | char buffer[14]; |
MahletShimellis | 1:37d0985c814e | 528 | |
MahletShimellis | 1:37d0985c814e | 529 | // distance = srf.getDistanceCm(); // same idea with floats |
MahletShimellis | 1:37d0985c814e | 530 | float length = sprintf(buffer," %.2f cm",distance); |
MahletShimellis | 1:37d0985c814e | 531 | if (length <= 14) { |
MahletShimellis | 1:37d0985c814e | 532 | lcd.printString(buffer,11,2); |
MahletShimellis | 1:37d0985c814e | 533 | } |
MahletShimellis | 1:37d0985c814e | 534 | |
MahletShimellis | 1:37d0985c814e | 535 | buzzerFrequency=fsm[currentState].bOutput; /// retrieves the buzzer frequency associated to the currentState from the FSM definition |
MahletShimellis | 1:37d0985c814e | 536 | buzzer.beep(buzzerFrequency,1); |
MahletShimellis | 1:37d0985c814e | 537 | float lengthB = sprintf(buffer," %.2f hz",buzzerFrequency); |
MahletShimellis | 1:37d0985c814e | 538 | if (lengthB <= 14) { |
MahletShimellis | 1:37d0985c814e | 539 | lcd.printString(buffer,11,4); |
MahletShimellis | 1:37d0985c814e | 540 | } |
MahletShimellis | 1:37d0985c814e | 541 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 542 | } |
MahletShimellis | 1:37d0985c814e | 543 | |
MahletShimellis | 1:37d0985c814e | 544 | |
MahletShimellis | 1:37d0985c814e | 545 | if (beamFlag) { |
MahletShimellis | 1:37d0985c814e | 546 | lcd.clear(); |
MahletShimellis | 1:37d0985c814e | 547 | beamFlag =0; |
MahletShimellis | 1:37d0985c814e | 548 | |
MahletShimellis | 1:37d0985c814e | 549 | z++; |
MahletShimellis | 1:37d0985c814e | 550 | if (z>=5) z=0; |
MahletShimellis | 1:37d0985c814e | 551 | angleDegrees = angleArray[z]; |
MahletShimellis | 1:37d0985c814e | 552 | angleRadians=convertDegrees(angleDegrees); |
MahletShimellis | 1:37d0985c814e | 553 | a=angleRadians; |
MahletShimellis | 1:37d0985c814e | 554 | |
MahletShimellis | 1:37d0985c814e | 555 | drawSemiCircle(); |
MahletShimellis | 1:37d0985c814e | 556 | d =srf.getDistanceCm(); |
MahletShimellis | 1:37d0985c814e | 557 | //simply assigns the function results under conditions (a,d) to the distance variable values. calls the pointers defined previously |
MahletShimellis | 1:37d0985c814e | 558 | lateralDistance = 2*lat(a,d); |
MahletShimellis | 1:37d0985c814e | 559 | h = hyp(a,d); |
MahletShimellis | 1:37d0985c814e | 560 | |
MahletShimellis | 1:37d0985c814e | 561 | drawBeamLines(); |
MahletShimellis | 1:37d0985c814e | 562 | |
MahletShimellis | 1:37d0985c814e | 563 | } |
MahletShimellis | 1:37d0985c814e | 564 | lcd.refresh(); |
MahletShimellis | 1:37d0985c814e | 565 | |
MahletShimellis | 1:37d0985c814e | 566 | |
MahletShimellis | 1:37d0985c814e | 567 | if (wallFlag) { |
MahletShimellis | 1:37d0985c814e | 568 | lcd.clear(); |
MahletShimellis | 1:37d0985c814e | 569 | wallFlag=0; ///reset flag |
MahletShimellis | 1:37d0985c814e | 570 | drawMaze(); ///draws the screen backgroung structure |
MahletShimellis | 1:37d0985c814e | 571 | move(); ///controls the movement and associated signals for the moving pixel point |
MahletShimellis | 1:37d0985c814e | 572 | } |
MahletShimellis | 1:37d0985c814e | 573 | |
MahletShimellis | 1:37d0985c814e | 574 | } |
MahletShimellis | 1:37d0985c814e | 575 | } |
MahletShimellis | 1:37d0985c814e | 576 | } |
MahletShimellis | 1:37d0985c814e | 577 | |
MahletShimellis | 1:37d0985c814e | 578 |