#include <Servo.h>
#include <LiquidCrystal.h>
Servo myservo;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Create an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
int pos = 0; // the initial position of the servo motor
const int trigPin = 9;
const int echoPin = 10;
const int motor = 11;
const int buzzer = 12;
const int ledPin1 = 8;
const int ledPin2 = 13;
float distanceCm, DistanceSec,duration;
void setup() {
myservo.attach(motor); // attach the Servo motor to pin number 11
lcd.begin(16,2); // Initialize the LCD interface with their Dimensionss
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
DistanceSec=20;
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // go from 0 to 180 degrees
// in steps of 1 degree
myservo.write(pos); // Program the Servo to go to the position (pos)
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //send a pulse of 10 micro seconds
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
if (distanceCm <= DistanceSec)
{
if(distanceCm <= DistanceSec/2)
{
tone(buzzer, 10); // Send 1KHz sound signal...
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(700);
noTone(buzzer); // Stop sound...
lcd.setCursor(0,0); // position the cursor at 0.0
lcd.print("Distance: "); // Print "Distance" on LCD
lcd.print(distanceCm); // Print the value Obtained on LCD
lcd.print(" cm "); // Print the unit on LCD
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(2000);
}
else
{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin1, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
lcd.setCursor(0,0); // position the cursor at 0.0
lcd.print("Distance: "); // Print "Distance" on LCD
lcd.print(distanceCm); // Printe the ontaned value on LCD
lcd.print(" cm "); // Printe the unit on LCD
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(2000);
}
}
else{
digitalWrite(buzzer, LOW);
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
}
lcd.setCursor(0,0); // position the cursor at 0.0
lcd.print("Distance: "); // Print "Distance" on LCD
lcd.print(distanceCm); // Print the ontained value on LCD
lcd.print(" cm "); // Print the unit on LCD
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(80); //wait 100ms for the servo to seek its position
}
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
if (distanceCm <= DistanceSec){
if(distanceCm <= DistanceSec/2)
{
tone(buzzer, 10); // Send 1KHz sound signal...
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(700);
noTone(buzzer); // Stop sound...
lcd.setCursor(0,0); // position the cursor at 0.0
lcd.print("Distance: "); // Print "Distance" on LCD
lcd.print(distanceCm); // Print the obtained value on LCD
lcd.print(" cm "); // Print the unit on LCD
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(2000);
}
else
{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin1, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
lcd.setCursor(0,0); // position the cursor at 0,0
lcd.print("Distance: "); // Print "Distance" on LCD
lcd.print(distanceCm); // Print the obtained value on LCD
lcd.print(" cm "); // Print the unit on LCD
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(2000);
}
}
else{
digitalWrite(buzzer, LOW);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}
lcd.setCursor(0,0);
lcd.print("Distance: ");
lcd.print(distanceCm);
lcd.print(" cm ");
delay(10);
lcd.setCursor(0,1);
lcd.print("Angle : ");
lcd.print(pos);
lcd.print(" deg ");
delay(80);
}
}