Управління температурою ds18b20 та ардуїно. Підключення датчика температури DS18B20 до мікроконтролера

Датчик температури в Arduino – один із найпоширеніших видів сенсорів. Розробнику проектів з термометрами на Arduino є безліч різних варіантів, що відрізняються за принципом дії, точності, конструктивному виконанню. Цифровий датчик DS18B20 є одним із найпопулярніших температурних датчиків, часто він використовується у водонепроникному корпусі для вимірювання температури води або інших рідин. У цій статті ви знайдете опис датчика ds18b20 російською, ми разом розглянемо особливості підключення до ардуїно, принцип роботи датчика, опис бібліотек та скетчів.

DS18B20 – це цифровий температурний датчик, що має безліч корисних функцій. По суті, DS18B20 – це цілий мікроконтролер, який може зберігати значення вимірювань, сигналізувати про вихід температури за встановлені межі (самі межі ми можемо встановлювати та змінювати), змінювати точність вимірювань, спосіб взаємодії з контролером та багато іншого. Все це у дуже невеликому корпусі, який, до того ж, доступний у водонепроникному виконанні.

Температурний датчик DS18B20 має різноманітні видикорпуси. Можна вибрати один із трьох – 8-Pin SO (150 mils), 8-Pin µSOP, та 3-Pin TO-92. Останній є найпоширенішим і виготовляється у спеціальному вологозахисному корпусі, тому його сміливо можна використовувати під водою. Кожен датчик має 3 контакти. Для корпусу TO-92 потрібно дивитися на колір проводів: чорний – земля, червоний – живлення та білий/жовтий/синій – сигнал. В інтернет-магазинах можна придбати готовий модуль DS18B20.

Де купити датчик

Природно, що DS18B20 найдешевше купити на Аліекспресі, хоча він продається і в будь-яких спеціалізованих російських інтернет-магазинах з Ардуїно. Наведемо кілька посилань для прикладу:

Пам'ять датчика складається з двох видів: оперативної та енергонезалежної – SRAM та EEPROM. В останню записуються регістри конфігурації та регістри TH, TL, які можуть використовуватись як регістри загального призначення, якщо не використовуються для визначення діапазону допустимих значень температури.

Основним завданням DS18B20 є визначення температури та перетворення отриманого результату на цифровий вигляд. Ми можемо самостійно поставити необхідний дозвіл, Встановивши кількість біт точності - 9, 10, 11 і 12. У цих випадках роздільні здатності будуть відповідно дорівнюють 0,5С, 0,25С, 0,125С і 0,0625С.

Отримані температурні вимірювання зберігаються у SRAM датчика. 1 і 2 байти зберігають одержане значення температури, 3 і 4 зберігають межі вимірювання, 5 і 6 зарезервовані, 7 і 8 використовуються для високоточного визначення температури, останній 9 байт зберігає стійкий до перешкод CRC код.

Підключення DS18B20 до Arduino

DS18B20 є цифровим датчиком. Цифрові датчики передають значення вимірюваної температури у вигляді певного двійкового коду, який надходить на цифрові або аналогові піни ардуїно, а потім декодується. Коди можуть бути різними, ds18b20 працює за протоколом даних 1-Wire. Ми не будемо вдаватися до подробиць цього цифрового протоколу, зазначимо лише необхідний мінімум для розуміння принципів взаємодії.

Обмін інформацією в 1-Wire відбувається завдяки наступним операціям:

  • Ініціалізація – визначення послідовності сигналів, з яких починається вимір та інші операції. Провідний пристрій подає імпульс скидання, після цього датчик повинен подати імпульс присутності, повідомляє про готовність до виконання операції.
  • Запис даних – відбувається передача байта даних датчик.
  • Читання даних відбувається прийом байта з датчика.

Для роботи з датчиком нам знадобиться програмне забезпечення:

  • Arduino IDE;
  • Бібліотека OneWire, якщо використовується кілька датчиків на шині, можна використовувати бібліотеку DallasTemperature. Вона працюватиме поверх OneWire.

