#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h> // library untuk mengakses LCD
#include <Wire.h>
// Inisialisasi sensor suhu
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Inisialisasi pin LED
const int redLed = 3;
const int greenLed = 4;
const int blueLed = 5;
const int yellowLed = 6;
// Inisialisasi objek untuk mengakses LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // Pin RS, E, D4, D5, D6, D7
void setup() {
// Konfigurasi pin LED sebagai output
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
// Mulai koneksi dengan sensor suhu
sensors.begin();
// Nyalakan LED Kuning sebagai indikator data masuk
digitalWrite(yellowLed, HIGH);
delay(1000);
digitalWrite(yellowLed, LOW);
// Inisialisasi LCD
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop() {
// Baca suhu dari sensor
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
// Aktifkan LED sesuai dengan suhu yang terbaca
if (tempC > 29) {
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);
} else if (tempC >= 22 && tempC <= 28) {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
digitalWrite(blueLed, LOW);
} else if (tempC < 21) {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, HIGH);
}
// Tampilkan suhu yang terbaca pada serial monitor
Serial.print("Suhu: ");
Serial.print(tempC);
Serial.println(" C");
// Tampilkan suhu pada LCD
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(tempC);
lcd.print(" C");
// Tunggu selama 1 detik sebelum membaca suhu kembali
delay(1000);
}