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

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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DHT22.cpp Source File

DHT22.cpp

00001 #include "DHT22.h"
00002 
00003 
00004 DHT22::DHT22(PinName pin) {
00005     _data_pin = pin;
00006 }
00007 
00008 int DHT22::getTemperature() {
00009     return _temperature;
00010 }
00011 
00012 int DHT22::getHumidity() {
00013     return _humidity;
00014 }
00015 
00016 bool DHT22::sample() {
00017     DigitalInOut DHT22(_data_pin);
00018     int dht22_dat [5];
00019     DHT22.output();
00020     DHT22.write(0);
00021     wait_ms(18);
00022     DHT22.write(1);
00023     DHT22.input();
00024     wait_us(40);
00025     wait_us(80);
00026     int i,j,result=0;
00027     for (i=0; i<5; i++) {
00028         result=0;
00029         for (j=0; j<8; j++) {
00030             while (DHT22);
00031             while (!DHT22);
00032             wait_us(50);
00033             int p;
00034             p=DHT22;
00035             p=p <<(7-j);
00036             result=result|p;
00037         }
00038         dht22_dat[i] = result;
00039     }
00040     int dht22_check_sum;
00041     dht22_check_sum=dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
00042     dht22_check_sum= dht22_check_sum%256;
00043     if (dht22_check_sum==dht22_dat[4]) {
00044         _humidity=dht22_dat[0]*256+dht22_dat[1];
00045         _temperature=dht22_dat[2]*256+dht22_dat[3];
00046         return true;
00047     }
00048     return false;
00049 }