//Nama : Hawa Mutiara Rahmah(17)
//Kelas : XII.3
//Mapel : Informattika
#include <LiquidCrystal.h> //Menambah library untuk LCD
const int trig = 10; //Trigger pin dengan pin 10
const int echo = 9; //echo pin sbg input dg pin 9
const int rgbr = 8;
const int rgbg = 7;
const int rgbb = 6;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pin-pin untuk LCD
long durasi; //Variabel durasi
int jarak; //variabel jarak untuk rumus
void setup() {
//Inisialisasi LCD 16×2
lcd.begin(16, 2);
//Inisialisasi trigger pin dan echo pin
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(rgbr, OUTPUT);
pinMode(rgbg, OUTPUT);
pinMode(rgbb, OUTPUT);
//Text awal LCD
lcd.setCursor(0,0);
lcd.print("Mengukur Jarak! ");
lcd.setCursor(0,1);
lcd.print("Hawa mutiara (17)");
delay(1500);
lcd.clear();
}
void loop() {
//Sensor mengirimkan sinyal ultrasonik
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
//Membaca durasi sinyal yang terpantul
durasi = pulseIn(echo, HIGH);
//Rumus untuk menghitung jarak dengan durasi
//dikalikan dengan kecepatan suara dibagi 2
//karena sinyal bergerak bolak-balik dari
//sensor ke objek lalu kembali lagi
jarak = durasi * 0.034 / 2;
//Untuk menampilkan hasil dari perhitungan jarak
lcd.setCursor(0, 0);
lcd.print("Jarak terdeteksi: ");
lcd.setCursor(0, 1);
lcd.print(jarak);
lcd.print(" cm ");
lcd.setCursor(11, 1);
lcd.print("-Hawa");
//function untuk menyalakan lampu RGB
//Jika jarak objek kurang dari 100 cm,
//maka lampu akan kedip berwarna hijau
if (jarak < 100) {
digitalWrite(rgbg, HIGH);
delay(300);
digitalWrite(rgbg, LOW);
delay(100);
digitalWrite(rgbb, LOW);
digitalWrite(rgbr, LOW);
//Jika jarak objek kurang dari 250 cm,
//maka lampu akan kedip berwarna biru
} else if (jarak < 250) {
digitalWrite(rgbg, LOW);
digitalWrite(rgbb, HIGH);
delay(300);
digitalWrite(rgbb, LOW);
delay(100);
digitalWrite(rgbr, LOW);
//Jika jarak objek lebih dari 250 cm,
//maka lampu akan kedip berwarna merah
} else {
digitalWrite(rgbg, LOW);
digitalWrite(rgbb, LOW);
digitalWrite(rgbr, HIGH);
delay(300);
digitalWrite(rgbr, LOW);
delay(100);
}
//setiap 1 detik jarak baru akan ditampilkan
delay(1000);
}