Devices & Components
Arduino Nano Every
10 jumper wires 150mm male
HC-SR04 Ultrasonic Sensor
LED
220 ohm resistor
LCD screen 16X2
Active buzzer
Hardware & Tools
Ruler (generic)
Software & Tools
Arduino IDE
Project description
Code
Distance measuring code
c
Confirmed code with schematic
1#include <LiquidCrystal.h> // Library for controlling the LCD 2 3// LCD pin connections 4int RS = 12; 5int E = 10; 6int D4 = 9; 7int D5 = 8; 8int D6 = 7; 9int D7 = 6; 10 11// LED pin definitions 12int redLed = 4; 13int greenLed = 5; 14int orangeLed = 11; 15 16// Control variables 17int BuzzTimes = 10; // Number of warning blinks 18int redBlink = 10; // (Declared but not currently used) 19 20// Create LCD object (parallel mode) 21LiquidCrystal lcd(RS, E, D4, D5, D6, D7); 22 23// Ultrasonic sensor pins 24int trigPin = 2; 25int echoPin = 3; 26 27// Variables for distance measurement 28long TravelTime; // Time taken for echo to return (µs) 29float TravelDistance; // Calculated distance (cm) 30int TravelTarget; // (Declared but not currently used) 31 32void setup() { 33 Serial.begin(9600); // Start serial communication 34 lcd.begin(16, 4); // Initialize 16x4 LCD 35 36 // Set LED pins as outputs 37 pinMode(redLed, OUTPUT); 38 pinMode(greenLed, OUTPUT); 39 pinMode(orangeLed, OUTPUT); 40 41 // Set ultrasonic sensor pin modes 42 pinMode(trigPin, OUTPUT); 43 pinMode(echoPin, INPUT); 44 45 // Display startup message 46 lcd.setCursor(0, 0); 47 lcd.print("System Ready"); 48 delay(1000); 49 lcd.clear(); 50} 51 52void loop() { 53 54 // Display distance label on LCD (value updated later) 55 lcd.setCursor(0, 0); 56 lcd.print("Distance:"); 57 lcd.print(TravelDistance); 58 lcd.print(" cm"); 59 60 // Trigger ultrasonic pulse 61 digitalWrite(trigPin, LOW); 62 delayMicroseconds(10); 63 digitalWrite(trigPin, HIGH); 64 delayMicroseconds(10); 65 digitalWrite(trigPin, LOW); 66 67 // Measure echo pulse duration 68 TravelTime = pulseIn(echoPin, HIGH); 69 70 delay(500); // Measurement interval delay 71 72 // Convert time to distance in cm 73 TravelDistance = (TravelTime * 0.034) / 2; 74 75 // Clear previous warning/status messages 76 lcd.clear(); 77 78 // CAUTION ZONE (10–20 cm) 79 if (TravelDistance >= 10 && TravelDistance <= 20) { 80 81 digitalWrite(redLed, LOW); 82 digitalWrite(greenLed, LOW); 83 digitalWrite(orangeLed, HIGH); 84 85 lcd.setCursor(4, 2); 86 lcd.print("BE CAUTIOUS"); 87 lcd.setCursor(4, 3); 88 lcd.print("YOU ARE CLOSE"); 89 } 90 91 // DANGER ZONE (< 10 cm) 92 else if (TravelDistance < 10) { 93 94 int B = 0; 95 while (B < BuzzTimes) { 96 97 // Blink red LED as warning 98 digitalWrite(redLed, HIGH); 99 delay(50); 100 digitalWrite(redLed, LOW); 101 digitalWrite(greenLed, LOW); 102 delay(50); 103 104 // Re-display distance and warning 105 lcd.setCursor(0, 0); 106 lcd.print("Distance:"); 107 lcd.print(TravelDistance); 108 lcd.print(" cm"); 109 110 lcd.setCursor(4, 2); 111 lcd.print("WARNING, TOO CLOSE"); 112 113 B = B + 1; // Increment blink counter 114 } 115 } 116 117 // SAFE ZONE (> 20 cm) 118 else { 119 digitalWrite(greenLed, HIGH); 120 digitalWrite(redLed, LOW); 121 digitalWrite(orangeLed, LOW); 122 123 lcd.setCursor(4, 2); 124 lcd.print("SAFE ZONE"); 125 } 126 127 // Print distance to Serial Monitor (debugging) 128 Serial.print("Distance: "); 129 Serial.print(TravelTime); // NOTE: This prints time, not distance 130 Serial.println(" cm"); 131}
Downloadable files
Schematic Diagram
Confirm schematic with the code
Screenshot 2026-01-28 144851.png

Comments
Only logged in users can leave comments