#include <OneWire.h>
float dallas(int x,byte start){
OneWire ds(x);
byte i;
byte data[2];
int16_t result;
float temperature;
do{
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
for (int i = 0; i < 2; i++) data[i] = ds.read();
result=(data[1]<<8) |data[0];
// Here you could print out the received bytes as binary, as requested in my comment:
// Serial.println(result, BIN);
int16_t whole_degree = (result & 0x07FF) >> 4; // cut out sign bits and shift
temperature = whole_degree + 0.5*((data[0]&0x8)>>3) + 0.25*((data[0]&0x4)>>2) + 0.125*((data[0]&0x2)>>1) + 0.625*(data[0]&0x1);
if (data[1]&128) temperature*=-1;
ds.reset();
ds.write(0xCC);
ds.write(0x44, 1);
if (start) delay(1000);
} while (start--);
return temperature;
}
void setup(){
//Adding Serial.begin(9600); for printing the received bytes here
Serial.begin(9600);
dallas(A0,1);
}
void loop(){
float currentTemp = dallas(A0,0);
Serial.println(currentTemp);
}