#include <Wire.h>
#define DEV_ID 0x90 >> 1
void setup()
{
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(DEV_ID); // соединение с DS1621 (#0)
Wire.write(0xAC); // команда настройки конфигурации
Wire.write(0x02); // установка режима постоянных замеров температуры
Wire.beginTransmission(DEV_ID); // перезапуск устройства
Wire.write(0xEE); // запуск цикла замеров
Wire.endTransmission();
}
void loop()
{
int8_t firstByte;
int8_t secondByte;
float temp = 0;
delay(1000);
Wire.beginTransmission(DEV_ID);
Wire.write(0xAA); // команда чтения
Wire.endTransmission();
Wire.requestFrom(DEV_ID, 2); // запрос двух байт для точности 0.5
firstByte = Wire.read();
secondByte = Wire.read();
temp = firstByte;
if (secondByte) // если второй байт установлен, добавляем 0.5 к первому байту
temp += 0.5;
Serial.println(temp);
}