З обладнання знадобляться:

  • Один або декілька датчиків DS18B20;
  • Мікроконтролер Ардуїно;
  • Конектори;
  • Резистор на 4,7 ком (у разі підключення одного датчика піде резистор номіналом від 4 до 10K);
  • монтажна плата;
  • USB-кабель для підключення до комп'ютера.

До плати Ардуїно UNOДатчик підключається просто: GND з термодатчика приєднується до GND Ардуїно, Vdd підключається до 5V, Data – до будь-якого цифрового піну.

Найпростіша схема підключення цифрового датчика DS18B20 представлена ​​малюнку.

Алгоритм отримання інформації про температуру в скетчі складається з наступних етапів:

  • Визначення адреси датчика, перевірка його підключення.
  • На датчик подається команда з вимогою прочитати температуру та викласти виміряне значення у регістр. Процедура відбувається довше, на неї необхідно приблизно 750 мс.
  • Подається команда на читання інформації з регістру та відправлення отриманого значення в монітор порту,
  • Якщо потрібно, то здійснюється конвертація в градуси Цельсія/Фаренгейта.

Приклад простого скетчу для DS18B20

Найпростіший скетч для роботи з цифровим датчиком має такий вигляд. (У скетчі ми використовуємо бібліотеку OneWire, про яку поговоримо докладніше трохи пізніше).

#include /* * Опис взаємодії з цифровим датчиком ds18b20 * Підключення ds18b20 до ардуїно через пін 8 */ OneWire ds(8); // Створюємо об'єкт OneWire для шини 1-Wire, за допомогою якого буде здійснюватися робота з датчиком void setup()( Serial.begin(9600); ) void loop()( // Визначаємо температуру від датчика DS18b20 byte data; // Місце для значення температури ds.reset(); // Починаємо взаємодію зі скидання всіх попередніх команд і параметрів ds.write(0xCC); ; // Даємо датчику DS18b20 команду виміряти температуру. значення виміряної температури ds.write(0xCC); ds.write(0xBE); // Просимо передати нам значення регістрів зі значенням температури // Отримуємо відповідь data = ds.read(); ds.read(); // А тепер старший // Формуємо підсумкове значення: // - спершу "склеюємо" значення, // - потім множимо його на коефіцієнт, що відповідає роздільній здатності (для 12 біт за замовчуванням - це 0,0625) float temperature = ((data<< 8) | data) * 0.0625; // Выводим полученное значение температуры в монитор порта Serial.println(temperature); }

Скетч для роботи з датчиком ds18b20 без delay

Можна трохи ускладнити програму для ds18b20, щоб позбавитися від того, що гальмує виконання скетчу.

#include OneWire ds(8); // Об'єкт OneWire int temperature = 0; // Глобальна змінна для зберігання значення температури датчика DS18B20 long lastUpdateTime = 0; // Змінна для зберігання часу останнього зчитування датчика const int TEMP_UPDATE_TIME = 1000; // Визначаємо періодичність перевірок void setup()( Serial.begin(9600); ) void loop()( detectTemperature(); // Визначаємо температуру від датчика DS18b20 Serial.println(temperature); // Виводимо отримане значення температури // Т .к. змінна temperature має тип int, дробова частина буде просто відкидатися ) int detectTemperature()( byte data; ds.reset(); ds.write(0xCC); ds.write(0x44); if (millis() - lastUpdateTime > TEMP_UPDATE_TIME) ( lastUpdateTime = millis(); ds.reset(); ds.write(0xCC); ds.write(0xBE); data = ds.read(); data = ds.read(); // Формуємо значення temperature = (data<< 8) + data; temperature = temperature >> 4; } }

Бібліотека DallasTemperature та DS18b20

У своїх скетчах ми можемо використовувати бібліотеку DallasTemperature, яка спрощує деякі аспекти роботи з датчиком DS18B20 по 1-Wire. Приклад скетчу:

