Как подключить несколько цифровые датчики ds18s20

от admin

Практическое программирование Arduino/CraftDuino — температурный 1-Wire датчик DS18S20

В продолжение темы 1-Wire рассмотрим температурный 1-Wire датчик — DS18S20 ��

DS18S20 – высокоточный цифровой термометр с интерфейсом 1-Wire (High Precision 1-Wire Digital Thermometer) от DALLAS Semiconductor (Maxim).
Для подключения датчика достаточно двух проводов – линии данных и заземления;
питание элемента в этом случае называется «паразитным»/фантомным (Parasite power mode) и осуществляется по линии данных за счёт накопления энергии во встроенном конденсаторе во время высокого уровня напряжения

(не рекомендуется при температуре свыше +100 С из-за быстрого разряда конденсатора).


Нормальный режим питания (external supply), заключается в подключении к датчику источника питания (3V-5V).

В обоих случаях рекомендуется использовать подтягивающий резистор в 4.7k

Характеристики DS18S20:
Интерфейс 1-Wire
Измеряемая температура от -55 до +125 °C
Точность 0.5 °C в диапазоне от -10 до +85 °С
Температура считывается 9-ю битами данных
Время на конвертацию температуры — 750 ms (максимальное)

Как и любое 1-Wire устройство — каждый DS18S20 содержит уникальный 64-битный ROM
Первые 8 бит — код серии ( для DS18S20 код — 10h, а для DS18B20 — 28h ).
Затем 48 бит уникального номера, и в конце 8 бит CRC-кода.

Однако, самое интересное — данные о температуре хранятся в оперативной памяти(scratch-pad memory) датчика.

Память состоит из оперативной ROM и энергонезависимой EEPROM:

Первые два байта – содержат данные об измеренной температуре,
Третий и четвёртый байты хранят верхний (TH) и нижний (TL) пределы температуры.
Пятый и шестой – не используются.
Седьмой и восьмой – байты – счётчики – могут использоваться для более точного измерения температуры.
Девятый байт хранит CRC-код предыдущих восьми ��

Теперь осталось разобраться с тем – какие команды может выполнять этот датчик.

Кроме уже знакомых нам:
Поиск адресов — Search ROM [F0h]
Чтение адреса устройства — Read ROM [33h]
Выбор адреса — Match ROM [55h]
Игнорировать адрес — Skip ROM [CCh]

Поиск Тревоги — Alarm Search [ECh] – операция этой команды идентична операции поиска адресов [F0h], за исключением того, что в данном случае ответят только те датчики, у которых, при последнем измерении, температуры вышла за установленные пределы (выше TH или ниже TL).

И команды работы со scratch-pad memory:

Конвертировать температуру — Convert T [44h] – датчик произведёт измерение и запись данных о текущей температуре. Если ведущее устройство будет за этой командой слать тайм-слоты чтения, то пока конвертация не закончена — DS18S20 будет выдавать в линию «0», а после завершения конвертации «1».
Если датчик работает в режиме паразитного питания, то не позже 10 мкс после подачи команды устройство управления должно установить высокий уровень на шине на время продолжительности преобразование (не менее 750 ms)

Запись в память — Write Scratchpad [4Eh] – эта команда позволяет записать 3 байта в память датчику. Первый байт запишется в TH, второй в TL, а третий байт запишется в пятый байт памяти – у DS18S20 – он не используется, а у DS18B20 – это байт конфигурации

Чтение памяти — Read Scratchpad [BEh] – позволяет нам считать память датчика. В ответ на эту команду датчик вернёт 9 байт своей памяти, начиная с 0-го байта TEMPERATURE LSB и заканчивая восьмым – CRC.

Копировать память — Copy Scratchpad [48h] – датчик скопирует содержимое ОЗУ — TH и TL в EEPROM

Если датчик работает в режиме паразитного питания, то не позднее 10 мкс после подачи этой команды устройство управление должно установить высокий уровень на шине и поддерживать его в течении не менее 10ms.
Производители обещают, что EEPROM датчика DS18S20 должен выдержать минимум 50000 циклов перезаписи и будет хранить данные 10 лет при T = +55°C.

