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@0:7fd3ff04ae95, 2011-10-27 (annotated)
- Committer:
- Julepalme
- Date:
- Thu Oct 27 15:11:06 2011 +0000
- Revision:
- 0:7fd3ff04ae95
First Draft
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Julepalme | 0:7fd3ff04ae95 | 1 | #include "DHT22.h" |
Julepalme | 0:7fd3ff04ae95 | 2 | |
Julepalme | 0:7fd3ff04ae95 | 3 | |
Julepalme | 0:7fd3ff04ae95 | 4 | DHT22::DHT22(PinName pin) { |
Julepalme | 0:7fd3ff04ae95 | 5 | _data_pin = pin; |
Julepalme | 0:7fd3ff04ae95 | 6 | } |
Julepalme | 0:7fd3ff04ae95 | 7 | |
Julepalme | 0:7fd3ff04ae95 | 8 | int DHT22::getTemperature() { |
Julepalme | 0:7fd3ff04ae95 | 9 | return _temperature; |
Julepalme | 0:7fd3ff04ae95 | 10 | } |
Julepalme | 0:7fd3ff04ae95 | 11 | |
Julepalme | 0:7fd3ff04ae95 | 12 | int DHT22::getHumidity() { |
Julepalme | 0:7fd3ff04ae95 | 13 | return _humidity; |
Julepalme | 0:7fd3ff04ae95 | 14 | } |
Julepalme | 0:7fd3ff04ae95 | 15 | |
Julepalme | 0:7fd3ff04ae95 | 16 | bool DHT22::sample() { |
Julepalme | 0:7fd3ff04ae95 | 17 | DigitalInOut DHT22(_data_pin); |
Julepalme | 0:7fd3ff04ae95 | 18 | int dht22_dat [5]; |
Julepalme | 0:7fd3ff04ae95 | 19 | DHT22.output(); |
Julepalme | 0:7fd3ff04ae95 | 20 | DHT22.write(0); |
Julepalme | 0:7fd3ff04ae95 | 21 | wait_ms(18); |
Julepalme | 0:7fd3ff04ae95 | 22 | DHT22.write(1); |
Julepalme | 0:7fd3ff04ae95 | 23 | DHT22.input(); |
Julepalme | 0:7fd3ff04ae95 | 24 | wait_us(40); |
Julepalme | 0:7fd3ff04ae95 | 25 | wait_us(80); |
Julepalme | 0:7fd3ff04ae95 | 26 | int i,j,result=0; |
Julepalme | 0:7fd3ff04ae95 | 27 | for (i=0; i<5; i++) { |
Julepalme | 0:7fd3ff04ae95 | 28 | result=0; |
Julepalme | 0:7fd3ff04ae95 | 29 | for (j=0; j<8; j++) { |
Julepalme | 0:7fd3ff04ae95 | 30 | while (DHT22); |
Julepalme | 0:7fd3ff04ae95 | 31 | while (!DHT22); |
Julepalme | 0:7fd3ff04ae95 | 32 | wait_us(50); |
Julepalme | 0:7fd3ff04ae95 | 33 | int p; |
Julepalme | 0:7fd3ff04ae95 | 34 | p=DHT22; |
Julepalme | 0:7fd3ff04ae95 | 35 | p=p <<(7-j); |
Julepalme | 0:7fd3ff04ae95 | 36 | result=result|p; |
Julepalme | 0:7fd3ff04ae95 | 37 | } |
Julepalme | 0:7fd3ff04ae95 | 38 | dht22_dat[i] = result; |
Julepalme | 0:7fd3ff04ae95 | 39 | } |
Julepalme | 0:7fd3ff04ae95 | 40 | int dht22_check_sum; |
Julepalme | 0:7fd3ff04ae95 | 41 | dht22_check_sum=dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3]; |
Julepalme | 0:7fd3ff04ae95 | 42 | dht22_check_sum= dht22_check_sum%256; |
Julepalme | 0:7fd3ff04ae95 | 43 | if (dht22_check_sum==dht22_dat[4]) { |
Julepalme | 0:7fd3ff04ae95 | 44 | _humidity=dht22_dat[0]*256+dht22_dat[1]; |
Julepalme | 0:7fd3ff04ae95 | 45 | _temperature=dht22_dat[2]*256+dht22_dat[3]; |
Julepalme | 0:7fd3ff04ae95 | 46 | return true; |
Julepalme | 0:7fd3ff04ae95 | 47 | } |
Julepalme | 0:7fd3ff04ae95 | 48 | return false; |
Julepalme | 0:7fd3ff04ae95 | 49 | } |