// Библиотека по I2C дисплеям
#include <LiquidCrystal_I2C.h>
// определения дисплеев
#define I2C_ADDR_1    0x0D
#define I2C_ADDR_2    0x0E
#define LCD_COLUMNS 16
#define LCD_LINES   2
// два дисплея - один OxOD, второй - 0x0E
LiquidCrystal_I2C lcd1(I2C_ADDR_1, LCD_COLUMNS, LCD_LINES);
LiquidCrystal_I2C lcd2(I2C_ADDR_2, LCD_COLUMNS, LCD_LINES);

void setup() {
  // put your setup code here, to run once:
  // Инициализация дисплеев
  lcd1.init();
  lcd1.backlight();
  lcd2.init();
  lcd2.backlight();
  // Поздороваемся "с двух рук" :-)
  lcd1.setCursor(0,0);
  lcd1.print("Hello,world!");
  delay(1500);
  lcd1.clear();  
  lcd2.setCursor(0,0);
  lcd2.print("Hello,world too!");
  delay(1500);
  lcd2.clear();
  // Инициализация портов датчика температуры и кнопки режима
  pinMode(A0, INPUT);
  pinMode(0, INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  // на одном дисплее - режим, на другом температура с датчика
  lcd1.setCursor(0,0);
  lcd1.print("Mode HVAC:");
  lcd2.setCursor(0,0);
  lcd2.print("Temp. ambient:");
  //Это из примера по датчику вырезано
  int analogValue = analogRead(A0);
  float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / 3950 + 1.0 / 298.15) - 273.15;
  bool Mode=digitalRead(0);
  lcd1.setCursor(0,1);
  lcd2.setCursor(0,1);
  // Выдача температуры, добавка пробелов - чтобы не оставались
  // артефакты при малых значениях
  lcd2.print(String(celsius)+"  ");
  // Проверка, нажата ли кнопка и не зима ли по-настоящему
  if ((!Mode)||(celsius < 4.0))
  {
    // Если верно - так и пишем: зима, иначе: лето
    lcd1.print("Winter");
  }
  else
  {
    lcd1.print("Summer");
  }
  // Задержка - все остальное, что должен делать ПЛК
  delay(100);




}