Повторная загрузка — Recall E2 [B8h] – загружает данные из EEPROM в ОЗУ. Эта операция выполняется автоматически, как только на датчик подаётся напряжение.

Вид электропитания датчика — Read Power Supply [B4h] – с помощью этой команды можно определить – какой вид питания использует датчик. Если датчик выставит на шине «0» — значит он использует паразитное питание. Если же датчик использует внешнее питание, то он ответит «1».

Теперь становится понятно, что нужно сделать, чтобы получить от датчика данные о температуре ��

После RESET-а и поиска устройств на линии 1-Wire, нужно выдать команду
0x44 , чтобы запустить конвертацию температуры датчиком.
Подождать не менее 750 ms и выдать команду
0xBE , чтобы считать ОЗУ датчика.
Данные о температуре будут в первых двух байтах.

Остаётся только сложить эти два байта, предварительно сдвинув старший байт на 8 бит влево:

Температуру получим просто разделив на 2 (шаг ведь в пол-градуса)

Однако, датчик ведь называется «высокоточный»! Поэтому предусмотрена процедура для получения более точных данных о температуре:
0. Считать данные с датчика: LSB, MSB, COUNT_REMAIN, COUNT_PER_C
1. Получить данные о температуре с точностью в пол-градуса. (Tc_100)
2. Уточнённые данные о температуре высчитываются по формуле:

Как помним, для работы с датчиками с интерфейсом 1-Wire можно использовать библиотеку Jim Studt-а – OneWire. скачать

Соответственно, скетч для получения температуры от DS18S20 будет таким:

у меня это работает. Ошибка может только тут быть:

Больше мест не вижу.

Кстати, <b> внутри <code> тут не работает ��
Да и закрытие тегов не отслеживается…

Подключение цифровых датчиков температуры

Проводной датчик подключается к специальному входу контроллера. Если требуется контролировать несколько датчиков, то их нужно собрать в один шлейф и подключить этот шлейф ко входу контроллера. При подключении необходимо соблюдать следующие рекомендации:

  • Всего можно подключить не более 10-ти датчиков;
  • Датчики подключаются на один шлейф параллельно друг за другом;
  • Удаленность последнего датчика в шлейфе не может превышать 100 м;
  • Максимально допустимое расстояние датчика от шлейфа — 0,7 м;
  • Минимально допустимое расстояние между точками подключения датчиков в шлейфе — 0,2м;
  • Нельзя прокладывать шлейф с датчиками в одном кабельном канале с электропроводкой помещения;
  • Датчики подвержены импульсным сетевым помехам.

Подключение трехпроводного датчика

Трехпроводной датчик подключается по двухпроводной схеме: при таком подключении необходимо соединить вместе черный и красный провод и подключить их к проводу шлейфа на контакт 5, а желтый провод подключить к проводу шлейфа контакт 6.

Подключение двухпроводного датчика

Необходимо синий провод подключить к минусовому проводу шлейфа, а коричневый провод подключить к сигнальному (плюсовому) проводу шлейфа.

Arduino.ru

Подключение нескольких DS18b20 на одну шину и на разные выводы

  • Войдите на сайт для отправки комментариев
  • Войдите на сайт для отправки комментариев

Почитайте , там весьма подробно описаны все команды и алгоритмы.

  • Войдите на сайт для отправки комментариев

Все DATA на нужный пин

Между пином DATA и VCC подключаешь резистор на 4,7 кОм.

У каждого датчика есть свой уникальный адрес типа MAC на сетевой карте. В примере из DallasTemperature для двух датчиков есть кусок для получения адремсов всех датчков на пине.

Если у тебя датчики привязаны к конкретному месту уставноки, то храни адреса в EEPROM (один адрес — 8 байт), считывай их при запуске контроллера и используй в программе.

Команду на начала измерений можно пулять без задания адреса, тогда её получат все датчики на шине и начнут замер.

  • Войдите на сайт для отправки комментариев

Почитайте , там весьма подробно описаны все команды и алгоритмы.

Спасибо, но Яндекс говорит, что такой страницы нет (404)

Все DATA на нужный пин

Между пином DATA и VCC подключаешь резистор на 4,7 кОм.

У каждого датчика есть свой уникальный адрес типа MAC на сетевой карте. В примере из DallasTemperature для двух датчиков есть кусок для получения адремсов всех датчков на пине.

