Ethernet shield vs DS18b20

ratman
Offline
Зарегистрирован: 11.10.2015
#include <OneWire.h>
/*
* Описание взаимодействия с цифровым датчиком ds18b20 
* Подключение ds18b20 к ардуино через пин 4  
*/
OneWire ds(4); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком
 
void setup(){
  Serial.begin(9600);
}
 
void loop(){
  // Определяем температуру от датчика DS18b20
  byte data[2]; // Место для значения температуры
  
  ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
  ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство 
  ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
  
  delay(1000); // Микросхема измеряет температуру, а мы ждем.  
  
  ds.reset(); // Теперь готовимся получить значение измеренной температуры
  ds.write(0xCC); 
  ds.write(0xBE); // Просим передать нам значение регистров со значением температуры
 
  // Получаем и считываем ответ
  data[0] = ds.read(); // Читаем младший байт значения температуры
  data[1] = ds.read(); // А теперь старший
 
  // Формируем итоговое значение: 
  //    - сперва "склеиваем" значение, 
  //    - затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию - это 0,0625)
  float temperature =  ((data[1] << 8) | data[0]) * 0.0625;
  
  // Выводим полученное значение температуры в монитор порта
  Serial.println(temperature);
   
}

Скетч откуда-то из примеров.

На голой ардуине уно работает со всеми датчиками, что есть на руках, при установке сетевого шилда показывает 0.00 градусов, датчик (другим скетчем) не определяется. Где я туплю?

sadman41
Offline
Зарегистрирован: 19.10.2016

В коде криминала не вижу (выводы SPI не занимаются). Что за шилд, работает ли он в принципе?

ratman
Offline
Зарегистрирован: 11.10.2015

sadman41 пишет:
В коде криминала не вижу (выводы SPI не занимаются). Что за шилд, работает ли он в принципе?
Прошу прощения, это я баран. На 4-м пине SD-карта сидит. Распаяная на шилде. Вообще, глупость, конечно, отрабатывать на шилде w5100, а потом перетаскивать на модуль w5500, но с вариантами пока туго.

Ладно... Тогда, чтобы два раза не вставать, как цап обрезать с 12 бит по умолчанию до 9-и? Пол-градуса мне за глаза. Точнее, где почитать про это?

sadman41
Offline
Зарегистрирован: 19.10.2016

В последних релизах IDE поставляется библиотека Ethernet v2.0, она сама определяет какой чип стоит - W5100/W5200/W5500.

Чей ЦАП обрезать? Если речь про DS-ку, то команда конфигурирования даётся ему и в ней определяется - с какой точностью конверсию осуществлять.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

ratman пишет:

 чтобы два раза не вставать, как цап обрезать с 12 бит по умолчанию до 9-и? Пол-градуса мне за глаза. Точнее, где почитать про это?

Какой ЦАП?

ratman
Offline
Зарегистрирован: 11.10.2015

asam пишет:
Какой ЦАП?

АЦП, конечно. Который в DS18b20. Мне не надо 12 бит, мне 9 хватит.

sadman41
Offline
Зарегистрирован: 19.10.2016

http://avr.ru/int/Files/Datasheet/ds18b20.pdf -> ^F Регистр конфигурации