Skip to content

Commit

Permalink
update library.json, #pragma, license, minor edits (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
RobTillaart authored Dec 16, 2021
1 parent b6d6a8c commit d1ab2e6
Show file tree
Hide file tree
Showing 17 changed files with 251 additions and 229 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2011-2021 Rob Tillaart
Copyright (c) 2011-2022 Rob Tillaart

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
26 changes: 21 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,37 @@ See examples
==> See DHTStable library for latest stable version for all platforms.

- version 0.1.13 is the last stable version for both AVR and ARM
- version 0.1.14 and up are not compatible anymore with pre 1.0 Arduino.
These have breaking changes wrt ARM based arduino's e.g DUE.
- version 0.1.14 and up are not compatible any more with pre 1.0 Arduino.
These have breaking changes wrt ARM based Arduino's e.g DUE.
- version 0.1.15 is stable version for AVR only
- version 0.1.16 and 0.1.17 have breaking changes for DHT11
- version 0.1.18 works again for DHT11 (avr only)
- version 0.1.19 fixed masking bug DHT11 (avr only)
- version 0.1.18 works again for DHT11 (AVR only)
- version 0.1.19 fixed masking bug DHT11 (AVR only)
- version 0.1.20 Reduce footprint (34 bytes) by using int8_t as error codes. (thanks to chaveiro)
- version 0.1.21 replace delay with delayMicroseconds() + small fix (thanks to codingforfun)
- version 0.1.22 undo delayMicroseconds() for wakeups larger than 8
- version 0.1.23 fix https://github.com/RobTillaart/Arduino/issues/31
- version 0.1.24 fix https://github.com/RobTillaart/Arduino/issues/33
- version 0.1.25 fix https://github.com/RobTillaart/Arduino/issues/80
- version 0.1.26 Explicit support for AM23XX series and DHT12
- version 0.1.27 added _disableIRQ flag
- version 0.1.27 added \_disableIRQ flag
- version 0.1.28 refactor
- version 0.1.29 fix negative temperature DHT12 - issue #111
- version 0.1.30 own repo version
- version 0.1.31 fix negative temperature DHT22 (code from DHTNew)
- version 0.1.32 fix negative temperature DHT22 again (code from DHTNew)
- version 0.1.33 fix #6 T-GO signal in handshake. (needed for long wires)
- version 0.1.34 fix negative temperature DHT22 again (code from DHTNew)
- version 0.1.35 update license, library.json, #pragma once, minor edits


## Future

- updates only on request basis (bugs)
- improve documentation
- improve unit tests
- constants
- move non public part of #defines to .cpp
- separate history versions releasenotes file ?
-

