//EMAN NASIR
//F2024376329
//TASK1 - LED Distance Indicators
#include <ESP32Servo.h>
#define ServoPin (14)
unsigned int ADCmin = 0;
unsigned int ADCmax = 400;
unsigned int POSmin = 0;
unsigned int POSmax = 180;
#define TRIG_PIN 19
#define ECHO_PIN 18
#define LED 2
#define LED2 4
float duration_us, distance_cm;
Servo myServo;
void setup() {
Serial.begin(9600);
myServo.attach(ServoPin);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);
distance_cm = 0.017 * duration_us;
int pos = map(distance_cm, ADCmin, ADCmax, POSmin, POSmax);
myServo.write(pos);
String led1_state = "OFF";
String led2_state = "OFF";
if (distance_cm < 50) {
digitalWrite(LED, HIGH);
digitalWrite(LED2, LOW);
led1_state = "ON";
}
else if (distance_cm >= 50 && distance_cm < 150) {
digitalWrite(LED, LOW);
digitalWrite(LED2, HIGH);
led2_state = "ON";
}
else {
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
}
Serial.print("Dist: ");
Serial.print(distance_cm);
Serial.print(" cm | Servo: ");
Serial.print(pos);
Serial.print(" deg | LED1: ");
Serial.print(led1_state);
Serial.print(" | LED2: ");
Serial.println(led2_state);
delay(100);
}