#include // Номер піна Arduino із підключеним датчиком #define PIN_DS18B20 8 // Створюємо об'єкт OneWire OneWire oneWire(PIN_DS18B20); // Створюємо об'єкт DallasTemperature до роботи з сенсорами, передаючи йому посилання на об'єкт до роботи з 1-Wire. DallasTemperature dallasSensors(&oneWire); // Спеціальний об'єкт зберігання адреси пристрою DeviceAddress sensorAddress; void loop(void)( // Запит на вимірювання датчиком температури Serial.print("Вимірюємо температуру..."); dallasSensors.requestTemperatures(); // Просимо ds18b20 зібрати дані Serial.println("Виконано"); // Запит для отримання збереженого значення температури printTemperature(sensorAddress); // Затримка для того, щоб можна було щось розібрати на екрані delay(1000); dallasSensors.getTempC(deviceAddress); Serial.print("Temp C: "); Serial.println(tempC);< 8; i++) { if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } }

Бібліотека OneWire для роботи з DS18B20

DS18B20 використовує для обміну інформацією з Ардуін протокол 1-Wire, для якого вже написана відмінна бібліотека. Можна і потрібно використовувати її, щоб не реалізовувати всі функції вручну. . Для встановлення бібліотеки завантажте архів, розпакуйте в папку library вашого каталогу Arduino. Підключається бібліотека за допомогою команди #include

Усі датчики DS18B20 підключаються паралельно, їм всіх достатньо одного резистора. За допомогою бібліотеки OneWire можна одночасно рахувати всі дані з усіх датчиків. Якщо кількість датчиків, що підключаються більше 10, потрібно підібрати резистор з опором не більше 1,6 кОм. Також для більш точного вимірутемператури потрібно поставити додатковий резистор на 100...120 Ом між виходом data на платі Ардуїно та data на кожному датчику. Дізнатися, з якого датчика отримано те чи інше значення, можна за допомогою унікального 64-бітного серійного коду, який буде виданий в результаті виконання програми.

Для підключення температурних датчиків у нормальному режимі необхідно використовувати схему, представлену малюнку.

Висновки

Мікросхема Dallas DS18B20 є дуже цікавим пристроєм. Датчики температури і термометри, створені на її основі, мають прийнятні для більшості завдань характеристики, розвинений функціонал, відносно не дорогі. Особливу популярність датчик DS18B20 отримав як вологозахищений пристрій для вимірювання температури рідин.

За додаткові можливостідоводиться платити відносною складністю роботи з датчиком. Для підключення DS18B20 нам обов'язково знадобиться резистор із номіналом близько 5К. Для роботи з датчиком у скетчах ардуїно потрібно встановити додаткову бібліотеку та отримати певні навички для роботи з нею – там не зовсім тривіально. Втім, можна купити вже готовий модуль, а для скетчу здебільшого вистачить простих прикладів, наведених у цій статті.

Так історично склалося, що на поточний моментодним із найпопулярніших цифрових температурних датчиків є датчик DS18B20 корпорації Dallas Semiconductor. Звичайно ж, і ми не можемо обійти його стороною.

Вся пам'ять DS18B20 включає оперативну (SRAM) і енергонезалежну (EEPROM) пам'ять. У EEPROM зберігаються регістри TH, TL та регістр конфігурації. Якщо функція тривожного сигналуне використовується, то регістри TH та TL можуть використовуватися як регістри загального призначення. У режимі термостата TH містить значення верхнього порогу температури, TL відповідно нижнього порога.

Кодінг.

Насамперед нам знадобиться бібліотека OneWireяка нам дуже спростить життя. Завантажити можна з GitHub або з нашого сайту.

Будь-яке спілкування з датчиком починається з команди Reset. Тобто МК притискає шину даних у стан логічний "0" на 480 µs, потім відпускає її. Датчик відповідає це сигналом присутності, після чого ми відправляємо команду Skip ROM (0xCC) . Тобто звернемося до всіх датчика які присутні на шині.

OneWire(uint8_t pin);

Конструктор, Pin– номер виводу, до якого підключено датчик.

uint8_t reset(void);

Ініціалізація операції на шині. З цієї команди має починатися будь-яка операція обміну даними. Повертає:

  • 1 – якщо пристрій підключено до шини (був відповідний імпульс присутності);
  • 0 – якщо пристрій відсутній на шині (імпульсу у відповідь не було).
void write(uint8_t v, uint8_t power = 0);

Запис байт. Передає байт пристрій на шині.

Відправимо команду 0x44ініціалізації вимірювання температури.