Если у тебя датчики привязаны к конкретному месту уставноки, то храни адреса в EEPROM (один адрес — 8 байт), считывай их при запуске контроллера и используй в программе.

Команду на начала измерений можно пулять без задания адреса, тогда её получат все датчики на шине и начнут замер.

Похоже у Вас между мозгом и глазами стоит стена. Я не спрашиваю как мне ОБОЙТИ проблему, я спрашиваю как её РЕШИТЬ в конкретных условиях. Чувствуете разницу?

Утро вечера мудреннее. Вот рабочий скетч для поиска и использования НЕСКОЛЬКИХ (2, 3, 4, 5, 6 . ) датчиков (указывается в настройках #define kol_DS 3 ) DS18b20 на одной шине с использованием библиотеки OneWire.h

компилировал под IDE 1.6.5. Библиотеку OneWire скачивал, так как в «коробке 1.6.5» не было. http://www.pjrc.com/teensy/td_libs_OneWire.html Version 2.1:

Пользуйтесь на здоровье! И забудьте про этот дебилизм загонять ID датчиков в прошивку

Обратите внимание на одну тонкость: для хранения темпрературы я выделил байт. Т.е. можно записать число от 0 до 255, но тепература может быть отрицательной . Положительная температура будет записана числом от 0 до 127, а отрицательная от 128 (старший бит =1) до 255. Поэтому ставим знак минус перед числом. а модуль температуры получаем как (256-число)

  • Войдите на сайт для отправки комментариев

> указывается в настройках #define kol_DS 3

Не путай flash и eeprom, засмеют.

И вопрос со звездочкой. Как датчик успеет измерить температуру, если у тебя не предполагаются задерки?

А код бибилиотеки всё же изучи. Много полезного про нее узнаешь.

  • Войдите на сайт для отправки комментариев

Тогда наберите «DS18B20 описание на русском» Чернов Геннадий.

На тему загоняния адресов в прошивку или EEPROM, готов сильно поспорить. После сбоя питания, откуда программа узнает местонахождение всех датчиков? Ваша попытка повесить их на отдельные пины, подозреваю связана именно с этим.

  • Войдите на сайт для отправки комментариев

Похоже у Вас между мозгом и глазами стоит стена. Я не спрашиваю как мне ОБОЙТИ проблему, я спрашиваю как её РЕШИТЬ в конкретных условиях. Чувствуете разницу?

Вот бы Пухлявому так ответил)))))))

  • Войдите на сайт для отправки комментариев

> указывается в настройках #define kol_DS 3

1)Смех продлевает жизнь, а ржачь делает из человека животное.

Не путай flash и eeprom, засмеют.

2) Меня это не смущает. Есть пословица: Умный промолчит, дурак не заметит. Засмеивающие, мне кажется, ближе ко второй категории. Не стоит обращать на них внимания. За информацию спасибо. Гляну. Но код от этого не перестанет работать

И вопрос со звездочкой. Как датчик успеет измерить температуру, если у тебя не предполагаются задерки?

Открываем канал между глазами и мозгами и смотрим функцию LOOP

Я сделаю и забуду про этот проект. Некогда вникать во все библиотеки.

  • Войдите на сайт для отправки комментариев

И все таки, как прога определяет местонахождение датчика? Могу предположить: датчики отсортированы по адресам и расположены последовательно. Что делать если датчик сдох? Перемещать все датчики, у которых адрес выше? Объясните, в чем преимущество вашего метода? Крику много, но не понятно.

  • Войдите на сайт для отправки комментариев

1)И все таки, как прога определяет местонахождение датчика? 2)Могу предположить: датчики отсортированы по адресам и расположены последовательно. 3)Что делать если датчик сдох? 4)Перемещать все датчики, у которых адрес выше? 5)Объясните, в чем преимущество вашего метода? 6)Крику много, но не понятно.

Извините, но внес в цитаты цифры, что бы проще было отвечать.

1)датчики, подключенные к отдельным пинам будут установлены на определенные физические объекты и под это будет заточена программа. «Гирлянда» будет крепиться по обстоятельствам. Как узнать местонашождения датчика с гирлянды? Погреть и записать на бумажку, если угодно.

