Ejemplo n.º 1
0
//boolean S == Scale.  True == Farenheit; False == Celcius
float DHT_ReadTemperature()
{
    bool S = false;
    float f;

    if (DHT_read()) {
        switch (_type) {
        case DHT11:
            f = data[2];
            if (S)
                f = DHT_ConvertCtoF(f);

            return f;
        case DHT22:
        case DHT21:
            f = data[2] & 0x7F;
            f *= 256;
            f += data[3];
            f /= 10;
            if (data[2] & 0x80)
                f *= -1;
            if (S)
                f = DHT_ConvertCtoF(f);

            return f;
        }
    }
    return NAN;
}
Ejemplo n.º 2
0
// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int DHT_Read22(dht_t *self)
{
        // READ VALUES
        int rv = DHT_read(self);
        if (rv != DHTLIB_OK)
    {
                self->humidity    = DHTLIB_INVALID_VALUE;  // invalid value, or is NaN prefered?
                self->temperature = DHTLIB_INVALID_VALUE;  // invalid value
                return rv;
        }

        // CONVERT AND STORE
        self->humidity    = WORD(self->_bits[0], self->_bits[1]) * 0.1;

        if (self->_bits[2] & 0x80) // negative temperature
        {
                        self->temperature = WORD(self->_bits[2]&0x7F, self->_bits[3]) * 0.1;
                        self->temperature *= -1.0;
        }
        else
        {
                        self->temperature = WORD(self->_bits[2], self->_bits[3]) * 0.1;
        }

        // TEST CHECKSUM
        uint8_t sum = self->_bits[0] + self->_bits[1] + self->_bits[2] + self->_bits[3];
        if (self->_bits[4] != sum) return DHTLIB_ERROR_CHECKSUM;

        return DHTLIB_OK;
}
Ejemplo n.º 3
0
float DHT_ReadHumidity(void)
{
    float f;
    if (DHT_read()) {
        switch (_type) {
        case DHT11:
            f = data[0];
            return f;
        case DHT22:
        case DHT21:
            f = data[0];
            f *= 256;
            f += data[1];
            f /= 10;
            return f;
        }
    }
    return NAN;
}
Ejemplo n.º 4
0
// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int DHT_Read11(dht_t *self)
{
        // READ VALUES
        int rv = DHT_read(self);
        if (rv != DHTLIB_OK)
    {
                self->humidity    = DHTLIB_INVALID_VALUE; // or is NaN prefered?
                self->temperature = DHTLIB_INVALID_VALUE;
                return rv;
        }

        // CONVERT AND STORE
        self->humidity    = self->_bits[0];  // bit[1] == 0;
        self->temperature = self->_bits[2];  // bits[3] == 0;

        // TEST CHECKSUM
        uint8_t sum = self->_bits[0] + self->_bits[2]; // bits[1] && bits[3] both 0
        if (self->_bits[4] != sum) return DHTLIB_ERROR_CHECKSUM;

        return DHTLIB_OK;
}