#include <NewPing.h> // library sensor ultrasonik
#include <LiquidCrystal_I2C.h> // library lcd I2C
// definisi pin sensor cahaya
#define LDRanalog 14
#define LDRdigital 27
const float GAMMA = 0.7;
const float RL10 = 50;
// definisi pin ultrasonik
#define TRIGGER_PIN_1 23 // Pin Triger
#define ECHO_PIN_1 19 // Pin Echo untuk sensor pertama
#define TRIGGER_PIN_2 5 // Pin Triger
#define ECHO_PIN_2 18 // Pin Echo untuk sensor kedua
#define MAX_DISTANCE 400 // Maksimum jarak yang akan diukur (dalam cm)
NewPing gelas(TRIGGER_PIN_1, ECHO_PIN_1, MAX_DISTANCE); // membuat objek sensor ultrasonik pertama
NewPing air(TRIGGER_PIN_2, ECHO_PIN_2, MAX_DISTANCE); // membuat objek sensor ultrasonik kedua
// definisi lcd I2C
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
void setup() {
Serial.begin(115200); // Mulai komunikasi serial dengan kecepatan 115200 baud
LCD.init(); // lcd I2C
}
void loop() {
// sensor cahaya
int nilaiDigital = digitalRead(LDRdigital);
int nilaiADC = analogRead(LDRanalog);
//LDR, menghitungR V , LUX (hanya jika menggunakan A0****
float voltage = nilaiADC * 5/4095.0;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
// melakukan pengukuran jarak
float jarakGelas = gelas.ping();
float jarakAir = air.ping();
// convert menjadi cm
float jarakCmGelas = jarakGelas * 0.034 / 2;
float jarakCmAir = jarakAir * 0.034 / 2;
//menampilkan hasil lcd
if (nilaiADC >= 2000){
LCD.noBacklight();
LCD.setCursor(0, 0);
LCD.print("Gelas : ");
LCD.print(jarakCmGelas);
LCD.print(" cm");
LCD.setCursor(0, 1);
LCD.print("Air : ");
LCD.print(jarakCmAir);
LCD.print(" cm");
} else{
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Gelas : ");
LCD.print(jarakCmGelas);
LCD.print(" cm");
LCD.setCursor(0, 1);
LCD.print("Air : ");
LCD.print(jarakCmAir);
LCD.print(" cm");
}
Serial.print("Nilai Digital = ");
Serial.println(nilaiDigital);
Serial.print("Nilai ADC = ");
Serial.println(nilaiADC);
Serial.print("Lux = ");
Serial.println(lux);
Serial.print("Tegangan = ");
Serial.println(voltage);
Serial.print("Jarak sensor gelas: ");
Serial.print( jarakCmGelas); // Tampilkan jarak yang diukur oleh sensor pertama
Serial.println(" cm");
Serial.print("Jarak sensor air: ");
Serial.print( jarakCmAir); // Tampilkan jarak yang diukur oleh sensor kedua
Serial.println(" cm");
delay(10); // Tunggu sebentar sebelum melakukan pengukuran berikutnya
}