2)Ничего не сортировал. Ответ в п1

3)Если датчик сдох на отдельном пине, то об этом сообщит программа. Заменю, перезагружу программу и забуду. Если на «гирлянде» — тоже самое.

4)Наши абстракции не пересекаются. Не понимаю, о чем Вы.

5)Я не знаю, что Вы подразумеваете под «моим методом».

6)Странно, я вообще-то не кричал.

Видимо Ваши вопросы от потери контекста моего вопроса. Кратко повтою. Интесовал код для работы несколькими датчиками DS18b20 в определенных программных условиях. Другие моменты неактуальны, например, точность температуры.

  • Войдите на сайт для отправки комментариев
Читать:
Сколько карт можно привязать в самокат

1)Извини чувак, я хрустальный шар вчера разбил, хотя будущее он всё равно хреново показывал.

2)А хамить не надо, хамить я и сам умею. А таких шибкоумных велосипедостроителей тут в неделю по 5 штук бывает.

3)И вот тут я ловлю тебя на слове.

4)Ты сначала говришь про неприемлимость делаев и вот уже правишь пост с delay(1000). Либо крестик сними, либо трусы надень.

А устройство с двумя датчиками и адресами в EEPROM у меня сейчас на подоконнике лежит и температуру показывает.

> И все таки, как прога определяет местонахождение датчика?

5)Да никак. Я уже имел дело с таким говнокодером. Сренькнул и в кусты.

1)Думаю моё прощение Вам не поможет.

2)При обвинениях приводят цитаты. Но «чуваки» об этом не знают.

3)Опять бы цитата не помешала.

4)Т.е. моя фраза » Вот часть моего кода в части DS18B20 » Вам ничего не говорит. Ладно скажу по другому. Так как проект очень большой и нет смысла его весь выкладывать, я выложил только часть кода, которая показывает суть проблемы. А что бы этот демо-код работал я добавил задержку в 1 сек там где надо.

5)Вообще-то я сам решил свой вопрос и выложил решение в общий доступ. Но у Вас, очевидно, к таким поспупкам свое специфическое отношение. Поэтому более с Вами объясняться не желаю.

  • Войдите на сайт для отправки комментариев

Мальчики не сортесь по пустякам! 123ksn Ты вобще чего хотел то?! смотри стр.57 // ds.reset_search(); заремлен. В цикле нашли 1 датчик, потом 2 и третий. Разремил ds.reset_search(); и нашли 1 датчик сбросили контекст поиска снованашли первый датчик.. Убер ds.reset_search(); на.

  • Войдите на сайт для отправки комментариев

Да, еще как с тремя датчиками на одном выводе буш работать, то конвертацию запускай по очереди, иначе питания может нехватать, если сильно надо одновременно, то надо подпитку приличную. Но токо вот зачем оно может быть надо одновременно, не термоядерный реактор мониторить же, температура меняется не быстро. Можна и все датчики на один вывод поцепить.

А с сканированием датчиков кажется класно, типа новый датчик подключил, он автоматом обнаружился, но в реале неудобняк — ну нашли допустим ваши 3 датчика (а что если 2, или 4 обнаружилось?), а какой из них какую температуру меряет? Нужна табличка соответствия, с сохранением адресов датчиков в энергонезависимой памяти данных 😉 Это загрузка, и/или редактирование. Невесело получается. Подключил новый датчик — пропиши его, заменил старый — правь табличку. Если же есть табличка — нафига сканировать каждый раз?!

  • Войдите на сайт для отправки комментариев

А с сканированием датчиков кажется класно, типа новый датчик подключил, он автоматом обнаружился, но в реале неудобняк — ну нашли допустим ваши 3 датчика (а что если 2, или 4 обнаружилось?), а какой из них какую температуру меряет? Нужна табличка соответствия, с сохранением адресов датчиков в энергонезависимой памяти данных 😉 Это загрузка, и/или редактирование. Невесело получается. Подключил новый датчик — пропиши его, заменил старый — правь табличку. Если же есть табличка — нафига сканировать каждый раз?!

