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
Revision 0:0999baad59eb, committed 2022-10-08
- Comitter:
- tb_17
- Date:
- Sat Oct 08 10:29:35 2022 +0000
- Commit message:
- My First Mbed Project
Changed in this revision
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