Пауза 1 сек.Очікування на час, необхідне виконання датчиком перетворення температури. Цей час залежить від обраної роздільної здатності датчика. Роздільна здатність 12 біт встановлено в датчику за замовчуванням. Час перетворення йому – 750 мс.

Потім ми відправляємо команду Reset, Skip ROM (0xCC) , а поміт команду 0xBE читання пам'яті датчика.

Ось і сам код із бібліотеки:

#include // OneWire DS18S20, DS18B20, DS1822 Temperature Example // // http://www.pjrc.com/teensy/td_libs_OneWire.html // // DallasTemperature library може зробити все це для вас! // http://milesburton.com/Dallas_Temperature_Control_Library OneWire ds(10); // датчик на виводі 10 (а резистор 4.7 K є необхідним) void setup(void) ( Serial.begin(9600); ) void loop(void) ( byte i; byte present = 0; // змінні byte type_s; byte data ; byte addr; float celsius, fahrenheit; if (!ds.search(addr)) ( Serial.println("No more addresses."); ; ) Serial.print("ROM =");< 8; i++) { Serial.write(" "); Serial.print(addr[i], HEX); } if (OneWire::crc8(addr, 7) != addr) { Serial.println("CRC недопустимый!"); return; } Serial.println(); // первый байт ROM указывает, какой чип (8 бит код чипа, 48 бит серийный номер, 8 бит CRC) switch (addr) { case 0x10: Serial.println(" Chip = DS18S20"); // or old DS1820 type_s = 1; break; case 0x28: Serial.println(" Chip = DS18B20"); type_s = 0; break; case 0x22: Serial.println(" Chip = DS1822"); type_s = 0; break; default: Serial.println("Не является устройством семейства DS18x20."); return; } ds.reset(); ds.select(addr); ds.write(0x44, 0); // старт преобразования с питание от внешнего источника. delay(1000); // ждем конца преобразования. // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); // Читаем память. Serial.print(" Data = "); Serial.print(present, HEX); Serial.print(" "); for (i = 0; i < 9; i++) { // нам нужно 9 байт data[i] = ds.read(); Serial.print(data[i], HEX); Serial.print(" "); } Serial.print(" CRC="); Serial.print(OneWire::crc8(data, 8), HEX); Serial.println(); // Преобразование данных в фактическую температуру //поскольку результатом является 16-разрядное целое число со знаком // ранится в типе "int16_t", который всегда составляет 16 бит // даже при компиляции на 32-битном процессоре. int16_t raw = (data << 8) | data; if (type_s) { raw = raw << 3; // 9 бит разрешение по умолчанию у датчиков DS18S20 or old DS1820 if (data == 0x10) { // "количество остается" дает полное разрешение 12 бит raw = (raw & 0xFFF0) + 12 - data; } } else { byte cfg = (data & 0x60); // при более низком разрешении низкие биты не определены, поэтому давайте обнуляем их. if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms //// default is 12 bit resolution, 750 ms conversion time } celsius = (float)raw / 16.0; fahrenheit = celsius * 1.8 + 32.0; Serial.print(" Temperature = "); Serial.print(celsius); Serial.print(" Celsius, "); Serial.print(fahrenheit); Serial.println(" Fahrenheit"); }

Власне це бібліотека підходить для всіх датчиків сімейства. DS18(DS18B20, DS18S20, DS1820, DS1822) підключення не чим не відключаються. Ну а деякі відмінності можна вже дізнатися з даних,що до них.

У цьому уроці ми будемо використовувати датчик температури DS18B20 із Arduino UNO для створення термометра. Датчик DS18B20 є добрим варіантом, коли в проекті з високою точністю потрібна хороша реакція. Ми покажемо як підключити DS18B20 до вашого та відобразити дані температури на РК-дисплеї 16x2.

Огляд датчика DS18B20

Датчик DS18B20 взаємодіє з Arduino через 1-провідну шину. За визначенням зв'язку з Arduino потрібна лише одна лінія даних (і земля).

Кожен DS18B20 має унікальний 64-бітовий послідовний код або адресу, що дозволяє кільком DS18B20s працювати на тій же однопровідній шині. Тому використання мікропроцесора спрощує керування кількома DS18B20, розподіленими на великій площі. Додатки для цієї функції включають екологічний контроль, системи контролю температури в будівлях і механічному обладнанні.

