This car parking system uses Freedom board KL25, ultrasonic sensor, keypad, and LCD. The distance is measured via ultrasonic sensor, and it is displayed on LCD. The keypad takes user input of the that decides what led to turn on. If user types 25, after 25 cm, the light of the Freedom board turns to a specific color. After half if this distance 12.5 cm, it starts to to turn yellow. And after 90% of distance is covered then it starts blinking.

Dependencies:   HC_SR04_Ultrasonic_Library Keypad TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
tb_17
Date:
Sat Oct 08 10:29:35 2022 +0000
Commit message:
My First Mbed Project

Changed in this revision

HC_SR04_Ultrasonic_Library.lib Show annotated file Show diff for this revision Revisions of this file
Keypad.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 0999baad59eb HC_SR04_Ultrasonic_Library.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HC_SR04_Ultrasonic_Library.lib	Sat Oct 08 10:29:35 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
diff -r 000000000000 -r 0999baad59eb Keypad.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Keypad.lib	Sat Oct 08 10:29:35 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/grantphillips/code/Keypad/#4bbd88022a6f
diff -r 000000000000 -r 0999baad59eb TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Sat Oct 08 10:29:35 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
diff -r 000000000000 -r 0999baad59eb main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Oct 08 10:29:35 2022 +0000
@@ -0,0 +1,159 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "Keypad.h"
+#include "ultrasonic.h"
+
+TextLCD my_lcd(PTE20, PTE21, PTE22, PTE23, PTE29, PTE30, TextLCD::LCD16x2);
+Keypad kpad(PTA12, PTD4, PTA2, PTA1, PTC9, PTC8, PTA5, PTA4);
+ 
+ void dist(int distance){
+}
+ 
+ultrasonic mu(PTA13, PTD5, .1, 1, &dist);    //Set the trigger pin to PTA13 and the echo pin to PTD5
+                                        //have updates every .1 seconds and a timeout after 1
+                                        //second, and call dist when the distance changes
+float dispDist;
+float prevDist;
+float interDist;
+float input;
+
+PwmOut ledRed(LED_RED);
+PwmOut ledGreen(LED_GREEN);
+PwmOut ledBlue(LED_BLUE);
+
+int main()
+{
+    my_lcd.printf("Input distance (cm) then press #:");
+    wait(2);
+    my_lcd.cls();
+    char key;
+    int released = 1;
+    char inputArray[16];
+    int i = 0 ;
+    while(i<16){
+        key = kpad.ReadKey();                   //read the current key pressed
+
+        if(key == '\0')
+            released = 1;                       //set the flag when all keys are released
+           
+        if((key != '\0') && (released == 1)) {  //if a key is pressed AND previous key was released
+            
+            if (key == '#'){
+                my_lcd.printf("=");
+                break;
+            }
+            else{
+                my_lcd.printf("%c", key);
+            }
+            
+            inputArray[i] = key; 
+            i++;         
+            released = 0;                       //clear the flag to indicate that key is still pressed
+        }
+    }
+    sscanf(inputArray, "%f", &input);
+    my_lcd.locate(0, 1);
+    my_lcd.printf("Input: %.1f", input);
+    wait(1);
+    my_lcd.cls();
+    
+    mu.startUpdates();//start mesuring the distance
+    while(1)
+    {        
+        dispDist = mu.getCurrentDistance();
+        dispDist = dispDist / 10;
+        interDist = ((2 * input) / 3 - input / 3) / 5;
+        if (dispDist > input){
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        
+        else if ((dispDist < input && dispDist > 2 * input / 3)){
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);;
+            extRedLed = 0;
+            extGreenLed = 1;
+            wait(0.01);
+        }
+        
+        else if (dispDist >= input / 3 & dispDist <= (input / 3) + interDist){
+            //Do something
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0.95;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        else if (dispDist >= (input / 3) + interDist &  dispDist <=  (input / 3) + 2 * interDist){
+            //Do something
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0.75;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        else if (dispDist >= (input / 3) + 2 * interDist &  dispDist <=  (input / 3) + 3 * interDist){
+            //Do something
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0.55;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        else if (dispDist >= (input / 3) + 3 * interDist &  dispDist <=  (input / 3) + 4 * interDist){
+            //Do something
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0.35;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        else if (dispDist >= (input / 3) + 4 * interDist &  dispDist <=  (input / 3) + 5 * interDist){
+            //Do something
+            PwmOut extRedLed(PTD2);
+            PwmOut extGreenLed(PTD0);
+            extRedLed = 0.15;
+            extGreenLed = 0;
+            wait(0.01);
+        }
+        else if (dispDist < (input / 3)){
+                PwmOut extRedLed(PTD2);
+                PwmOut extGreenLed(PTD0);
+                extRedLed = 0.95;
+                extGreenLed = 0;
+                wait(0.01);
+            }
+        
+        if (prevDist > dispDist){
+            ledRed = 0;
+            ledGreen = 0;
+            ledBlue = 1;
+            wait(0.01);
+        }
+        
+        else if (prevDist < dispDist){
+            ledRed = 1;
+            ledGreen = 1;
+            ledBlue = 0;            
+            wait(0.01);
+        }
+        
+        else{
+            ledRed.pulsewidth(1);
+            ledGreen.pulsewidth(1);
+            ledBlue.pulsewidth(1); 
+            wait(0.01);
+        }
+        
+        prevDist = dispDist;
+        my_lcd.printf("%.1f", dispDist); 
+        my_lcd.locate(6, 0);
+        my_lcd.printf("cm");
+        wait(0.5);
+        my_lcd.cls();
+        wait(0.01);
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 0999baad59eb mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Oct 08 10:29:35 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file