//dht inisialisasi
#include <DHT.h>
DHT dht(4, DHT22);
float suhu ;
float kelembaban;
//ldr inisialisasi
#define ldrPin 2
const float gama = 0.7;
const float rl10 = 50;
//lcd
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
//btn
int btn1 = 27;
int btn2 = 26;
int btn3 = 25;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("test");
Serial.begin(115200);
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
pinMode(btn3, INPUT_PULLUP);
}
void loop() {
//dht value
suhu = dht.readTemperature();
kelembaban = dht.readHumidity();
//celsius
suhu != true ? "c" : "f";
String dataCelsius = "suhu \t :" + String(suhu) + "c";
//kelembaban
kelembaban != false ? "c" : "f";
String dataKelembaban = "lembab \t:" + String(kelembaban) + "%";
//ldr value
int nilaiLDR = analogRead(ldrPin);
nilaiLDR = map(nilaiLDR, 4095, 0, 1015, 0);
float voltase = nilaiLDR / 1024.*5;
float resistansi = 2000 * voltase / (1-voltase/5);
float kecerahan = pow(rl10*1e3*pow(10,gama)/resistansi,(1/gama));
//menu awal
MenuAwal();
//animasi loading
LoadingAnimasi();
//tampilan sensor ke lcd
tampilanLcd (kecerahan, dataKelembaban, dataCelsius);
}
void MenuAwal(){
lcd.setCursor(0,0);
lcd.print("lumens");
lcd.setCursor(0,1);
lcd.print("suhu");
lcd.setCursor(10,0);
lcd.print("lembab");
delay(2000);
}
void tampilanLcd(float sinar, String Lembab, String Suhu) {
lcd.setCursor(0,0);
lcd.print("lumen \t:" + String (sinar));
lcd.setCursor(0,1);
lcd.print(Lembab);
delay(1000);
lcd.clear();
delay(100);
lcd.setCursor(0,0);
lcd.print(Suhu);
delay(1000);
lcd.clear();
}
void LoadingAnimasi() {
int MinTik = 0;
const int MaxTik = 5; // Jumlah titik maksimum dalam animasi
while (MinTik <= MaxTik) {
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Tungguin");
for (int i = 0; i < MinTik; i++) {
lcd.print(".");
}
delay(500); // Delay untuk kecepatan animasi
MinTik++;
}
lcd.clear();}