Зависание arduino uno

А в чём смысл подключать питание термодатчика так, как вы это сделали? Как думаете строка 46 у вас работает?
И что в строке 52?

Вот не зря я библами для Далласа никогда не пользовался))
Скачал первую попавшуюся Dallas Temperature.h, глянул, а там


  switch (*bitResolution)
	  {
	    case 9:
	      delay(94);
	      break;
	    case 10:
	      delay(188);
	      break;
	    case 11:
	      delay(375);
	      break;
	    case 12:
	    default:
	      delay(750);
	      break;
	  }

А что?

delay(), как бы…

В строке 46 установка разрешения для работы с датчиком ds18b20 (так сказано в документации)
Строка 52 нужна для работы с i2c дисплеем, я его отключил, так как думал, что проблема в нём. Забыл удалить эту строку из кода

Не думаю, что это проблема, поскольку данная функция выполняется в блоке void setup()

Ну так нужно выждать время, пока идёт преобразование. Вот они и ждут

А в документации написано, питание на датчик в этот момент нужно подать?

А строка 104?

Таким образом в функции реализовано чтение температуры

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

Так а я про что? 750мс задержка - можно в картишки перекинуться успеть…

Кстати, она нужна потому, что время измерения температуры у этого датчика может занять до 750 мс

То есть надо ТУПО висеть в это время ???

2 лайка

Вот же упорный)))

Да ладно, для большинства ванильных ардуинщиков это не проблема

1 лайк

А, ну так бы и сказали, что вам не важно в каком разрешении работает датчик.

Пример работы с ds18b20 без библиотек и без блокировки

https://forum.arduino.ru/t/rabota-s-datchikom-temperatury-ds18b20

1 лайк

Если вы нашли delay, то почему пропустили setWaitForConversion?

void DallasTemperature::setWaitForConversion(bool flag)
{
	waitForConversion = flag;
}

Возможно чего и не понял, объясните пжлст