Skip to content

Commit fa12974

Browse files
Merge pull request #95 from fanthos/master
Add support for DHT12.
2 parents dff6509 + 5211b2d commit fa12974

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

DHT.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ float DHT::readTemperature(bool S, bool force) {
3939
if (read(force)) {
4040
switch (_type) {
4141
case DHT11:
42+
case DHT12:
4243
f = data[2];
44+
f += (data[3] & 0x0f) * 0.1;
45+
if (data[2] & 0x80) {
46+
f *= -1;
47+
}
4348
if(S) {
4449
f = convertCtoF(f);
4550
}
@@ -73,7 +78,8 @@ float DHT::readHumidity(bool force) {
7378
if (read(force)) {
7479
switch (_type) {
7580
case DHT11:
76-
f = data[0];
81+
case DHT12:
82+
f = data[0] + data[1] * 0.1;
7783
break;
7884
case DHT22:
7985
case DHT21:

DHT.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ written by Adafruit Industries
3030

3131
// Define types of sensors.
3232
#define DHT11 11
33+
#define DHT12 12
3334
#define DHT22 22
3435
#define DHT21 21
3536
#define AM2301 21

DHT_U.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ void DHT_Unified::setName(sensor_t* sensor) {
3737
case DHT11:
3838
strncpy(sensor->name, "DHT11", sizeof(sensor->name) - 1);
3939
break;
40+
case DHT12:
41+
strncpy(sensor->name, "DHT12", sizeof(sensor->name) - 1);
42+
break;
4043
case DHT21:
4144
strncpy(sensor->name, "DHT21", sizeof(sensor->name) - 1);
4245
break;
@@ -57,6 +60,9 @@ void DHT_Unified::setMinDelay(sensor_t* sensor) {
5760
case DHT11:
5861
sensor->min_delay = 1000000L; // 1 second (in microseconds)
5962
break;
63+
case DHT12:
64+
sensor->min_delay = 2000000L; // 2 second (in microseconds)
65+
break;
6066
case DHT21:
6167
sensor->min_delay = 2000000L; // 2 seconds (in microseconds)
6268
break;
@@ -105,6 +111,11 @@ void DHT_Unified::Temperature::getSensor(sensor_t* sensor) {
105111
sensor->min_value = 0.0F;
106112
sensor->resolution = 2.0F;
107113
break;
114+
case DHT12:
115+
sensor->max_value = 60.0F;
116+
sensor->min_value = -20.0F;
117+
sensor->resolution = 0.5F;
118+
break;
108119
case DHT21:
109120
sensor->max_value = 80.0F;
110121
sensor->min_value = -40.0F;
@@ -159,6 +170,11 @@ void DHT_Unified::Humidity::getSensor(sensor_t* sensor) {
159170
sensor->min_value = 20.0F;
160171
sensor->resolution = 5.0F;
161172
break;
173+
case DHT12:
174+
sensor->max_value = 95.0F;
175+
sensor->min_value = 20.0F;
176+
sensor->resolution = 5.0F;
177+
break;
162178
case DHT21:
163179
sensor->max_value = 100.0F;
164180
sensor->min_value = 0.0F;

0 commit comments

Comments
 (0)