Ответ в теме: D18B20, Arduino, MODBUS, Master SCADA

Главная Форумы Конструкторское бюро Автоматизация D18B20, Arduino, MODBUS, Master SCADA Ответ в теме: D18B20, Arduino, MODBUS, Master SCADA

#15628
Счастливчик
Хранитель
  • Ответов: 2655
@wpadm

Тут выложил скетч по датчикам.

Спасибо! Да, именно так и планировал. Только датчики на разных пинах, чтобы с адресами не заморачиваться.

Вот так видел себе. Это не финальный код, а так – основа, ее еще допиливать надо немного.

//***Функция считывания температуры c Далласов*****
void dallRead(unsigned long interval){
  static unsigned long prevTime = 0;
  if (millis() - prevTime > interval) { //Проверка заданного интервала
  static boolean flagDall = 0; //Признак операции
  prevTime = millis();
  flagDall =! flagDall; //Инверсия признака
  if (flagDall) {
    ds.reset();
    ds.write(0xCC); //Обращение ко всем датчикам
    ds.write(0x44); //Команда на конвертацию
    flagDallRead = 1; //Время возврата в секундах
  }
  else {
    byte i;
     int temp;
    for (i = 0; i < 3; i++){ //Перебор количества датчиков
     ds.reset();
     ds.select(addr);
     ds.write(0xBE); //Считывание значения с датчика
     temp = (ds.read() | ds.read()<<8); //Принимаем два байта температуры
     Temp = (float)temp / 16.0; 
     flagDallRead = 2; //Время возврата в секундах
     }
   }
  }
}

 

Хорошо живет на свете Винни-Пух...