Etienne Charbonnier
/
plant_monitoring
Plant Monitoring CS
Diff: DHT22.cpp
- Revision:
- 59:169324c8e604
diff -r 8d4bde75ebb9 -r 169324c8e604 DHT22.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT22.cpp Wed Mar 25 15:46:56 2020 +0000 @@ -0,0 +1,49 @@ +#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; +}