#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD (alamat 0x27, 16 kolom, 2 baris)
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int pinLM35 = A0;
float offset = 0.0; // Kalibrasi
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
// Splash screen
lcd.setCursor(0, 0);
lcd.print("Sistem Monitoring");
lcd.setCursor(0, 1);
lcd.print("Sensor LM35");
delay(2000);
lcd.clear();
}
void loop() {
// Averaging untuk stabilitas
int total = 0;
int samples = 10;
for (int i = 0; i < samples; i++) {
total += analogRead(pinLM35);
delay(10);
}
float adcValue = total / (float)samples;
// Konversi ke suhu
float celsius = (adcValue * 500.0) / 1023.0 + offset;
// Serial Monitor
Serial.print("ADC : ");
Serial.print(adcValue, 2);
Serial.print(" | Suhu: ");
Serial.print(celsius, 2);
Serial.println(" C");
// LCD baris 1
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(celsius, 0);
lcd.print((char)223);
lcd.print("C ");
// LCD baris 2 (logika kondisi)
lcd.setCursor(0, 1);
if (celsius < 25.0) {
lcd.print("Status: DINGIN ");
} else if (celsius < 35.0) {
lcd.print("Status: NORMAL ");
} else {
lcd.print("Status: PANAS! ");
}
delay(500);
}