Ардуино и термодатчики DS18B20 на разных выводах

gena
Offline
Зарегистрирован: 04.11.2012

Здравствуйте форумчане. Подскажите, как написать скетч для Ардуино (Nano v3) к которой подключены два (и более)термодатчика DS18B20, при условии, что каждый датчик подключен к своему выводу на плате Ардуино.

maksim
Offline
Зарегистрирован: 12.02.2012

А поискать здесь на форуме не пробовали?

 

Два onewire интерфейса, по одному датчику DS18B20 на каждый.

 

 

gena
Offline
Зарегистрирован: 04.11.2012

  Пробовал, неоднократно, и не только здесь.

 

maksim
Offline
Зарегистрирован: 12.02.2012

 

#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire DS18B20_1(2);
OneWire DS18B20_2(3);
OneWire DS18B20_3(4);
OneWire DS18B20_4(5);
OneWire DS18B20_5(6);

.....

 

gena
Offline
Зарегистрирован: 04.11.2012

 

01 #include <OneWire.h>
02  
03 // DS18S20 Temperature chip i/o
04 OneWire DS18B20_1(2);
05 OneWire DS18B20_2(3);

 

......

А вот это попробую, спасибо.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Если не сложно,  как это работает? Адреса датчиков не нужнопрописывать?

Можно более разширенный пример привести? Спасибо.

gena
Offline
Зарегистрирован: 04.11.2012

  Как это работает я не знаю (не помню), но думаю работает. Иначе бы я задавал вопросы ещё. Попробуйте.

gena
Offline
Зарегистрирован: 04.11.2012

  Вот ещё нашёл в старых записях. Надо экспериментировать. 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.
   */
 

  Не утверждаю, что правильно интерпретирую работу команд библиотеки.