#define echoPin 2 // Mendefinisikan pin untuk menerima sinyal pantul (echo)
#define trigPin 3 // Mendefinisikan pin untuk mengirim sinyal ultrasonik (trigger)
int maximumRange = 300; // Jarak maksimum yang dapat diukur (dalam centimeter)
int minimumRange = 00; // Jarak minimum yang dapat diukur (dalam centimeter)
long duration, distance; // Variabel untuk menyimpan durasi dan jarak
void setup() {
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
pinMode(trigPin, OUTPUT); // Mengatur pin trigger sebagai output
pinMode(echoPin, INPUT); // Mengatur pin echo sebagai input
pinMode(9, OUTPUT); // Mengatur pin 9 sebagai output untuk LED
pinMode(10, OUTPUT); // Mengatur pin 10 sebagai output untuk LED
pinMode(11, OUTPUT); // Mengatur pin 11 sebagai output untuk LED
}
void loop() {
/* Mengirimkan sinyal ultrasonik */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Mengukur durasi sinyal pantul
// Menghitung jarak berdasarkan durasi
distance = duration / 58.2;
/* Jika jarak di luar jangkauan yang ditentukan,
kirim keterangan "Di Luar jangkauan" */
if (distance >= maximumRange || distance <= minimumRange) {
Serial.println("Di Luar jangkauan");
} else {
/* Kirim hasil pembacaan jarak melalui serial monitor */
Serial.print("Jarak : ");
Serial.print(distance);
Serial.println("cm ");
delay(100);
}
// Mengatur LED berdasarkan jarak yang diukur
if (distance <= 100) {
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
}
if (distance > 100 && distance < 200) {
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
}
if (distance >= 200) {
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
}
}