Ардуино и термодатчики DS18B20 на разных выводах
- Войдите на сайт для отправки комментариев
Вс, 04/11/2012 - 20:26
Здравствуйте форумчане. Подскажите, как написать скетч для Ардуино (Nano v3) к которой подключены два (и более)термодатчика DS18B20, при условии, что каждый датчик подключен к своему выводу на плате Ардуино.
А поискать здесь на форуме не пробовали?
Два onewire интерфейса, по одному датчику DS18B20 на каждый.
Пробовал, неоднократно, и не только здесь.
01#include <OneWire.h>0203// DS18S20 Temperature chip i/o04OneWire DS18B20_1(2);05OneWire DS18B20_2(3);......
А вот это попробую, спасибо.
Если не сложно, как это работает? Адреса датчиков не нужнопрописывать?
Можно более разширенный пример привести? Спасибо.
Как это работает я не знаю (не помню), но думаю работает. Иначе бы я задавал вопросы ещё. Попробуйте.
Вот ещё нашёл в старых записях. Надо экспериментировать. IDE Arduino 1.0.5
/* Эта программа выводит в СОМ порт коды 1-Wire устройств подключенных к выводу 11, их шестибайтовые уникальные адреса, контрольные суммы. Первый выводимый байт - код семейства устройства, шесть следующих байт - уникальный адрес устройсва, последний байт - СRC контрольная сумма. */ #include <OneWire.h> // подключение библиотеки OneWire OneWire ds(11); // назначение вывода D11 для работы с OneWire устройствами void setup(void) { Serial.begin(9600); // настройка СОМ порта на скорость 9600 } void loop(void) { // основная программа byte addr[8]; // определение массива addr размером в восемь байт while(ds.search(addr)) // поиск следующего устройства 1-Wire { for(int i = 0; i < 8; i++) // цикл чтения адреса (восемь проходов по переменной i) {Serial.print(addr[i], HEX); // вывод в СОМ порт (печать) кода семейства, адреса, CRC суммы Serial.print(" "); // печать разделяющего символа } Serial.println(); // переход на новую строку } ds.reset_search(); // сброс поиска устройств 1-Wire Serial.println("********************"); // печать разделительной строки delay (5000); // пауза } /* Основы использования команд библиотеки OneWire - OneWire myWire (PIN) Создать OneWire объект на определённом выводе (PINе). Даже если подключить множество 1-Wire устройств на этот же вывод, то подключая устройства к другим выводам (создавая малые группы) можно уменьшить проблемы проводного соединения. Можно создать несколько объектов OneWire, по одному для каждого вывода. - myWire.search (addrArray) Поиск следующего устройства. addrArray это 8-ми байтный массив. Если устройство найдено, то addrArray заполняется его адресом и возвращается True (истинно). Если больше устройств не найдено или не найдено ни одного, то возвращается False (ложь). - myWire.reset_search () Сброс поиска устройств. <----- Тут хотелось бы узнать мнение специалистов. - myWire.reset () Сброс 1-Wire шины. Как правило это необходимо перед обращением к любому устройству. - myWire.select (addrArray) Выбор устройства по его адресу. После сброса это необходимо, чтобы выбрать конкретное устройство для использования. Тогда весь обмен будет вестись с этим устройством, пока не будет сделан следующий сброс. - myWire.skip () Пропустить выбор устройства. Это работает только если у Вас одно устройство. Даёт возможность избежать поиск. Используя эту команду можно получить быстрый доступ к устройству. - myWire.write (число) Запись байта. - myWire.write (число, 1) Запись байта и подача питания на информационный вывод. Это используется в случае применения режима "паразитного питания". - myWire.read () Чтение байта. - myWire.crc8 (dataArray, длина) Вычисляется контрольная сумма CRC для массива данных dataArray. */Не утверждаю, что правильно интерпретирую работу команд библиотеки.