#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Задаем пин для данных от датчиков
#define ONE_WIRE_BUS 2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Определяем адреса датчиков на шине 1-Wire
// (введите здесь адреса ваших датчиков)
DeviceAddress sensor1 = {0x28, 0x16, 0x05, 0xE3, 0xF1, 0xA0};
DeviceAddress sensor2 = {0xC5, 0xB9, 0xD0, 0xC7, 0x68, 0x3B};
DeviceAddress sensor3 = {0xD5, 0xEE, 0xFF, 0xBB, 0xCB, 0x43};
// Создаем объект для работы с шиной 1-Wire
OneWire oneWire(ONE_WIRE_BUS);
// Инициализируем библиотеку для работы с DS18B20
DallasTemperature sensors(&oneWire);
void setup() {
// Инициализация LCD дисплея
Wire.begin();
Serial.begin(9600);
Serial.println("DS18B20 Temperature Sensor Test");
lcd.init();
lcd.backlight();
sensors.begin();
uint32_t total_devices = sensors.getDeviceCount();
Serial.print("Locating devices...");
Serial.print("Found ");
Serial.print(total_devices, DEC);
Serial.println(" devices.");
sensors.setResolution(sensor1, 10); // Устанавливаем разрешение датчика
sensors.setResolution(sensor2, 10);
sensors.setResolution(sensor3, 10);
}
void loop() {
float temp1 = 0;
float temp2 = 0;
float temp3 = 0;
sensors.requestTemperatures();
temp1 = sensors.getTempCByIndex(0); // Считываем температуру с первого датчика
temp2 = sensors.getTempCByIndex(1); // Считываем температуру со второго датчика
temp3 = sensors.getTempCByIndex(2); // Считываем температуру с третьего датчика
float averageTemp = (temp1 + temp2 + temp3) / 3.0; // Вычисляем среднее значение
// Вывод на LCD дисплей
lcd.clear();
lcd.print("Temp: ");
lcd.setCursor(0, 1);
lcd.print(averageTemp);
Serial.print("Temp: ");
// Serial.println(averageTemp);
Serial.print(temp1);
Serial.print(" ");
Serial.print(temp2);
Serial.print(" ");
Serial.println(temp3);
delay(1000); // Задержка для наглядности
}