//REDI ANWAS MAHENDRA (1083232128)
//Pengukur Jarak menggunakan Sensor Ultrasonik
//KELAS ALIH JENJANG D4 (KELAS ACEH)
#include <LiquidCrystal_I2C.h> //Library LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);//Alamat I2C yang di gunakan
int trig = 12;//Variabel dengan tipe data int bernama trig dengan nilai 12
int echo = 11;//Variabel dengan tipe data int bernama echo dengan nilai 11
long jarak, durasi;//Variabel dengan nama jarak dan durasi dengan tipe data long
int buzzer = 2;//Variabel dengan tipe data int bernama buzzer dengan nilai 2
int led = 3;//Variabel dengan tipe data int bernama led dengan nilai 3
void setup() {//Program yang dibaca satu kali perukangan
pinMode(trig, OUTPUT);//Menjadikan pin trig (12) sebagai output
pinMode(echo, INPUT);//Menjadikan pin echo (11) sebagai input
Serial.begin(9600);//Memulai komunikasi serial baudrate 9600
pinMode(buzzer, OUTPUT);//Menjadikan pin buzzer (2) sebagai output
pinMode(led, OUTPUT);//Menjadikan pin led (3) sebagai output
lcd.init();//Inisialisasi LCD
lcd.clear();//Menghapus tampilan LCD
lcd.backlight();//Mengaktifkan backlight pada LCD
lcd.setCursor(0, 0);//Mengatur posisi tampilan LCD pada bari 0 dan kolom 0
lcd.print(" WELCOME REDI ");//Menampilkan karakter " WELCOME REDI " pada LCD
lcd.setCursor(0, 1);//Mengatur posisi tampilan LCD pada bari 0 dan kolom 1
lcd.print(" MENGUKUR JARAK ");//Menampilkan karakter " MENGUKUR JARAK "
delay(2000);//Menunda selama dua detik
lcd.clear();//Menghapus tampilan LCD
}
void loop() {//Program yang dibaca secara berulang
digitalWrite(trig, HIGH);//Mengeluarkan output high pada pin trig (12)
delayMicroseconds(5);//Menunda selama 5 micro second
digitalWrite(trig, LOW);//Mengeluarkan output low pada pin trig (12)
delayMicroseconds(5);//Menunda selama 5 micro second
durasi = pulseIn(echo, HIGH);//Mengitung waktu ketika pin echo mendapatkan input high
//dan menyimpannya pada variabel durasi
jarak = durasi / 58.35;//Nilai jarak = nilai durasi/58.35
Serial.print(jarak);//Menampilkan nila jarak pada serial monitor
Serial.println("cm");//menampilkan karakter "cm" disertai dengan enter
lcd.setCursor(0, 0);//Mengatur posisi tampilan LCD pada bari 0 dan kolom 0
lcd.print("Jarak = cm");//Menampilkan karakter "Jarak = cm"
lcd.setCursor(8, 0);//Mengatur posisi pada baris 8 dan kolom 0
lcd.print(jarak);//Menampilkan nilai jarak
if (jarak >= 100) {//JIka jarak lebih dari atau sama dengan 100 maka
tone(buzzer, 1000, 5000);//Mengeluarkan output pin buzzer
//dengan frekuensi 1000Hz dalam durasi 5 detik
}
else if (jarak < 100) {//Selain itu jika jarak sensor kurang dari 100
tone(buzzer, 0, 5000);//Mengeluarkan output pin buzzer
//dengan frekuensi 0Hz dalam durasi 5 detik
}
delay(100);//Menunda 100ms
if (jarak >= 100) {//Jika jarak lebih dari atau sama dengan 100
digitalWrite(led, HIGH);//Mengeluarkan output high pada pin LED (3)
}
else if (jarak <= 10) {//Selain itu jika jarak kurang dari atau sama dengan 10
digitalWrite(led, LOW);//Mengeluarkan output low pada pin LED (3)
}
}