Особливості DS18B20

  • Необхідний лише один однопровідний інтерфейс для зв'язку між мікроконтролером та датчиком.
  • Потрібний лише один зовнішній компонент: резистор 4,7 кОм.
  • Може харчуватися від лінії передачі безпосередньо, вимагаючи напруги від 3,0 до 5,5 У.
  • Кожен пристрій має унікальний 64-бітовий послідовний код, що зберігається на вбудованому ПЗП.
  • Може вимірювати температуру в діапазоні від -55 ° C до + 125 ° C (від -67 ° F до + 257 ° F).
  • Точність ± 0,5 ° C в діапазоні від -10 ° C до + 85 ° C.

У цьому проекті використовується DS18B20, який постачається у формі температурного зонда, що є водонепроникним. Використання водонепроникного датчика розширює можливості - датчик температури зможе виміряти температуру рідин, таких як вода, хімікати, чай та кава.

Вимоги до комплектуючих

Вимоги до обладнання для вашого термометра досить стандартні, нам знадобляться:

  • РК-дисплей 16х2
  • Датчик температури DS18B20
  • Провід для перемичок
  • Резистор 1K
  • Макетна плата

Схема з'єднання

Зробіть з'єднання згідно з наведеною нижче схемою.

З'єднуємо датчик та Ардуїно

  • VCC -> Arduino 5V, плюс резистор 4,7K, що йде від VCC до Data
  • Data -> Пін 7 Arduino
  • GND -> GND Arduino

З'єднання для РК-дисплею та Arduino UNO

  • Пін 1 -> GND
  • Пін 2 -> VCC
  • Пін 3 -> Arduino Пін 3
  • Пін 4 -> Arduino Пін 33
  • Пін 5 -> GND
  • Пін 6 -> Arduino Пін 31
  • Пін 7-10 -> GND
  • Пін 11 -> Arduino Пін 22
  • Пін 12 -> Arduino Пін 24
  • Пін 13 -> Arduino Пін 26
  • Пін 14 -> Arduino Пін 28
  • Пін 15 -> VCC через резистор 220 Ом
  • Пін 16 -> GND

Підключіть потенціометр, як показано вище, до контакту 3 на РК-дисплеї, щоб керувати контрастністю.

Цей проект працює на температурах до 125 ° C. У разі наявності деякого дисонансу у значенні показаної температури двічі перевірте з'єднання з резистором, підключеним до DS18B20. Після з'єднання всього, що описано вище, ми можемо перейти до програмування.

Вихідний код для термометра

Перед завантаженням вихідного коду потрібно налаштувати дві бібліотеки, необхідні для запуску цього коду в середовищі Arduino.

  • Перша бібліотека називається - OneWire().
  • Друга бібліотека називається - DallasTemperature ().

Після завантаження обох бібліотек перемістіть файли до папки бібліотек Arduino за промовчанням. Потім скопіюйте код і завантажте його після подвійної перевірки правильності підключення вашого датчика.

//Code begins #include #include #include #define ONE_WIRE_BUS 7 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); float tempC = 0; float tempF = 0; LiquidCrystal lcd(12,11,5,4,3,2); void setup() ( sensors.begin(); lcd.begin(16,2); lcd.clear(); pinMode(3, OUTPUT); analogWrite(3, 0); Serial.begin(9600); ) void loop () ( sensors.requestTemperatures(); tempC = sensors.getTempCByIndex(0); tempF = sensors.toFahrenheit(tempC); delay(1000); Serial.println(tempC); lcd.setCursor(0,0); lcd. print("C:"); lcd.print(tempC); lcd.print("degrees");

Приблизно це так:

Ми змогли виміряти температуру до 100 ° C за допомогою цього датчика! Він дуже чуйний.

Після того, як ви створили проект, потестуйте пристрій, зануривши датчик у гарячу та холодну воду.

Розглянемо як за допомоги Arduinoчитати показання з цифрового датчика температури DS18B20 або DS18S20. У заразм/с DS18B20 фірми Dallas є найбільш поширеним та доступним цифровим датчиком температури. Працює за протоколом. Даташит датчика:

