#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <microDS18B20.h>
#include <TimerMs.h>
#include <EncButton.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x38, 20, 4); //SCL - A5; SDA - A4
Button BtPwrStg(7); //Кнопка "Ступень мощности"
Button BtTempUp(8); //Кнопка "Температура вверх"
Button BtTempDw(9); //Кнопка "Температура вниз"
TimerMs StartTmr(1000, 1, 1); //Задержка включеня ТЭН (период, мс), (0 не запущен / 1 запущен), (режим: 0 период / 1 таймер)
TimerMs PSTmr(600000, 1, 1); //Таймер переключения ступеней (60000 / 1000 = 600 сек = 10 мин)
TimerMs PSValTick(2000, 1, 1); //Таймер задержки изменения ступени мощности
/************************************************ПЕРЕМЕННЫЕ************************************************/
uint8_t PwrStg = 1; //Хранит значение ступени
uint8_t TmpSet = 50; //Начальная температура
uint8_t PwrStgVal = 2; //Переменная для задержки изменения ступени
int8_t RealTmp; //Фактическая температура
int8_t SPLS = 0; //Последнее положение функции StartPower (В случае первого запуска)
int8_t Crash; //Код аварии
int a;
int b;
int c = 1;
int16_t i;
int8_t sp;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
BtPwrStg.tick();
BtTempUp.tick();
BtTempDw.tick(); if (BtPwrStg.press()) {
PSValTick.start();
PwrStgVal += 2;
}
if (PwrStgVal > 6) PwrStgVal = 2;
if (PSValTick.tick()) {
PSValTick.stop();
PwrStg = PwrStgVal/2;
}
if (BtTempUp.press()) TmpSet++;
if (BtTempUp.step()) TmpSet++;
if (TmpSet > 75) TmpSet = 75;
if (BtTempDw.press()) TmpSet--;
if (BtTempDw.step()) TmpSet--;
if (TmpSet < 25) TmpSet = 25;
lcd.setCursor(1, 0);
lcd.print("Moshnost : ");
lcd.print(PwrStgVal);
lcd.print(" kBt");
lcd.setCursor(1, 1);
lcd.print("T-pa Ust. : ");
lcd.print(TmpSet);
lcd.print(" oC");
lcd.setCursor(1, 2);
lcd.print("T-pa Fact.: ");
lcd.print("64");
lcd.print(" oC");
lcd.setCursor(1, 3);
lcd.print("Nagrevat. : 1 2 3 ");
lcd.setCursor(1, 3);
lcd.print("Termostat otklucen");
}