Не, ну это мелочи, пришел такой крутой чувак, рассказал всем, что можно адреса в массив считать. Потом для его удобства и нежелания подумать, вместо одного шлейфа использовать три. Открыл истину, как хранить отрицательные числа в байте. В итоге получил высокотехнологичную х-ню на дорогом цифровом датчике, с которой вполне может справиться любой p-n переход.

  • Войдите на сайт для отправки комментариев

1) Да, еще как с тремя датчиками на одном выводе буш работать, то конвертацию запускай по очереди, иначе питания может нехватать, если сильно надо одновременно, то надо подпитку приличную. Но токо вот зачем оно может быть надо одновременно, не термоядерный реактор мониторить же, температура меняется не быстро. Можна и все датчики на один вывод поцепить.

2)А с сканированием датчиков кажется класно, типа новый датчик подключил, он автоматом обнаружился, но в реале неудобняк — ну нашли допустим ваши 3 датчика (а что если 2, или 4 обнаружилось?), а какой из них какую температуру меряет? Нужна табличка соответствия, с сохранением адресов датчиков в энергонезависимой памяти данных 😉 Это загрузка, и/или редактирование. Невесело получается. Подключил новый датчик — пропиши его, заменил старый — правь табличку. Если же есть табличка — нафига сканировать каждый раз?!

1)Я датчики DS18b20 давно использую и с тонкостями знаком. Вот на ардуине впервый раз. Но спасибо за добрый совет.

2)Logik, не придумывайте сложности. Пусть каждый делает как ему лучше, а я буду делать как мне лучше. Как говорится на вкус и цвет. DS18b20 можно подключить квазизвездой. Пользователь может даже не знать, что перед ним не звезда. Переключил вилку в нужную розетку и готово (Я использую провода и коннекторы от телефона)

Да, извините, строку 57 нет смысла обсуждать, так как я опубликовал пример рабочего кода

Взаимодействие нескольких DS18B20, цифровых датчиков температуры, с Arduino

Одним из самых больших преимуществ датчиков температуры DS18B20 является то, что на одной шине 1-Wire могут сосуществовать несколько таких датчиков. Поскольку каждый DS18B20 имеет уникальный 64-битный последовательный код, зашитый на заводе, их легко отличать друг от друга.

Взаимодействие с несколькими DS18B20, цифровыми датчиками температуры, с Arduino Взаимодействие с несколькими DS18B20, цифровыми датчиками температуры, с Arduino

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

Это может показаться пугающим, но, прежде чем углубляться в это руководство, вы должны быть знакомы с основами работы с однопроводными датчиками температуры DS18B20. Если вы не знакомы с ними, посмотрите следующую статью:

А теперь, без дальнейших задержек, давайте подключим датчики DS18B20 к нашей плате Arduino.

Подключение нескольких датчиков DS18B20 к Arduino

Подключение довольно простое.

Начните с подключения всех датчиков DS18B20 параллельно, то есть объединения всех выводов VDD, выводов GND и сигнальных выводов. Затем подключите шину VDD к выходу 5V на Arduino, GND к выводу земли Arduino, и подключите сигнальные выводы к цифровому выводу 2 на Arduino.

Затем, чтобы обеспечить стабильную передачу данных, вам нужно добавить один подтягивающий резистор 4,7 кОм для всей шины между сигнальными выводами и выводами питания (внутренние подтягивающие резисторы на ардуино не работают).

Рисунок 1 Подключение нескольких датчиков температуры DS18B20 с Arduino Рисунок 1 – Подключение нескольких датчиков температуры DS18B20 с Arduino

Установка библиотеки для DS18B20

Протокол Dallas 1-Wire несколько сложен и требует много кода для парсинга связи. Чтобы скрыть эту ненужную сложность, мы установим библиотеку DallasTemperature.h, чтобы мы могли выполнять простые команды для получения показаний температуры от датчика.

Чтобы установить библиотеку, перейдите в раздел «Скетч»→ «Подключить библиотеку» → «Управление библиотеками…». Подождите, пока менеджер библиотеки загрузит индекс библиотек и обновит список установленных библиотек.

Рисунок 2 Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE Рисунок 2 – Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE

Чтобы отфильтровать результаты поиска, введите « ds18b20 ». Там должна быть пара записей. Ищите DallasTemperature от Miles Burton. Нажмите на эту запись, а затем выберите Установка.

