#include <OneWire.h>
#include <DallasTemperature.h>
// OneWire bus masing-masing sensor
OneWire oneWireA(7);
OneWire oneWireB(8);
OneWire oneWireC(9);
// DallasTemperature untuk tiap sensor
DallasTemperature sensorA(&oneWireA);
DallasTemperature sensorB(&oneWireB);
DallasTemperature sensorC(&oneWireC);
// LED Sensor A
const int LED_A_HIJAU = 2;
const int LED_A_KUNING = 3;
const int LED_A_MERAH = 4;
// LED Sensor B
const int LED_B_HIJAU = 5;
const int LED_B_KUNING = 6;
const int LED_B_MERAH = 10;
// LED Sensor C
const int LED_C_HIJAU = 11;
const int LED_C_KUNING = 12;
const int LED_C_MERAH = 13;
void setup() {
Serial.begin(9600); // Ganti ke 9600 untuk komunikasi ke ESP32
sensorA.begin();
sensorB.begin();
sensorC.begin();
int allLED[] = {
LED_A_HIJAU, LED_A_KUNING, LED_A_MERAH,
LED_B_HIJAU, LED_B_KUNING, LED_B_MERAH,
LED_C_HIJAU, LED_C_KUNING, LED_C_MERAH
};
for (int i = 0; i < 9; i++) {
pinMode(allLED[i], OUTPUT);
digitalWrite(allLED[i], LOW);
}
Serial.println("Sensor suhu DS18B20 siap...");
}
void kontrolLED(float suhu, int ledHijau, int ledKuning, int ledMerah) {
// Semua LED awalnya mati (HIGH aktif low)
digitalWrite(ledHijau, HIGH);
digitalWrite(ledKuning, HIGH);
digitalWrite(ledMerah, HIGH);
if (suhu < 20) {
digitalWrite(ledHijau, LOW);
} else if (suhu >= 20 && suhu < 75) {
digitalWrite(ledKuning, LOW);
} else if (suhu >= 75) {
digitalWrite(ledMerah, LOW);
}
}
void loop() {
sensorA.requestTemperatures();
sensorB.requestTemperatures();
sensorC.requestTemperatures();
float suhuA = sensorA.getTempCByIndex(0);
float suhuB = sensorB.getTempCByIndex(0);
float suhuC = sensorC.getTempCByIndex(0);
// Tampilkan ke Serial Monitor
Serial.print("Suhu A: "); Serial.print(suhuA);
Serial.print(" | Suhu B: "); Serial.print(suhuB);
Serial.print(" | Suhu C: "); Serial.println(suhuC);
// Kirim ke ESP32 (format CSV)
Serial.print(suhuA); Serial.print(",");
Serial.print(suhuB); Serial.print(",");
Serial.println(suhuC); // gunakan println untuk tanda akhir baris
// Kontrol LED
kontrolLED(suhuA, LED_A_HIJAU, LED_A_KUNING, LED_A_MERAH);
kontrolLED(suhuB, LED_B_HIJAU, LED_B_KUNING, LED_B_MERAH);
kontrolLED(suhuC, LED_C_HIJAU, LED_C_KUNING, LED_C_MERAH);
delay(2000);
}