Схема підключення датчика DS18B20 до Arduino наведена нижче. Підтягуючий Pull-Up резистор номіналом 4.7 кОм (5 кОм) включається між виведенням DQ (Data) та живленням датчика Vdd.

Робочий скетч представлений нижче. Необхідна бібліотека OneWire, останню версіюякої можна завантажити.

Після встановлення бібліотеки, в меню з'явиться робочий приклад, яким можна скористатися.

#include "OneWire.h" // OneWire DS18S20, DS18B20, DS1822 Temperature Example // // http://www.pjrc.com/teensy/td_libs_OneWire.html // // DallasTemperature library can all this work for you ! // http://milesburton.com/Dallas_Temperature_Control_Library OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary) void setup(void) ( Serial.begin(9600); ) void loop(void) ( byte i; byte present = 0; byte type_s; byte data; byte addr; float celsius, fahrenheit; if (!ds.search(addr)) ( Serial.println("No more addresses."); Serial.println(); ds.reset_search(); delay(250); return; ) Serial. print("ROM =");< 8; i++) { Serial.write(" "); Serial.print(addr[i], HEX); } if (OneWire::crc8(addr, 7) != addr) { Serial.println("CRC is not valid!"); return; } Serial.println(); // the first ROM byte indicates which chip switch (addr) { case 0x10: Serial.println(" Chip = DS18S20"); // or old DS1820 type_s = 1; break; case 0x28: Serial.println(" Chip = DS18B20"); type_s = 0; break; case 0x22: Serial.println(" Chip = DS1822"); type_s = 0; break; default: Serial.println("Device is not a DS18x20 family device."); return; } ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad Serial.print(" Data = "); Serial.print(present, HEX); Serial.print(" "); for (i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); Serial.print(data[i], HEX); Serial.print(" "); } Serial.print(" CRC="); Serial.print(OneWire::crc8(data, 8), HEX); Serial.println(); // Convert the data to actual temperature // because the result is a 16 bit signed integer, it should // be stored to an "int16_t" type, which is always 16 bits // even when compiled on a 32 bit processor. int16_t raw = (data << 8) | data; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data == 0x10) { // "count remain" gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data; } } else { byte cfg = (data & 0x60); // at lower res, the low bits are undefined, so let"s zero them if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms //// default is 12 bit resolution, 750 ms conversion time } celsius = (float)raw / 16.0; fahrenheit = celsius * 1.8 + 32.0; Serial.print(" Temperature = "); Serial.print(celsius); Serial.print(" Celsius, "); Serial.print(fahrenheit); Serial.println(" Fahrenheit"); }

DS18B20 підключення до Arduino— це фантастичний датчик визначення температурної складової з цифровим інтерфейсом у своєму складі — отже, він не вимагає виконання калібрування. Тому такі пристрої можна підключити одночасно в множині до одного контакту arduino. Таку можливість надає оригінальна адреса, яка була запрограмована у схему DS18B20 при його виготовленні.

Ось так виглядає ця "супер-складна" схема DS18B20 підключення до Arduino:

Тут потрібен лише один резистор і більше нічого))). До того ж тут немає потреби в калібруванні температури, а також виключаються можливі неточності при виконанні складання. Напругу живлення можна подавати в діапазоні від 3v до 5v. Все просто. А відображення температурного значення – три рядки)). Нижче показаний зразок, все досконало та чітко розписано.

Ось звідси потрібно завантажити бібліотеку:

Тут все аналогічно, код у зразку Multiple.pde. Різниця лише в тому, що застосовано деяку кількість змінних величин термометрів, що мають адреси — отже на три датчики три змінні величини зі своєю адресою і аналогічний код для пошуку:

If (!sensors.getAddress(Thermometer1, 0)) Serial.println("Не знайдено адресу датчика 0"); if (!sensors.getAddress(Thermometer2, 1)) Serial.println("Не знайдено адресу датчика 1"); if (!sensors.getAddress(Thermometer3, 2)) Serial.println("Не знайдено адресу датчика 2");

Природно і виведення температурних складових також три.