Library for reading data from the RHT03 / DHT22 digital humidity & temperature sensor.

Dependents:   Pachube-v2_DHT22 DHT_TEST2 DHT_CANSAT Projeto_Monit_Remoto ... more

DHT22.cpp

Committer:
Julepalme
Date:
2011-10-27
Revision:
0:7fd3ff04ae95

File content as of revision 0:7fd3ff04ae95:

#include "DHT22.h"


DHT22::DHT22(PinName pin) {
    _data_pin = pin;
}

int DHT22::getTemperature() {
    return _temperature;
}

int DHT22::getHumidity() {
    return _humidity;
}

bool DHT22::sample() {
    DigitalInOut DHT22(_data_pin);
    int dht22_dat [5];
    DHT22.output();
    DHT22.write(0);
    wait_ms(18);
    DHT22.write(1);
    DHT22.input();
    wait_us(40);
    wait_us(80);
    int i,j,result=0;
    for (i=0; i<5; i++) {
        result=0;
        for (j=0; j<8; j++) {
            while (DHT22);
            while (!DHT22);
            wait_us(50);
            int p;
            p=DHT22;
            p=p <<(7-j);
            result=result|p;
        }
        dht22_dat[i] = result;
    }
    int dht22_check_sum;
    dht22_check_sum=dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
    dht22_check_sum= dht22_check_sum%256;
    if (dht22_check_sum==dht22_dat[4]) {
        _humidity=dht22_dat[0]*256+dht22_dat[1];
        _temperature=dht22_dat[2]*256+dht22_dat[3];
        return true;
    }
    return false;
}