// один датчик лучше читать без адресации, это сильно экономит память
#include <microDS18B20.h>
#include <LiquidCrystal_I2C.h> //подключаем библиотеку экрана
LiquidCrystal_I2C lcd(0x27, 16, 2); // задаём параметры экрана
MicroDS18B20<2> sensor;
uint32_t timer1;
float alarm = 23;
void setup() {
lcd.init();//инициализируем дисплей
lcd.backlight();//включаем подсветку дисплея
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
void loop() {
// конструкция программного таймера на 800 мс
if (millis() - timer1 >= 800) {
digitalWrite(4, HIGH);
timer1 = millis();
float temper = sensor.getTemp();
// читаем прошлое значение
if (sensor.readTemp())
{
Serial.println(temper);
lcd.print(" ");
lcd.setCursor(0, 0); //устанавливаем курсор на первую строчку и первый символ (счёт начинается с 0, первая цифра - это символ, вторая - строка)
lcd.print(temper); //выводим цифры с температурой
if(temper >= alarm)
{
lcd.setCursor(0, 1);
lcd.print("ALARM!!!");
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
else
{
lcd.setCursor(0, 1);
lcd.print(" ");
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
}
}
else Serial.println("error");
// запрашиваем новое измерение
sensor.requestTemp();
}
}