THE Parking sensor
For this project, we had only two sensor options: the LDR or the ultrasonic sensor. Since we’d already used the LDR before, I wanted to try out something new. So, I looked into the ultrasonic sensor and started working with it. While brainstorming, I came up with various game ideas that used the sensor, but they needed a screen, which wasn’t allowed for this assignment. After more research on ultrasonic sensors, I found they could work well as a car parking alarm to help drivers avoid hitting obstacles. I started writing the code and set up a variable called “time_delay” to control how fast the LED blinks. To make it more like a real parking sensor, I decided to add a buzzing sound and found out how to connect a buzzer to the setup. With these changes, I made a working parking sensor. To meet the assignment’s requirements for a switch and a second LED, I made a switch that, when pressed, turns on a bulb that matches its color.
THE CODE:
const int trigPin = 9;
const int echoPin = 10;
int led = 5;
long duration;
int distance;
const int buzzer = 13;
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 8; // the second light
int buttonState = 0; // button bool
void setup() {
// put your setup code here, to run once:
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT); //light
pinMode(buzzer, OUTPUT); // buzzer
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output
pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input
Serial.begin(9600);
}
void loop() {
//sending the audio pulses
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//calculating distance
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
//the warning rate
float time_delay= (distance *3) +30;
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
if(distance < 50)
{
//the warning / buzzing rate
digitalWrite(buzzer, HIGH);
analogWrite(led,0);
delay(time_delay);
digitalWrite(buzzer,LOW);
analogWrite(led,255);
}
else{
digitalWrite(led, LOW);
noTone(buzzer);
}
//for feedback
Serial.print("Distance: ");
Serial.println(distance);
}
This is how it looked like
Video:
