ds18b20

YUSUP
Offline
Зарегистрирован: 10.08.2016

здравствуйте пожалуйста помогите подключить несколько датчиков ds18d20

я вообще не разбираюсь пытался методом тыка исправить скетчь у меня не получается вот скетч пожалуйста исправте если можно ее

 

https://yadi.sk/d/tv4O0og13P2PbK

YUSUP
Offline
Зарегистрирован: 10.08.2016

несколько датчиков к разным пинам обезательно

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Там подключено несколько датчиков (7) к разным пинам.

Чего исправлять то надо ?

YUSUP
Offline
Зарегистрирован: 10.08.2016

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

когда подкючаю к 52 показывает а когда подключаю к 50 и любому другому не показывает 

YUSUP
Offline
Зарегистрирован: 10.08.2016

может дело в getSensors();

YUSUP
Offline
Зарегистрирован: 10.08.2016
//----------------------------------------------------------------
 
void getSensors(){
  DateTime now = RTC.now();
  currentTime = millis();  // считываем время, прошедшее с момента запуска программы
  if (currentTime - windowStartTime > WindowSize) { //время для перещелкивания периода окна
    sensors1.requestTemperatures();
  
  }
 
}
 
 
//----------------------------------------------------------------
xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

эта функция вообще не очем

посмотрел и ох...

дефайны

#define ds18b20_1  52         //пин термометров
#define ds18b20_2  50
#define ds18b20_3  48  
#define ds18b20_4  46
#define ds18b20_5  44
#define ds18b20_6  42
#define ds18b20_7  40

хорошо, только дальше они не где не используются.

объявы датчиков

OneWire oneWire1(52);
OneWire oneWire2(50);
OneWire oneWire3(48);
OneWire oneWire4(46);
OneWire oneWire5(44);
OneWire oneWire6(42);
OneWire oneWire7(40);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
DallasTemperature sensors3(&oneWire3);
DallasTemperature sensors4(&oneWire4);
DallasTemperature sensors5(&oneWire5);
DallasTemperature sensors6(&oneWire6);
DallasTemperature sensors7(&oneWire7);

тоже ок, но дальше бредятина в функции для каждого сенсора

  tempB2 = sensors2.getTempCByIndex(1);
  tempB3 = sensors3.getTempCByIndex(2);
....
  tempB7 = sensors7.getTempCByIndex(6);

понятно что код работает нормально только для первого дотчика

  tempB1 = sensors1.getTempCByIndex(0);

 

во всех функциях попробуйте поставить getTempCByIndex(0);

 

YUSUP
Offline
Зарегистрирован: 10.08.2016

спасибо отромное 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Я  не думаю что заработало, по моему не хватает запроса на выдачу температуры с каждого датчика

опять есть только с первого

sensors1.requestTemperatures();

в коде "солянкка" и четко просматривается желание повесить все 7 датчиков на одну линию....

ну, да ладно, пожалуйста.

YUSUP
Offline
Зарегистрирован: 10.08.2016

темпетатуру показывает а термостат я не проверял что нужно делать что бы все работала?