DHT22 library, based on Simon Cooksey's. Improved with some error checking and more rigid timing (interrupts off).

Fork of lib_dht22 by Jodie Perry

Committer:
co657_frmb
Date:
Thu Nov 03 11:12:51 2016 +0000
Revision:
4:30a98da09c59
Parent:
3:40df3c72813f
turned off debugging

Who changed what in which revision?

UserRevisionLine numberNew contents of line
co657_sjc80 0:257ba13e416e 1 /*
co657_sjc80 0:257ba13e416e 2 * (C) The University of Kent and Simon Cooksey 2015.
co657_sjc80 0:257ba13e416e 3 */
co657_sjc80 0:257ba13e416e 4
co657_sjc80 0:257ba13e416e 5 #ifndef __DHT22_h_
co657_sjc80 0:257ba13e416e 6 #define __DHT22_h_
co657_sjc80 0:257ba13e416e 7
co657_sjc80 0:257ba13e416e 8 // We'll pick a point to decide if a signal is 1 or 0 from.
co657_frmb 3:40df3c72813f 9 #define DHT22_SIGNAL_HIGH_LOW_BOUNDARY 40 // uS
co657_frmb 3:40df3c72813f 10 #define DHT22_START_BIT_TIME 1000 // uS
co657_sjc80 0:257ba13e416e 11 #define DHT22_START_BIT_RESPONSE 80 // uS
co657_sjc80 0:257ba13e416e 12
co657_frmb 4:30a98da09c59 13 #undef DEBUG_DHT22
co657_sjc80 0:257ba13e416e 14
co657_sjc80 0:257ba13e416e 15 typedef struct {
co657_sjc80 0:257ba13e416e 16 int temp;
co657_sjc80 0:257ba13e416e 17 int humidity;
co657_sjc80 0:257ba13e416e 18 uint8_t checksum;
co657_frmb 3:40df3c72813f 19 char dummy[3];
co657_sjc80 0:257ba13e416e 20 } DHT22_data_t;
co657_sjc80 0:257ba13e416e 21
co657_sjc80 0:257ba13e416e 22 class DHT22 {
co657_sjc80 0:257ba13e416e 23 public:
co657_frmb 4:30a98da09c59 24 DHT22 (PinName pin) : dht22_s (pin)
co657_frmb 4:30a98da09c59 25 #ifdef DEBUG_DHT22
co657_frmb 4:30a98da09c59 26 , debug (PTB19) /* GROT! -- hardwired for K64F */
co657_frmb 4:30a98da09c59 27 #endif
co657_frmb 3:40df3c72813f 28 {
co657_frmb 3:40df3c72813f 29 dht22_s.input ();
co657_frmb 3:40df3c72813f 30 isinput = 1;
co657_frmb 3:40df3c72813f 31 }
co657_frmb 3:40df3c72813f 32
co657_frmb 3:40df3c72813f 33 int read (DHT22_data_t *ptr);
co657_sjc80 0:257ba13e416e 34 private:
co657_sjc80 0:257ba13e416e 35 DigitalInOut dht22_s;
co657_frmb 3:40df3c72813f 36 int isinput;
co657_frmb 4:30a98da09c59 37 #ifdef DEBUG_DHT22
co657_frmb 3:40df3c72813f 38 DigitalOut debug;
co657_frmb 4:30a98da09c59 39 #endif
co657_sjc80 0:257ba13e416e 40
co657_frmb 3:40df3c72813f 41 void wait_2us (void);
co657_frmb 3:40df3c72813f 42 void setinput (void);
co657_frmb 3:40df3c72813f 43 void setoutput (void);
co657_frmb 3:40df3c72813f 44
co657_frmb 3:40df3c72813f 45 int wait_for_level (int lvl, const int max);
co657_frmb 3:40df3c72813f 46 void send_start (void);
co657_frmb 3:40df3c72813f 47 int wait_start (void);
co657_frmb 3:40df3c72813f 48 int read_byte (void);
co657_sjc80 0:257ba13e416e 49 };
co657_sjc80 0:257ba13e416e 50
co657_sjc80 0:257ba13e416e 51 #endif // __DHT22_h_