#ifdef CORE_DEBUG_LEVEL
#undef CORE_DEBUG_LEVEL
#endif
#ifdef LOG_LOCAL_LEVEL
#undef LOG_LOCAL_LEVEL
#endif
#define CORE_DEBUG_LEVEL 4
#define LOG_LOCAL_LEVEL CORE_DEBUG_LEVEL
#include <esp32-hal-log.h>
#define EB_DEB_TIME 60
#define EB_HOLD_TIME 500
#include "mDef.h"
#include "SwitchButton.h"
#include "Menu.h"
Relay relayFan (FAN_PIN, LED_PIN1);
Relay relayHeat (HEAT_PIN, LED_PIN2);
Relay relayCool (COOL_PIN, LED_PIN3);
SwitchButton btnSwitch(SWITCH_PIN, SWITCH_TYPE, &relayFan, INPUT_PULLUP, LOW);
SwitchButton btn2 (BTN2_PIN, BTN_TYPE, &relayHeat, INPUT_PULLUP, LOW);
SwitchButton btn3 (BTN3_PIN, BTN_TYPE, &relayCool, INPUT_PULLUP, LOW);
OneWire one_wire(ONE_WIRE_BUS);
DallasTemperature tempSensor(&one_wire);
TempSensor sens(&tempSensor);
Menu menu(&lcd_main, &encBtn, &sens);
Screen screen1;// = {&relayFan, nullptr, nullptr, 20};
Screen screen2;// = {&relayHeat, nullptr, nullptr, 10};
Screen screen3;// = {&relayCool, nullptr, nullptr, 20};
void IRAM_ATTR isrBtnSwRaw()
{
btnSwitch.pressISR();
btnSwitch.tickRaw();
}
void IRAM_ATTR isrBtnHeatRaw()
{
btn2.pressISR();
btn2.tickRaw();
}
void IRAM_ATTR isrBtnCoolRaw()
{
btn3.pressISR();
btn3.tickRaw();
}
void manualCtrlSetup()
{
relayFan.setName("Fan");
Relay::setMainRelay(&relayFan);
relayHeat.setName("Heat");
relayCool.setName("Cool");
btnSwitch.attachISR(isrBtnSwRaw, CHANGE);
btn2.attachISR(isrBtnHeatRaw, RISING);
btn3.attachISR(isrBtnCoolRaw, RISING);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
}
void setup() {
// esp_log_level_set("*", ESP_LOG_DEBUG);
// ESP_LOGD("EXAMPLE", "This doesn't show");
// ESP_LOGI(TAG, "Read: %s", message);
// log_v("Verbose");
// log_d("Debug");
// log_i("Info");
// log_w("Warning");
// log_e("Error");
#if defined(DEBUG)
Serial.begin(DEBUG_SERIAL_SPD);
delay(1000);
Serial.println();
Serial.println("Started");
#endif
menu.begin();
manualCtrlSetup();
#if defined(DEBUG)
Serial.print("Parasite power is: ");
Serial.println(tempSensor.isParasitePowerMode() ? "ON" : "OFF");
#endif
screen1.relay_p = &relayFan;
screen1.next = &screen2;
screen1.head = &screen1;
screen1.tempSet = 25;
screen2.relay_p = &relayHeat;
screen2.next = &screen3;
screen2.head = &screen1;
screen2.tempSet = 25;
screen3.relay_p = &relayCool;
screen3.next = nullptr;
screen3.head = &screen1;
screen3.tempSet = 15;
menu.setScreen(&screen1);
// if (btnSwitch.press()) Serial.println("Кнопка нажата при старте");
}
void loop()
{
btnSwitch.tick();
if(btnSwitch.hold())
{
menu.setScreen(&screen1);
}
if (btnSwitch.holding())
{
relayFan.tick();
//btnSwitch.skipEvents();
btn2.tick();
btn3.tick();
if (btn2.release())
{
relayHeat.tick();
menu.setScreen(&screen2);
relayCool.turnOff();
}
if (btn3.release())
{
relayCool.tick();
menu.setScreen(&screen3);
relayHeat.turnOff();
}
}else if(btnSwitch.release()){
relayHeat.turnOff();
menu.setScreen(&screen1);
}else{
relayHeat.turnOff();
relayCool.turnOff();
relayFan.turnOff();
}
menu.tick();
}