#include <LiquidCrystal.h>
// LCD pins: RS, EN, D4, D5, D6, D7
LiquidCrystal lcd(7, 8, 4, 5, 6, 9);
// Pins
const int trigPin = 12;
const int echoPin = 11;
const int ledPin = 13;
const int buttonMicro = 2; // micros() button
const int buttonMilli = 3; // millis() button
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonMicro, INPUT_PULLUP);
pinMode(buttonMilli, INPUT_PULLUP);
lcd.begin(16, 2);
// Line 1: Always display Prof.Tamer
lcd.setCursor(0, 0);
lcd.print("Prof.Tamer ");
}
void loop() {
long duration;
float distance;
// Trigger ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read echo pulse
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Convert to cm
// Control LED based on distance
digitalWrite(ledPin, (distance <= 19) ? HIGH : LOW);
// Show time when buttons are pressed
if (digitalRead(buttonMicro) == LOW) {
lcd.setCursor(0, 1);
lcd.print("Time(us): ");
lcd.setCursor(10, 1);
lcd.print(micros());
}
else if (digitalRead(buttonMilli) == LOW) {
lcd.setCursor(0, 1);
lcd.print("Time(ms): ");
lcd.setCursor(10, 1);
lcd.print(millis());
}
else {
// Default display: Distance
lcd.setCursor(0, 1);
lcd.print("Distance: ");
lcd.setCursor(10, 1);
lcd.print(" "); // Clear old numbers
lcd.setCursor(10, 1);
lcd.print(distance, 1);
lcd.print("cm");
}
delay(200); // Sensor refresh delay
}