#include <Wire.h>
#include <BH1750.h>
#include <LiquidCrystal_I2C.h>
// Deklarasi objek untuk sensor BH1750 dan LCD I2C
BH1750 lightMeter;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C bisa berbeda, umumnya 0x27 atau 0x3F
void setup() {
Serial.begin(9600);
Wire.begin();
lightMeter.begin();
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan lampu latar LCD
const char* message = "Lux Meter";
lcd.setCursor(0, 0); // Atur posisi kursor di baris pertama
// Menampilkan satu per satu huruf dari "BH1750 Test"
for (int i = 0; i < strlen(message); i++) {
lcd.print(message[i]);
delay(5); // Penundaan 5 ms antara setiap karakter
}
delay(1000); // Tunggu sebentar untuk memastikan inisialisasi selesai
}
void loop() {
const char* mes = "Light intensity";
const char* luxv = " Lux";
lcd.setCursor(0, 0); //
float lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
// Kirim data lux melalui serial
Serial.println(lux);
// Mengonversi nilai lux ke string
char luxStr[10];
dtostrf(lux, 6, 2, luxStr); // Mengonversi float ke string dengan 2 desimal
lcd.clear(); // Hapus tampilan LCD
lcd.setCursor(0, 0);
for (int i = 0; i < strlen(mes); i++) {
lcd.print(mes[i]);
delay(5); // Penundaan 5 ms antara setiap karakter
}
lcd.setCursor(0, 1); // Atur posisi kursor di baris kedua
// Menampilkan satu per satu huruf dari nilai lux
for (int i = 0; i < strlen(luxStr); i++) {
lcd.print(luxStr[i]);
delay(5); // Penundaan 5 ms antara setiap karakter
}
for (int i = 0; i < strlen(luxv); i++) {
lcd.print(luxv[i]);
delay(5); // Penundaan 5 ms antara setiap karakter
}
delay(500); // Tunggu 500 ms sebelum pembacaan berikutnya
}