#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD
// Inisialisasi LCD dengan alamat I2C 0x27 dan dimensi 20x4
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int led1 = 5; // LED Merah
const int led2 = 6; // LED Kuning
const int led3 = 7; // LED Hijau
const int trigPin = 3; // Pin terhubung ke pin Trigger dari sensor ultrasonik
const int echoPin = 4; // Pin terhubung ke pin Echo dari sensor ultrasonik
void setup() {
Serial.begin(9600); // Inisialisasi komunikasi serial dengan kecepatan 9600 baud
pinMode(led1, OUTPUT); // Mengatur led1 sebagai OUTPUT
pinMode(led2, OUTPUT); // Mengatur led2 sebagai OUTPUT
pinMode(led3, OUTPUT); // Mengatur led3 sebagai OUTPUT
pinMode(trigPin, OUTPUT); // Mengatur trigPin sebagai OUTPUT
pinMode(echoPin, INPUT); // Mengatur echoPin sebagai INPUT
lcd.begin(20, 4); // Inisialisasi LCD dengan dimensi 20x4
lcd.backlight(); // Menghidupkan lampu latar LCD
lcd.setCursor(0, 0); // Mengatur kursor ke baris pertama, kolom pertama
}
void loop() {
// Mengirimkan sinyal trigger untuk memulai pengukuran jarak
digitalWrite(trigPin, LOW); // Pastikan pin trigger LOW
delayMicroseconds(2); // Tunggu selama 2 mikrodetik
digitalWrite(trigPin, HIGH); // Kirim pulsa 10 mikrodetik ke pin trigger
delayMicroseconds(10); // Tunggu selama 10 mikrodetik
digitalWrite(trigPin, LOW); // Kembali set pin trigger ke LOW
// Mengukur durasi pulsa pada pin echo
long duration = pulseIn(echoPin, HIGH);
// Menghitung jarak dalam cm (kecepatan suara adalah 343 m/s atau 0.034 cm/us)
float distance = duration * 0.034 / 2;
// Logika untuk menyalakan LED berdasarkan jarak yang terukur
if (distance > 0 && distance <= 150) {
digitalWrite(led1, HIGH); // LED Merah menyala
digitalWrite(led2, LOW); // LED Kuning mati
digitalWrite(led3, LOW); // LED Hijau mati
} else if (distance > 151 && distance <= 300) {
digitalWrite(led1, LOW); // LED Merah mati
digitalWrite(led2, HIGH); // LED Kuning menyala
digitalWrite(led3, LOW); // LED Hijau mati
} else if (distance > 301 && distance <= 400) {
digitalWrite(led1, LOW); // LED Merah mati
digitalWrite(led2, LOW); // LED Kuning mati
digitalWrite(led3, HIGH); // LED Hijau menyala
} else {
digitalWrite(led1, LOW); // LED Merah mati
digitalWrite(led2, LOW); // LED Kuning mati
digitalWrite(led3, LOW); // LED Hijau mati
}
// Menampilkan ketinggian air pada LCD
lcd.clear(); // Membersihkan layar LCD
lcd.setCursor(0, 0); // Mengatur kursor ke baris pertama, kolom pertama
lcd.print("Ketinggian Air:"); // Mencetak pesan statis "Ketinggian Air:"
lcd.setCursor(0, 1); // Mengatur kursor ke baris kedua, kolom pertama
lcd.print(distance); // Mencetak nilai ketinggian air
lcd.print(" cm"); // Mencetak satuan "cm"
delay(500); // Tunggu selama 500 milidetik sebelum pengukuran berikutnya
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND