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