Рисунок 3 Установка библиотеки DallasTemperature в Arduino IDE Рисунок 3 – Установка библиотеки DallasTemperature в Arduino IDE

Эта библиотека DallasTemperature является аппаратно-зависимой библиотекой, которая обрабатывает функции более низкого уровня. Она должна быть связана с библиотекой OneWire для связи с любым устройством 1-Wire, а не только с DS18B20. Установите и эту библиотеку.

Рисунок 4 Установка библиотеки OneWire в Arduino IDE Рисунок 4 – Установка библиотеки OneWire в Arduino IDE

Способ 1: чтение показаний DS18B20 по индексу

В этом методе библиотека Dallas Temperature при инициализации обнаруживает все датчики, использующие одну шину. Она рассматривает всю шину как массив датчиков и присваивает им индексы. Поэтому мы можем точно выбрать каждый датчик по его индексу и прочитать показания температуры.

Вывод вышеприведенного скетча выглядит так:

Рисунок 5 Вывод показаний нескольких датчиков DS18B20 индексным методом Рисунок 5 – Вывод показаний нескольких датчиков DS18B20 индексным методом

Объяснение кода

Скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки DallasTemperature .

В настроечной части кода мы сначала вызываем функцию begin() . Она инициализирует шину и обнаруживает все DS18B20, присутствующие на ней. Затем каждому датчику присваивается индекс и устанавливается разрешение в 12 бит.

Затем мы вызываем функцию getDeviceCount() , чтобы получить количество устройств, найденных на шине.

В циклической части кода мы используем функцию requestTemperatures() , чтобы отправить команду всем датчикам для преобразования температуры.

Теперь, используя простой цикл for(int i = 0; i < deviceCount; i++) , мы можем перебирать массив датчиков и считывать температуру DS18B20 по индексу i , просто вызывая getTempCByIndex(i) .

Способ 2: чтение датчика DS18B20 по адресу

Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.

Поиск адресов датчиков DS18B20s на шине

Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.

Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.

Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:

Рисунок 6 Нахождение адресов 1-Wire всех датчиков DS18B20 на шине Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине

Скопируйте все адреса, так как они нам понадобятся в следующем скетче.

Чтение показаний датчиков DS18B20 по адресу

Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.

Вывод вышеприведенного эскиза выглядит так

Рисунок 7 Вывод показаний нескольких датчиков DS18B20 методом адреса Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса

Объяснение кода

Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки DallasTemperature .

Далее мы вводим адреса, которые были найдены ранее для каждого датчика температуры. В нашем случае имеем следующее.

Во фрагменте настройки мы инициализируем библиотеку путем вызова функции begin() и инициализируем последовательную связь с ПК.

В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию requestTemperatures() .

Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию printTemperature(DeviceAddress deviceAddress) , для которой deviceAddress передается в качестве параметра.

Вышеприведенная функция просто вызывает библиотечные функции getTempC(deviceAddress) для отображения температуры в градусах Цельсия и DallasTemperature::toFahrenheit() для отображения температуры в градусах Фаренгейта.

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.

Ясен пень тоже самое, но без функций и лишних печатей. Вы этим уроком что хотели преподнести? Как функции работают или как датчики подключать. Уроки для начинающих? Надо думать как начинающий. Нахрена туда пихать лишнее. Кое как разобрался в вашей писанине. Проще надо быть и люди потянутся.

Что именно усложнено? Какие циклы?
Вы переписали всё то же самое, но без отдельной функции печати температуры в градусах Цельсия и Фаренгейта с символами градусов ‘°’.

Трындец всё как сложно запутываете нет чтобы тремя простыми словами нет надо циклы мутить запутанные.

#include <onewire.h>
#include <dallastemperature.h>
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
<
Serial.begin(115200);
sensors.begin();
>

void loop(void)
<
sensors.requestTemperatures();
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor1));
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor2));
Serial.print(«температура»);
Serial.print(sensors.getTempC(sensor3));
delay(1000);
>

И всё. Чё усложнять?

Здравствуйте. Подскажите, пожалуйста, в каком порядке датчикам присваиваются индексы? Могут ли одни и те же датчики получать разные индексы? Спасибо.

Похожие публикации