an ultrasonic sensor used as a car sensor

Dependencies:   N5110 PowerControl beep mbed sensor

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