Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: N5110 SRF02 mbed
main.cpp
00001 00002 #include "main.h" 00003 00004 int main() 00005 { 00006 int distance; 00007 int lcd_message; 00008 char distance_array [14]; 00009 lcd.init(); // initialise display 00010 lcd.normalMode(); // normal colour mode 00011 lcd.setBrightness(1.0); // put LED backlight on 50% 00012 for (int i=0; i < 23; i++) { 00013 lcd.drawCircle(42,24,i,0); 00014 lcd.refresh(); 00015 wait(0.2); 00016 } 00017 lcd.clear(); 00018 lcd.printString("Welocme to",15,1); 00019 lcd.printString ("Sensor Project",2,3); 00020 lcd.printString("Xin Zhang",0,5); 00021 wait (2.0); 00022 lcd.clear(); 00023 lcd.refresh(); 00024 ticker.attach(&timer_isr,0.5); //2Hz LED flash 00025 detect.attach(&detect_isr,0.5); //2HZ Sensor detect 00026 while(1) { 00027 00028 if(g_detect_timer_flag == 1) { 00029 for(int i=0; i<=9; i++) { //Detect 10 times 00030 distanceArray [i]=sensor.getDistanceCm(); // read sensor distance in cm and print over serial port 00031 } 00032 00033 int sum=0; // Make sensor to detect 10 times and add togther in order to get mean value 00034 for(int i=0; i<=9; i++) { 00035 sum=sum+distanceArray [i]; 00036 } 00037 00038 distance = sum/10; // Getting Mean vlaue 00039 00040 lcd_message = sprintf(distance_array, "D = %d CM",distance);// short delay before next measurement 00041 00042 lcd.printString(distance_array,5,1); 00043 00044 int x; 00045 clearCar(xOld,40); 00046 if (distance >= 300) { // situation which distance is above 300 00047 x=2; 00048 xOld=2; 00049 drawCar(x,40); 00050 00051 lcd.clearPixel(77,9); //Delete symbol for exclamation mark 00052 lcd.clearPixel (77,10); 00053 lcd.clearPixel (77,11); 00054 lcd.clearPixel (77,12); 00055 lcd.clearPixel (77,13); 00056 lcd.clearPixel (77,15); 00057 00058 lcd.clearPixel (79,9); 00059 lcd.clearPixel (79,10); 00060 lcd.clearPixel (79,11); 00061 lcd.clearPixel (79,12); 00062 lcd.clearPixel (79,13); 00063 lcd.clearPixel (79,15); 00064 00065 lcd.clearPixel (75,9); 00066 lcd.clearPixel (75,10); 00067 lcd.clearPixel (75,11); 00068 lcd.clearPixel (75,12); 00069 lcd.clearPixel (75,13); 00070 lcd.clearPixel (75,15); 00071 00072 buzzer.period(1.0/1000.0); // buzzer cloesd 00073 buzzer=0.0; 00074 wait(0.2); 00075 00076 } else if(distance < 300 && distance >16) { // situation which distance is from 16 to 300 00077 x = 68.0-(66.0/284 * distance); 00078 xOld = 68.0-(66.0/284 * distance); 00079 drawCar(x,40); 00080 00081 lcd.clearPixel(77,9); 00082 lcd.clearPixel (77,10); 00083 lcd.clearPixel (77,11); 00084 lcd.clearPixel (77,12); 00085 lcd.clearPixel (77,13); 00086 lcd.clearPixel (77,15); 00087 00088 lcd.clearPixel (79,9); 00089 lcd.clearPixel (79,10); 00090 lcd.clearPixel (79,11); 00091 lcd.clearPixel (79,12); 00092 lcd.clearPixel (79,13); 00093 lcd.clearPixel (79,15); 00094 00095 lcd.clearPixel (75,9); 00096 lcd.clearPixel (75,10); 00097 lcd.clearPixel (75,11); 00098 lcd.clearPixel (75,12); 00099 lcd.clearPixel (75,13); 00100 lcd.clearPixel (75,15); 00101 00102 buzzer.period(1.0/1000.0); // buzzer closed 00103 buzzer=0.0; 00104 wait(0.2); 00105 00106 00107 } else { // situation which distance is below 16 and 00108 x=67; 00109 xOld = 67; 00110 drawCar(x,40); 00111 00112 lcd.setPixel(77,9); // symbol for exclamation mark 00113 lcd.setPixel (77,10); 00114 lcd.setPixel (77,11); 00115 lcd.setPixel (77,12); 00116 lcd.setPixel (77,13); 00117 lcd.setPixel (77,15); 00118 00119 lcd.setPixel (79,9); 00120 lcd.setPixel (79,10); 00121 lcd.setPixel (79,11); 00122 lcd.setPixel (79,12); 00123 lcd.setPixel (79,13); 00124 lcd.setPixel (79,15); 00125 00126 lcd.setPixel (75,9); 00127 lcd.setPixel (75,10); 00128 lcd.setPixel (75,11); 00129 lcd.setPixel (75,12); 00130 lcd.setPixel (75,13); 00131 lcd.setPixel (75,15); 00132 00133 buzzer.period(1.0/1000.0); //buzzer up 00134 buzzer=0.5; 00135 wait(0.2); 00136 00137 00138 00139 00140 } 00141 } 00142 lcd.setPixel(82,43); //Building walls 00143 lcd.setPixel(81,42); 00144 lcd.setPixel(80,41); 00145 lcd.setPixel(79,40); 00146 lcd.setPixel(78,39); 00147 lcd.setPixel(77,38); 00148 lcd.setPixel (77,37); 00149 lcd.setPixel(77,36); 00150 lcd.setPixel (77,35); 00151 lcd.setPixel (77,34); 00152 lcd.setPixel (77,33); 00153 lcd.setPixel (77,32); 00154 lcd.setPixel (77,31); 00155 lcd.setPixel (77,30); 00156 lcd.setPixel (77,29); 00157 lcd.setPixel (77,28); 00158 lcd.setPixel (78,28); 00159 lcd.setPixel (79,29); 00160 lcd.setPixel (80,30); 00161 lcd.setPixel (81,31); 00162 lcd.setPixel (82,32); 00163 00164 if ( distance >=0 && distance <= 16) { //When the distance is from 0 to 16, the two led will flash and show warining signal 00165 if(g_timer_flag == 1) { 00166 r_led1 = !r_led1; 00167 r_led2= !r_led2; 00168 } 00169 } else { //When the distance is above 16, the only one led flashs 00170 if(g_timer_flag == 1) { 00171 r_led1 = !r_led1; 00172 r_led2= 0; 00173 } 00174 } 00175 lcd.refresh(); 00176 sleep(); 00177 } 00178 } 00179 00180 void timer_isr() 00181 { 00182 g_timer_flag = 1; // set flag in ISR 00183 } 00184 00185 void detect_isr() 00186 { 00187 g_detect_timer_flag = 1; 00188 } 00189 00190 void drawCar(int x,int y) //43 00191 { 00192 lcd.setPixel(x,y); 00193 lcd.setPixel(x+1,y); 00194 lcd.setPixel(x+2,y); 00195 lcd.setPixel (x+3,y); 00196 lcd.setPixel (x+4,y); 00197 lcd.setPixel (x+5,y); 00198 lcd.setPixel (x+6,y); 00199 lcd.setPixel (x+7,y); 00200 lcd.setPixel (x+8,y); 00201 lcd.setPixel (x+9,y); 00202 lcd.setPixel (x+10,y); 00203 lcd.setPixel (x,y-1); 00204 lcd.setPixel (x+1,y-2); 00205 lcd.setPixel (x+2,y-3); 00206 lcd.setPixel (x+3,y-3); 00207 lcd.setPixel (x+4,y-3); 00208 lcd.setPixel (x+5,y-3); 00209 lcd.setPixel (x+6,y-3); 00210 lcd.setPixel (x+7,y-3); 00211 lcd.setPixel (x+9,y-1); 00212 lcd.setPixel (x+8,y-2); 00213 lcd.setPixel (x+10,y); 00214 lcd.drawCircle(x+2,y+2,1,1); 00215 lcd.drawCircle(x+7,y+2,1,1); 00216 00217 } 00218 00219 void clearCar(int x,int y) 00220 { 00221 lcd.clearPixel(x,y); 00222 lcd.clearPixel(x+1,y); 00223 lcd.clearPixel(x+2,y); 00224 lcd.clearPixel (x+3,y); 00225 lcd.clearPixel (x+4,y); 00226 lcd.clearPixel (x+5,y); 00227 lcd.clearPixel (x+6,y); 00228 lcd.clearPixel (x+7,y); 00229 lcd.clearPixel (x+8,y); 00230 lcd.clearPixel (x+9,y); 00231 lcd.clearPixel (x+10,y); 00232 lcd.clearPixel (x,y-1); 00233 lcd.clearPixel (x+1,y-2); 00234 lcd.clearPixel (x+2,y-3); 00235 lcd.clearPixel (x+3,y-3); 00236 lcd.clearPixel (x+4,y-3); 00237 lcd.clearPixel (x+5,y-3); 00238 lcd.clearPixel (x+6,y-3); 00239 lcd.clearPixel (x+7,y-3); 00240 lcd.clearPixel (x+9,y-1); 00241 lcd.clearPixel (x+8,y-2); 00242 lcd.clearPixel (x+10,y); 00243 lcd.drawCircle(x+2,y+2,1,2); 00244 lcd.drawCircle(x+7,y+2,1,2); 00245 }
Generated on Thu Aug 18 2022 00:16:01 by
 1.7.2
 1.7.2