#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(7, 8, 12, 11, 10, 9);
// DS18B20
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Пины
#define BTN_MINUS 2
#define BTN_PLUS 3
#define RELAY 4
int setTemp = 25; // температура по умолчанию
float currentTemp = 0;
void setup() {
lcd.begin(16, 2);
sensors.begin();
pinMode(BTN_MINUS, INPUT_PULLUP);
pinMode(BTN_PLUS, INPUT_PULLUP);
pinMode(RELAY, OUTPUT);
lcd.print("Temp Control");
delay(1000);
lcd.clear();
}
void loop() {
// Читаем температуру
sensors.requestTemperatures();
currentTemp = sensors.getTempCByIndex(0);
// Проверка кнопок
if (digitalRead(BTN_PLUS) == LOW) {
setTemp++;
delay(200); // антидребезг
}
if (digitalRead(BTN_MINUS) == LOW) {
setTemp--;
delay(200);
}
// Управление реле
if (currentTemp < setTemp) {
digitalWrite(RELAY, LOW); // реле ВЫКЛ
} else {
digitalWrite(RELAY, HIGH); // реле ВКЛ
}
// Вывод на LCD
lcd.setCursor(0, 0);
lcd.print("Now: ");
lcd.print(currentTemp);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("Set: ");
lcd.print(setTemp);
lcd.print((char)223);
lcd.print("C ");
delay(500);
}