#include <ESP32Servo.h>
const int trigPin = 22;
const int echoPin = 21;
const int servoPin = 25;
const int buzzerPin = 19;
const int led1Pin = 26;
const int led2Pin = 27;
const int led3Pin = 14;
Servo myServo;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(servoPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
myServo.attach(servoPin);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.034) / 2;
if (distance <= 300) {
digitalWrite(led1Pin, HIGH);
} else {
digitalWrite(led1Pin, LOW);
}
if (distance <= 250) {
digitalWrite(led2Pin, HIGH);
} else {
digitalWrite(led2Pin, LOW);
}
if (distance <= 200) {
digitalWrite(led3Pin, HIGH);
myServo.write(180); //kita kena set berapa darjah servo kena pusing.
tone(buzzerPin, 1000);
delay(1000);
noTone(buzzerPin);
} else {
digitalWrite(led3Pin, LOW);
myServo.write(0);
noTone(buzzerPin);
}
delay(100);
}