#define pintriger 5 // mendefinisikan pintriger 5 sebagai sensor Ultrasonic
#define pinecho 18 // mendefinisikan pinecho 18 sebagai sensor Ultrasonic
#define lcdPin 21 // mendefinisikan pin 21 sebagai LCD
#define inputPin 14 // mendefinisikan pin 14 sebagai keluaran
#include <LiquidCrystal_I2C.h> // menambahkan library LCD 16x2 4 pin
LiquidCrystal_I2C lcd(0x27,16,2); // mendefinisikan kolom dan baris LCD yang digunakan
int pirState = LOW; // we start, assuming no motion detected
int val = 0; // variable for reading the pin status
/* Durasi variabel untuk menyiapkan nilai durasi dan jarak */
long durasi; // deklarasi variabel tipe float dengan nama dutrasi dan berisi data 0 sebagai waktu (tidak dipakai)
float cm, inch; // deklarasi variabel tipe float dengan nama cm, inch berisi data 0 sebagai satuan jarak
void setup() {
Serial.begin(9600);
pinMode(lcdPin, OUTPUT); // mendeklarasi LCD sebagai Output
pinMode(inputPin, INPUT); // mendeklarasi sensor sebagai Input
pinMode (pintriger, OUTPUT); // mendeklarasi pintriger sebagai Output
pinMode (pinecho, INPUT); // mendeklarasi pinecho sebagai Input
Serial.println(("Nama : Inayah Wulandari")); // menampilkan tulisan "Nama : Inayah Wulandari" pada serial
Serial.println(("Kelas : 5CA")); // menampilkan tulisan "Kelas : 5CA" pada serial
Serial.println(("NPM : 062030701614")); // menampilkan tulisan "NPM : 06203070614" pada serial
lcd.init();
// initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setBacklight(HIGH);
// pada bagian di atas ini merupakan inisiasi untuk LCD sebagai mengatur backlight dari LCD
}
void loop(){
val = digitalRead(inputPin); // membaca nilai Input
if (val == HIGH) { // memeriksa input tinggi
digitalWrite(lcdPin, HIGH); // menyalakn LCD
digitalWrite (pintriger, 0);
delayMicroseconds(2);
digitalWrite (pintriger, 1);
delayMicroseconds(10);
digitalWrite (pintriger, 0);
delayMicroseconds(2);
durasi = pulseIn(pinecho, HIGH); // simpan niiai durasi waktu pada "variabel durasi"
cm = (durasi * 0.0343)/2; // ubah durasi menjadi jarak
inch = cm / 2.54;
Serial.print(cm);
Serial.print(" Cm");
Serial.print("\t");
Serial.print(inch);
Serial.println(" Inch");
delay(300); // waktu tunggu 3 detik
if (pirState == LOW) { // kondisi jika jarak berada diantara kurang dari 10 cm maka akan menampilkan tulisan "Target Terdeteksi"
Serial.println();
lcd.print("Target Terdeteksi");
// We only want to print on the output change, not state
pirState = HIGH;
}
} else { // kondisi jika jarak berada diantara lebih dari 10 cm maka akan menampilkan tulisan "Tidak Terdeteksi"
digitalWrite(lcdPin, LOW);
delay(300);
if (pirState == HIGH){
Serial.println();
lcd.print("Tidak terdeteksi");
pirState = LOW;
}
}
Serial.print("x"); // kondisi sensor jika tidak terbaca
}