This is a summary of the I2C operations that are done to use the DHT20. 8-bit I2C address is 0x70. After power on, wait 100ms To start the measurement, send the three bytes 0xAC, 0x33, 0x00 Delay 80ms In a loop, read one byte from the device to get the Status bytes. Test bit 7 of the Status bytes. If it's a 0, the conversion is complete and go on the the next step. If it is a 1, the conversion is still in progress, and go back and read the Status byte again. Read seven bytes of data from the device. First one is the Status byte which can now be ignored. The next five (buffer elements 1 through 5) are the temperature/humidity data, the 7th is a CRC byte. Assemble the temperature into a 32-bit variable: Bits 3:0 of buffer[3] -> temperature bits 19:16 Bits 7:0 of buffer[4] -> temperature bits 15:8 Bits 7:0 of buffer[5] -> temperature bits 7:0 Copy temperature to a float variable ("tf"), and do the calculation Celcius = (tf * 200) / 1048576 - 50; Assemble the humidity into a 32-bit variable: Bits 7:0 of buffer[1] -> humidity bits 19:12 Bits 7:0 of buffer[2] -> humidity bits 11:4 Bits 7:4 of buffer[3] -> humidity bits 3:0 Copy humidity to a float variable ("hf") and do the calculation Humidity = (hf * 100) / 1048576;