#include <OneWire.h>
#include <DallasTemperature.h>
// ===== PIN =====
#define ONE_WIRE_BUS 2
#define BTN_START 3
#define LED_HIJAU 4
#define LED_KUNING 5
#define LED_MERAH 6
#define LED_KOMPOR 7
#define BUZZER 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// ===== STATUS =====
bool komporNyala = false;
void setup() {
pinMode(BTN_START, INPUT_PULLUP);
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KOMPOR, OUTPUT);
pinMode(BUZZER, OUTPUT);
sensors.begin();
Serial.begin(9600);
}
void loop() {
// ===== BACA SUHU =====
sensors.requestTemperatures();
float suhu = sensors.getTempCByIndex(0);
// ===== TOMBOL START =====
if (digitalRead(BTN_START) == LOW) {
komporNyala = true;
}
// ===== AUTO STOP =====
if (suhu >= 100) {
komporNyala = false;
}
// ===== OUTPUT KOMPOR =====
digitalWrite(LED_KOMPOR, komporNyala);
// ===== RESET LED =====
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
digitalWrite(BUZZER, LOW);
// ===== INDIKATOR SUHU =====
if (suhu < 90) {
digitalWrite(LED_HIJAU, HIGH);
}
else if (suhu < 100) {
digitalWrite(LED_KUNING, HIGH);
}
else {
digitalWrite(LED_MERAH, HIGH);
digitalWrite(BUZZER, HIGH);
}
// ===== DEBUG =====
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print(" | Tombol: ");
Serial.print(digitalRead(BTN_START));
Serial.print(" | Kompor: ");
Serial.println(komporNyala ? "ON" : "OFF");
delay(200);
}