117 changes: 72 additions & 45 deletions dht.cpp
Original file line number Diff line number Diff line change
@@ -1,56 +1,80 @@
//
// FILE: dht.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.1.34
// VERSION: 0.1.35
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino, AVR optimized
// URL: https://github.com/RobTillaart/DHTlib
// http://arduino.cc/playground/Main/DHTLib
//
// HISTORY:
// 0.1.34 2021-11-13 fix negative temperature DHT22 again (code from DHTNew)
// 0.1.33 2021-02-16 fix #6 T-GO signal in handshake. (needed for long wires)
// 0.1.32 2021-02-01 fix negative temperature DHT22 again (code from DHTNew)
// 0.1.31 2020-12-15 fix negative temperature DHT22 (code from DHTNew)
// 0.1.30 2020-06-30 own repo;
// 0.1.29 2018-09-02 fix negative temperature DHT12 - issue #111
// 0.1.28 2018-04-03 refactor
// 0.1.27 2018-03-26 added _disableIRQ flag
// 0.1.26 2017-12-12 explicit support for AM23XX series and DHT12
// 0.1.25 2017-09-20 FIX https://github.com/RobTillaart/Arduino/issues/80
// 0.1.24 2017-07-27 FIX https://github.com/RobTillaart/Arduino/issues/33 double -> float
// 0.1.23 2017-07-24 FIX https://github.com/RobTillaart/Arduino/issues/31
// 0.1.22 undo delayMicroseconds() for wakeups larger than 8
// 0.1.21 replace delay with delayMicroseconds() + small fix
// 0.1.20 Reduce footprint by using uint8_t as error codes. (thanks to chaveiro)
// 0.1.19 masking error for DHT11 - FIXED (thanks Richard for noticing)
// 0.1.18 version 1.16/17 broke the DHT11 - FIXED
// 0.1.17 replaced micros() with adaptive loopcount
// removed DHTLIB_INVALID_VALUE
// added DHTLIB_ERROR_CONNECT
// added DHTLIB_ERROR_ACK_L DHTLIB_ERROR_ACK_H
// 0.1.16 masking unused bits (less errors); refactored bits[]
// 0.1.15 reduced # micros calls 2->1 in inner loop.
// 0.1.14 replace digital read with faster (~3x) code => more robust low MHz machines.
//
// 0.1.13 fix negative temperature
// 0.1.12 support DHT33 and DHT44 initial version
// 0.1.11 renamed DHTLIB_TIMEOUT
// 0.1.10 optimized faster WAKEUP + TIMEOUT
// 0.1.09 optimize size: timeout check + use of mask
// 0.1.08 added formula for timeout based upon clockspeed
// 0.1.07 added support for DHT21
// 0.1.06 minimize footprint (2012-12-27)
// 0.1.05 fixed negative temperature bug (thanks to Roseman)
// 0.1.04 improved readability of code using DHTLIB_OK in code
// 0.1.03 added error values for temp and humidity when read failed
// 0.1.02 added error codes
// 0.1.01 added support for Arduino 1.0, fixed typos (31/12/2011)
// 0.1.00 by Rob Tillaart (01/04/2011)
//
// HISTORY:
// 0.1.35 2021-12-16 update library.json, license, #pragma once,
// move private defines to .cpp file
// 0.1.34 2021-11-13 fix negative temperature DHT22 again (code from DHTNew)
// 0.1.33 2021-02-16 fix #6 T-GO signal in handshake. (needed for long wires)
// 0.1.32 2021-02-01 fix negative temperature DHT22 again (code from DHTNew)
// 0.1.31 2020-12-15 fix negative temperature DHT22 (code from DHTNew)
// 0.1.30 2020-06-30 own repo;
// 0.1.29 2018-09-02 fix negative temperature DHT12 - issue #111
// 0.1.28 2018-04-03 refactor
// 0.1.27 2018-03-26 added _disableIRQ flag
// 0.1.26 2017-12-12 explicit support for AM23XX series and DHT12
// 0.1.25 2017-09-20 FIX https://github.com/RobTillaart/Arduino/issues/80
// 0.1.24 2017-07-27 FIX https://github.com/RobTillaart/Arduino/issues/33 double -> float
// 0.1.23 2017-07-24 FIX https://github.com/RobTillaart/Arduino/issues/31
// 0.1.22 undo delayMicroseconds() for wakeups larger than 8
// 0.1.21 replace delay with delayMicroseconds() + small fix
// 0.1.20 Reduce footprint by using uint8_t as error codes. (thanks to chaveiro)
// 0.1.19 masking error for DHT11 - FIXED (thanks Richard for noticing)
// 0.1.18 version 1.16/17 broke the DHT11 - FIXED
// 0.1.17 replaced micros() with adaptive loopcount
// removed DHTLIB_INVALID_VALUE
// added DHTLIB_ERROR_CONNECT
// added DHTLIB_ERROR_ACK_L DHTLIB_ERROR_ACK_H
// 0.1.16 masking unused bits (less errors); refactored bits[]
// 0.1.15 reduced # micros calls 2->1 in inner loop.
// 0.1.14 replace digital read with faster (~3x) code => more robust low MHz machines.
//
// 0.1.13 fix negative temperature
// 0.1.12 support DHT33 and DHT44 initial version
// 0.1.11 renamed DHTLIB_TIMEOUT
// 0.1.10 optimized faster WAKEUP + TIMEOUT
// 0.1.09 optimize size: timeout check + use of mask
// 0.1.08 added formula for timeout based upon clockspeed
// 0.1.07 added support for DHT21
// 0.1.06 minimize footprint (2012-12-27)
// 0.1.05 fixed negative temperature bug (thanks to Roseman)
// 0.1.04 improved readability of code using DHTLIB_OK in code
// 0.1.03 added error values for temp and humidity when read failed
// 0.1.02 added error codes
// 0.1.01 added support for Arduino 1.0, fixed typos (31/12/2011)
// 0.1.00 by Rob Tillaart (01/04/2011)
//
// inspired by DHT11 library


#include "dht.h"


#define DHTLIB_DHT11_WAKEUP 18
#define DHTLIB_DHT_WAKEUP 1

#define DHTLIB_DHT11_LEADING_ZEROS 1
#define DHTLIB_DHT_LEADING_ZEROS 6


