#include <OneWire.h>
#define DS_PIN D2
#define HEAT_PIN D9 // <-- змінили, щоб не було конфлікту
OneWire ow(DS_PIN);
float Tset = 60.0;
float dT = 1.0;
bool heatOn = false;
bool readDS18B20(float &tC) {
byte d[9];
if (!ow.reset()) return false;
ow.skip();
ow.write(0x44, 1);
delay(750);
if (!ow.reset()) return false;
ow.skip();
ow.write(0xBE);
for (int i = 0; i < 9; i++) d[i] = ow.read();
if (OneWire::crc8(d, 8) != d[8]) return false;
int16_t raw = (d[1] << 8) | d[0];
tC = raw / 16.0f;
return (tC > -55 && tC < 125);
}
void setup() {
pinMode(HEAT_PIN, OUTPUT);
digitalWrite(HEAT_PIN, HIGH); // короткий тест: LED має загорітись на 1 сек
Serial.begin(115200);
delay(1000);
digitalWrite(HEAT_PIN, LOW);
Serial.println("BOOT OK");
}
void loop() {
float T;
bool ok = readDS18B20(T);
if (!ok) {
Serial.println("DS18B20 READ FAIL");
delay(500);
return;
}
if (!heatOn && T < (Tset - dT)) heatOn = true;
if ( heatOn && T > (Tset + dT)) heatOn = false;
digitalWrite(HEAT_PIN, heatOn ? HIGH : LOW);
Serial.print("T=");
Serial.print(T, 1);
Serial.print(" Heat=");
Serial.println(heatOn ? "ON" : "OFF");
delay(500);
}