#include <Servo.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> const int trigPin = 9; const int echoPin = 8; const int redLED = 7; const int yellowLED = 6; const int greenLED = 5; const int buzzer = 4; Servo myServo; LiquidCrystal_I2C lcd(0x27, 16, 2); // Adjust to 0x3F if LCD doesn’t display long duration; int distance; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(redLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(buzzer, OUTPUT); myServo.attach(3); myServo.write(0); lcd.init(); // Initialize LCD lcd.backlight(); // Turn on backlight lcd.setCursor(0, 0); lcd.print("Ultrasonic Test"); delay(2000); lcd.clear(); // Test LEDs and buzzer at startup digitalWrite(redLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, HIGH); tone(buzzer, 1000); delay(1000); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); noTone(buzzer); } void loop() { // Send ultrasonic pulse digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Read the echo duration = pulseIn(echoPin, HIGH, 30000); distance = duration * 0.034 / 2; // Convert to cm Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); // Display on LCD lcd.setCursor(0, 0); lcd.print("Distance: "); lcd.print(distance); lcd.print(" cm "); // LED + Servo + Buzzer control if (distance > 20 && distance < 400) { // SAFE digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); noTone(buzzer); myServo.write(0); lcd.setCursor(0, 1); lcd.print("Status: SAFE "); } else if (distance <= 20 && distance > 10) { // WARNING digitalWrite(greenLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, LOW); noTone(buzzer); myServo.write(45); lcd.setCursor(0, 1); lcd.print("Status: WARNING "); } else if (distance <= 10 && distance > 0) { // DANGER digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); tone(buzzer, 1000); myServo.write(90); lcd.setCursor(0, 1); lcd.print("Status: DANGER "); } else { // No object detected digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); noTone(buzzer); lcd.setCursor(0, 1); lcd.print("Status: NO OBJ "); } delay(300); }
#include <Servo.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> const int trigPin = 9; const int echoPin = 8; const int redLED = 7; const int yellowLED = 6; const int greenLED = 5; const int buzzer = 4; Servo myServo; LiquidCrystal_I2C lcd(0x27, 16, 2); // Adjust to 0x3F if LCD doesn’t display long duration; int distance; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(redLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(greenLED, OUTPUT); pinMode(buzzer, OUTPUT); myServo.attach(3); myServo.write(0); lcd.init(); // Initialize LCD lcd.backlight(); // Turn on backlight lcd.setCursor(0, 0); lcd.print("Ultrasonic Test"); delay(2000); lcd.clear(); // Test LEDs and buzzer at startup digitalWrite(redLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, HIGH); tone(buzzer, 1000); delay(1000); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); noTone(buzzer); } void loop() { // Send ultrasonic pulse digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Read the echo duration = pulseIn(echoPin, HIGH, 30000); distance = duration * 0.034 / 2; // Convert to cm Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); // Display on LCD lcd.setCursor(0, 0); lcd.print("Distance: "); lcd.print(distance); lcd.print(" cm "); // LED + Servo + Buzzer control if (distance > 20 && distance < 400) { // SAFE digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); noTone(buzzer); myServo.write(0); lcd.setCursor(0, 1); lcd.print("Status: SAFE "); } else if (distance <= 20 && distance > 10) { // WARNING digitalWrite(greenLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, LOW); noTone(buzzer); myServo.write(45); lcd.setCursor(0, 1); lcd.print("Status: WARNING "); } else if (distance <= 10 && distance > 0) { // DANGER digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); tone(buzzer, 1000); myServo.write(90); lcd.setCursor(0, 1); lcd.print("Status: DANGER "); } else { // No object detected digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); noTone(buzzer); lcd.setCursor(0, 1); lcd.print("Status: NO OBJ "); } delay(300); }