// max timeout is 100 microseconds.
// For a 16 MHz processor 100 microseconds is 1600 clock cycles
// loops using DHTLIB_TIMEOUT use at least 4 clock cycles
// so 100 us takes max 400 loops
// so by dividing F_CPU by 40000 we "fail" as fast as possible
#ifndef F_CPU
#define DHTLIB_TIMEOUT 1000 // should be approx. clock/40000
#else
#define DHTLIB_TIMEOUT (F_CPU/40000)
#endif


/////////////////////////////////////////////////////
//
// PUBLIC
Expand Down Expand Up @@ -80,6 +104,7 @@ int8_t dht::read11(uint8_t pin)
return result;
}


int8_t dht::read12(uint8_t pin)
{
// READ VALUES
Expand All @@ -104,6 +129,7 @@ int8_t dht::read12(uint8_t pin)
return result;
}


int8_t dht::read(uint8_t pin)
{
// READ VALUES
Expand Down Expand Up @@ -164,11 +190,11 @@ int8_t dht::read(uint8_t pin)
return result;
}


/////////////////////////////////////////////////////
//
// PRIVATE
//

int8_t dht::_readSensor(uint8_t pin, uint8_t wakeupDelay, uint8_t leadingZeroBits)
{
// INIT BUFFERVAR TO RECEIVE DATA
Expand Down Expand Up @@ -273,6 +299,7 @@ int8_t dht::_readSensor(uint8_t pin, uint8_t wakeupDelay, uint8_t leadingZeroBit
// digitalWrite(pin, HIGH);
return DHTLIB_OK;
}
//
// END OF FILE
//


// -- END OF FILE --

37 changes: 7 additions & 30 deletions dht.h
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
#pragma once
//
// FILE: dht.h
// AUTHOR: Rob Tillaart
// VERSION: 0.1.34
// VERSION: 0.1.35
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino. AVR optimized
// URL: https://github.com/RobTillaart/DHTlib
// http://arduino.cc/playground/Main/DHTLib
//
// HISTORY:
// see dht.cpp file
//

#ifndef dht_h
#define dht_h

#if ARDUINO < 100
#include <WProgram.h>
Expand All @@ -21,7 +16,7 @@
#endif


#define DHT_LIB_VERSION (F("0.1.34"))
#define DHT_LIB_VERSION (F("0.1.35"))

#define DHTLIB_OK 0
#define DHTLIB_ERROR_CHECKSUM -1
Expand All @@ -30,24 +25,6 @@
#define DHTLIB_ERROR_ACK_L -4
#define DHTLIB_ERROR_ACK_H -5

#define DHTLIB_DHT11_WAKEUP 18
#define DHTLIB_DHT_WAKEUP 1

#define DHTLIB_DHT11_LEADING_ZEROS 1
#define DHTLIB_DHT_LEADING_ZEROS 6


// max timeout is 100 usec.
// For a 16 Mhz proc 100 usec is 1600 clock cycles
// loops using DHTLIB_TIMEOUT use at least 4 clock cycli
// so 100 us takes max 400 loops
// so by dividing F_CPU by 40000 we "fail" as fast as possible
#ifndef F_CPU
#define DHTLIB_TIMEOUT 1000 // ahould be approx. clock/40000
#else
#define DHTLIB_TIMEOUT (F_CPU/40000)
#endif


class dht
{
Expand Down Expand Up @@ -85,7 +62,7 @@ class dht
int8_t _readSensor(uint8_t pin, uint8_t wakeupDelay, uint8_t leadingZeroBits);
bool _disableIRQ;
};
#endif
//
// END OF FILE
//


// -- END OF FILE --

31 changes: 16 additions & 15 deletions examples/dht11_test/dht11_test.ino
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@

//
// FILE: dht11_test.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.01
// PURPOSE: DHT library test sketch for DHT11 && Arduino
// URL: https://github.com/RobTillaart/DHTlib
//


#include <dht.h>

dht DHT;

#define DHT11_PIN 5
#define DHT11_PIN 5


void setup()
{
Expand All @@ -23,6 +22,7 @@ void setup()
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}


void loop()
{
// READ DATA
Expand All @@ -31,14 +31,14 @@ void loop()
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
Serial.print("Time out error,\t");
break;
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error,\t");
break;
Expand All @@ -49,8 +49,8 @@ void loop()
Serial.print("Ack High error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
Serial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
Serial.print(DHT.humidity, 1);
Expand All @@ -59,6 +59,7 @@ void loop()

delay(2000);
}
//
// END OF FILE
//


// -- END OF FILE --

Loading

0 comments on commit d1ab2e6

Please sign in to comment.