#include // библиотека i2c #include // библиотека для ds18b20 OneWire ds (5); // пин ds18b20 (SD3 НА ESP12) byte data[12]; byte addr1[8] = {0x28, 0xFF, 0xF, 0xE6, 0x80, 0x16, 0x4, 0x22}; // адресс центрального датчика (индивидуально для каждого датчика) byte addr2[8] = {0x28, 0xFF, 0x6C, 0xE1, 0x80, 0x16, 0x5, 0xA5}; // адресс датчика периметра (индивидуально для каждого датчика) byte addr3[8] = {0x28, 0xFF, 0x9, 0xDC, 0x80, 0x16, 0x5, 0xB3}; // адресс датчика в дуевой (индивидуально для каждого датчика) byte addr4[8] = {0x28, 0xFF, 0x4C, 0xC5, 0x80, 0x16, 0x3, 0xFE}; // адресс датчика в туалете (индивидуально для каждого датчика) unsigned int raw; // *** переменные для чтения температуры сдатчиков float t_centr; float t_perimetr; float t_dushevaya; float t_tualet; void setup() { Serial.begin(115200); // запускаем сериал } void loop() { } // функция считывания температуры ds18b20 //================================================================================== float DS18B20(byte *adres) { ds.reset(); ds.select(adres); ds.write(0x44, 1); // start conversion, with parasite power on at the end ds.reset(); ds.select(adres); ds.write(0xBE); // Read Scratchpad for (byte i = 0; i < 9; i++) // можно увеличить точность измерения до 0.0625 *С (от 9 до 12 бит) { // we need 9 bytes data[i] = ds.read (); } raw = (data[1] << 8) | data[0];//=======Пересчитываем в температуру float celsius = (float)raw / 16.0; return celsius; } //================================================================================== void sensors () { // функция считывания датчиков t_centr = DS18B20(addr1); // считываем температуру t_perimetr = DS18B20(addr2); // считываем температуру t_dushevaya = DS18B20(addr3); // считываем температуру t_tualet = DS18B20(addr4); // считываем температуру Serial.println (t_centr); Serial.println (t_perimetr); Serial.println (t_dushevaya); Serial.println (t_tualet); }