![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
an ultrasonic sensor used as a car sensor
Dependencies: N5110 PowerControl beep mbed sensor
Diff: main.cpp
- Revision:
- 1:475a5b7258fa
- Parent:
- 0:be8f580f1b5b
- Child:
- 2:9328053b2ba7
--- a/main.cpp Thu Apr 30 10:34:39 2015 +0000 +++ b/main.cpp Fri May 08 15:41:29 2015 +0000 @@ -1,226 +1,405 @@ - //#include " -#include "mbed.h" -#include "SRF02.h" -#include "N5110.h" -#include "beep.h" +/** +@file main.cpp +@brief Program implementation - //Pins -N5110 lcd(p7,p8,p9,p10,p11,p13,p26); -SRF02 sensor(p28, p27); -InterruptIn button(p17); -Beep buzzer(p21); -PwmOut green1(p22); -PwmOut green2(p23); -PwmOut yellow1(p24); -PwmOut yellow2(p25); -AnalogIn pot(p20); - -Serial pc(USBTX, USBRX); +*/ - //prototype -void welcomeMessage(); -void drawObject(); -void getDistance(); -void readDistance(); -void distance1(); -void distance2(); -void distance3(); +#include "main.h" - //variables -int distance; -int i=0; int main() { // the LCD display is initiated first when switch is on + + + PHY_PowerDown(); lcd.init(); welcomeMessage(); + pot.read(); lcd.clear(); - pot.read(); + button.rise(&buttonPressed); + while (1) { - int distance=sensor.getDistanceCm(); - char buffer[14]; - int length = sprintf(buffer,"D= %d cm",distance); - if(length<=14) - lcd.printString(buffer,0,0); - wait(1.0); - lcd.clear(); - if (distance >= 51 && distance <= 71) { - //lcd.drawRect(7,0,7,48,1); - //lcd.drawRect(44,0,7,12,1); - //lcd.drawRect(51,0,7,24,1); - //lcd.drawRect(57,0,7,12,1); - lcd.refresh(); - i=3; - } - else if (distance >= 35 && distance <= 50) { - /*lcd.drawRect(7,0,7,48,1); - lcd.drawRect(40,0,7,12,1); - lcd.drawRect(47,0,7,24,1); - lcd.drawRect(53,0,7,12,1);*/ - lcd.refresh(); - i=2; - } - else { - - i=1; - buzzer.beep(1000, 60); - } - /*if (i==1) //set the if distance is larger or smaller in here and directly link to the LED colors - { - distance1(); - } - else if (i==2){ - distance2(); - } - else { - distance3(); - } - lcd.setBrightness(pot.read()); - // buzzer.beep(1000,3);*/ + + lcd.setBrightness(pot.read()); + + + if (i==0) + { + getDistanceCm(); + compDist(); + + + } + else if (i==1) + { + getDistanceIn(); + compDist(); + // Sleep(); - - - //drawObject(); - //wait(2); - //lcd.clear(); - //getDistance(); - // readDistance(); - // lcd.clear(); - } + + } + else if (i==2) + { + getDistanceUs(); + compDist(); + // Peripheral_PowerUp(0xFFFFFFFF); + } + else { + + getAcc(); + compDist(); + + + } + + } } - //Print welcome message (Change pixel coordinate later) +void buttonPressed() +{ + wait(0.2); + + if (i>3) + { + i=0; + + + } + else { + i++; + } + } + + //Print welcome message (Change pixel coordinate later) void welcomeMessage() { - lcd.printString("200911007", 0,4); - lcd.printString("Saleh Jaffal", 0,3); + lcd.printString("200911007", 0,1); + lcd.printString("Saleh Jaffal", 0,0); lcd.refresh(); - wait (2.0); + getDistanceCm(); + getDistanceIn(); + getDistanceUs(); } - //LCD display distance between object and the car -void drawObject() +void getAcc() +{ + getDistanceCm(); + getDistanceUs(); + + dist = sensor.getDistanceCm(); + tim = sensor.getDistanceUs(); + + + Vel2 = ((dist)*10000/tim); + Vel1 = ((distanceCm*10000)/distanceUs); + Acc = (Vel2-Vel1)/(tim-distanceUs); + + + } +void getDistanceCm() { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(65,0,7,12,1); - lcd.drawRect(71,0,7,24,1); - lcd.drawRect(77,0,7,12,1); - lcd.refresh(); + + distance1 = sensor.getDistanceCm(); + distance2 = sensor.getDistanceCm(); + distance3 = sensor.getDistanceCm(); + distance4 = sensor.getDistanceCm(); + distance5 = sensor.getDistanceCm(); + distance6 = sensor.getDistanceCm(); + distance7 = sensor.getDistanceCm(); + distance8 = sensor.getDistanceCm(); + distance9 = sensor.getDistanceCm(); + distance10 = sensor.getDistanceCm(); + + sum = distance1+distance2+distance3+distance4+distance5+distance6+distance7+distance8+distance9+distance10; + + + distanceCm = sum/10; + } + + + + + + + +void getDistanceIn() +{ + distance1 = sensor.getDistanceIn(); + distance2 = sensor.getDistanceIn(); + distance3 = sensor.getDistanceIn(); + distance4 = sensor.getDistanceIn(); + distance5 = sensor.getDistanceIn(); + distance6 = sensor.getDistanceIn(); + distance7 = sensor.getDistanceIn(); + distance8 = sensor.getDistanceIn(); + distance9 = sensor.getDistanceIn(); + distance10 = sensor.getDistanceIn(); + + + sum = distance1+distance2+distance3+distance4+distance5+distance6+distance7+distance8+distance9+distance10; + + distanceIn = sum/10; + } + + + +void getDistanceUs() +{ + distance1 = sensor.getDistanceUs(); + distance2 = sensor.getDistanceUs(); + distance3 = sensor.getDistanceUs(); + distance4 = sensor.getDistanceUs(); + distance5 = sensor.getDistanceUs(); + distance6 = sensor.getDistanceUs(); + distance7 = sensor.getDistanceUs(); + distance8 = sensor.getDistanceUs(); + distance9 = sensor.getDistanceUs(); + distance10 = sensor.getDistanceUs(); + + + sum = distance1+distance2+distance3+distance4+distance5+distance6+distance7+distance8+distance9+distance10; + + distanceUs = sum/10; + + } -void getDistance() + + + + +void distanceA() +{ + green1=1; + green2=0; + yellow1=0; + yellow2=0; + red1=0; + red2=0; + buzzer.beep(2000,0.1); +} + +void distanceB() { - distance == sensor.getDistanceCm(); + green1=1; + green2=1; + yellow1=0; + yellow2=0; + red1=0; + red2=0; + + + buzzer.beep(2000,0.15); +} + +void distanceC() +{ green1=1; + green2=1; + yellow1=1; + yellow2=0; + red1=0; + red2=0; + + + buzzer.beep(2000,0.2); +} + +void distanceD() +{ + green1=1; + green2=1; + yellow1=1; + yellow2=1; + red1=0; + red2=0; + buzzer.beep(2000,0.25); +} + +void distanceE() +{ + green1=1; + green2=1; + yellow1=1; + yellow2=1; + red1=1; + red2=0; + + + buzzer.beep(2000,0.8); } -/*void readDistance() +void distanceF() { - if (distance >= 235) { - lcd.drawRect(7,0,7,48,1); //wall - lcd.drawRect(65,0,7,12,1); //car1 - lcd.drawRect(71,0,7,24,1); //car2 - lcd.drawRect(77,0,7,12,1); //car3 - lcd.refresh(); - i=3; - } - else if (distance >= 205 && distance <= 234) { - lcd.drawRect(7,0,7,48,1); //wall - lcd.drawRect(61,0,7,12,1); - lcd.drawRect(67,0,7,24,1); - lcd.drawRect(73,0,7,12,1); - lcd.refresh(); - i=3; - } - else if (distance >= 175 && distance <= 204) { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(57,0,7,12,1); - lcd.drawRect(63,0,7,24,1); - lcd.drawRect(69,0,7,12,1); - lcd.refresh(); - i=2; - } - else if (distance >= 135 && distance <= 174) { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(53,0,7,12,1); - lcd.drawRect(59,0,7,24,1); - lcd.drawRect(65,0,7,12,1); - lcd.refresh(); - i=2; - } - else if (distance >= 105 && distance <= 134) { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(49,0,7,12,1); - lcd.drawRect(55,0,7,24,1); - lcd.drawRect(61,0,7,12,1); - lcd.refresh(); - i=2; - } - else if (distance >= 75 && distance <= 104) { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(44,0,7,12,1); - lcd.drawRect(51,0,7,24,1); - lcd.drawRect(57,0,7,12,1); - lcd.refresh(); - i=1; - } - else if (distance >= 45 && distance <= 74) { - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(40,0,7,12,1); - lcd.drawRect(47,0,7,24,1); - lcd.drawRect(53,0,7,12,1); - lcd.refresh(); - i=1; - } - else if (distance <= 44) { - - lcd.drawRect(7,0,7,48,1); - lcd.drawRect(65,0,7,12,1); - lcd.drawRect(71,0,7,24,1); - lcd.drawRect(77,0,7,12,1); - lcd.refresh(); - - i=1; - buzzer.beep(1000, 60); - } -}*/ + green1=1; + green2=1; + yellow1=1; + yellow2=1; + red1=1; + red2=1; + -void distance1() -{ - green1 = 1; - green2=1; - yellow1 = 1; - yellow2 = 1; - // buzzer.beep(1000,200); - + buzzer.beep(2000,200); } -void distance2() +void compDist() { - yellow1 = 1; - yellow2 = 1; - green1 = 0; - green2=0; - + + + + if (i==0) + { + + char buffer[14]; + int length = sprintf(buffer,"D= %d cm",distanceCm); + if(length<=14); + + lcd.clear(); + lcd.printString(buffer,0,0); + + + + wait(0.2); - // buzzer.beep(1000,100); -} + + if (distanceCm >= 100) { + + lcd.refresh(); + distanceA(); + } + else if (distanceCm >= 80 && distanceCm <= 99) { + + lcd.refresh(); + distanceB(); + } + else if (distanceCm >= 60 && distanceCm <= 79) { + + lcd.refresh(); + distanceC(); + } + else if (distanceCm >= 40 && distanceCm <= 59) { + + lcd.refresh(); + distanceD(); + } + else if (distanceCm >= 20 && distanceCm <=39 ) { + + lcd.refresh(); + distanceE(); + } + else { + + lcd.refresh(); + distanceF(); + } -void distance3() + } + else if (i==1) { - yellow1 = 0; - yellow2 = 0; - green1 = 0; - green2=0; - + char buffer[14]; + int length = sprintf(buffer,"D= %d in",distanceIn); + if(length<=14); + lcd.clear(); + lcd.printString(buffer,0,0); + wait(0.2); + + if (distanceIn >= 40) { + + lcd.refresh(); + distanceA(); + } + else if (distanceIn >= 32 && distanceIn <= 39) { + + lcd.refresh(); + distanceB(); + } + else if (distanceIn >= 24 && distanceIn <= 31) { + + lcd.refresh(); + distanceC(); + } + else if (distanceIn >= 16 && distanceIn <= 23) { + + lcd.refresh(); + distanceD(); + } + else if (distanceIn >= 8 && distanceIn <=15 ) { + + lcd.refresh(); + distanceE(); + } + else { + lcd.refresh(); + distanceF(); + } + } + + else if (i==2) + { + char buffer[14]; + int length = sprintf(buffer,"D= %d us",distanceUs); + if(length<=14); + lcd.clear(); + lcd.printString(buffer,0,0); + wait(0.2); + + if (distanceUs >= 5900) { + + lcd.refresh(); + distanceA(); + } + else if (distanceUs >= 4680 && distanceUs <= 5899) { + + lcd.refresh(); + distanceB(); + } + else if (distanceUs >= 3400 && distanceUs <= 4679) { + + lcd.refresh(); + distanceC(); + } + else if (distanceUs >= 2430 && distanceUs <= 3339) { + + lcd.refresh(); + distanceD(); + } + else if (distanceUs >= 1220 && distanceUs <=2429 ) { + + lcd.refresh(); + distanceE(); + } + else { + lcd.refresh(); + distanceF(); + } + + } + + + + + else { + + char buffer[14]; + int length = sprintf(buffer,"Acc= %d m/s",Vel2); + if(length<=14); + char buffer2[14]; + int length2 = sprintf(buffer2,"Acc= %d m/s",Vel1); + if(length2<=14); + lcd.clear(); + lcd.printString(buffer,0,0); + lcd.printString(buffer2,0,2); - // buzzer.beep(1000,50); -} - + wait(0.2); + + } + + +} \ No newline at end of file