mirror of
https://github.com/adafruit/DHT-sensor-library.git
synced 2023-10-23 22:20:38 +03:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
f566d58f47 | |||
9bf12551d8 | |||
7cec0cb06d | |||
1e752b12ee | |||
8b9624479e | |||
57fe95c1be | |||
d6488c1fbe | |||
d26e8ec729 |
28
DHT.cpp
28
DHT.cpp
@ -22,7 +22,9 @@ DHT::DHT(uint8_t pin, uint8_t type, uint8_t count) {
|
||||
// based on the speed of the processor.
|
||||
}
|
||||
|
||||
void DHT::begin(void) {
|
||||
// Optionally pass pull-up time (in microseconds) before DHT reading starts.
|
||||
// Default is 55 (see function declaration in DHT.h).
|
||||
void DHT::begin(uint8_t usec) {
|
||||
// set up the pins!
|
||||
pinMode(_pin, INPUT_PULLUP);
|
||||
// Using this value makes sure that millis() - lastreadtime will be
|
||||
@ -30,6 +32,7 @@ void DHT::begin(void) {
|
||||
// but so will the subtraction.
|
||||
_lastreadtime = millis() - MIN_INTERVAL;
|
||||
DEBUG_PRINT("DHT max clock cycles: "); DEBUG_PRINTLN(_maxcycles, DEC);
|
||||
pullTime = usec;
|
||||
}
|
||||
|
||||
//boolean S == Scale. True == Fahrenheit; False == Celcius
|
||||
@ -39,6 +42,15 @@ float DHT::readTemperature(bool S, bool force) {
|
||||
if (read(force)) {
|
||||
switch (_type) {
|
||||
case DHT11:
|
||||
f = data[2];
|
||||
if (data[3] & 0x80) {
|
||||
f = -1 - f ;
|
||||
}
|
||||
f += (data[3] & 0x0f) * 0.1;
|
||||
if(S) {
|
||||
f = convertCtoF(f);
|
||||
}
|
||||
break;
|
||||
case DHT12:
|
||||
f = data[2];
|
||||
f += (data[3] & 0x0f) * 0.1;
|
||||
@ -143,6 +155,10 @@ bool DHT::read(bool force) {
|
||||
// Reset 40 bits of received data to zero.
|
||||
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
|
||||
|
||||
#if defined(ESP8266)
|
||||
yield(); // Handle WiFi / reset software watchdog
|
||||
#endif
|
||||
|
||||
// Send start signal. See DHT datasheet for full signal diagram:
|
||||
// http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf
|
||||
|
||||
@ -155,11 +171,11 @@ bool DHT::read(bool force) {
|
||||
pinMode(_pin, OUTPUT);
|
||||
digitalWrite(_pin, LOW);
|
||||
switch(_type) {
|
||||
case DHT22:
|
||||
case DHT21:
|
||||
case DHT22:
|
||||
case DHT21:
|
||||
delayMicroseconds(1100); // data sheet says "at least 1ms"
|
||||
break;
|
||||
case DHT11:
|
||||
case DHT11:
|
||||
default:
|
||||
delay(20); //data sheet says at least 18ms, 20ms just to be safe
|
||||
break;
|
||||
@ -170,8 +186,10 @@ bool DHT::read(bool force) {
|
||||
// End the start signal by setting data line high for 40 microseconds.
|
||||
pinMode(_pin, INPUT_PULLUP);
|
||||
|
||||
// Delay a moment to let sensor pull data line low.
|
||||
delayMicroseconds(pullTime);
|
||||
|
||||
// Now start reading the data line to get the value from the DHT sensor.
|
||||
delayMicroseconds(60); // Delay a bit to let sensor pull data line low.
|
||||
|
||||
// Turn off interrupts temporarily because the next sections
|
||||
// are timing critical and we don't want any interruptions.
|
||||
|
4
DHT.h
4
DHT.h
@ -39,7 +39,7 @@ written by Adafruit Industries
|
||||
class DHT {
|
||||
public:
|
||||
DHT(uint8_t pin, uint8_t type, uint8_t count=6);
|
||||
void begin(void);
|
||||
void begin(uint8_t usec=55);
|
||||
float readTemperature(bool S=false, bool force=false);
|
||||
float convertCtoF(float);
|
||||
float convertFtoC(float);
|
||||
@ -58,6 +58,7 @@ class DHT {
|
||||
#endif
|
||||
uint32_t _lastreadtime, _maxcycles;
|
||||
bool _lastresult;
|
||||
uint8_t pullTime; // Time (in usec) to pull up data line before reading
|
||||
|
||||
uint32_t expectPulse(bool level);
|
||||
|
||||
@ -75,7 +76,6 @@ class InterruptLock {
|
||||
interrupts();
|
||||
#endif
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
19
README.md
19
README.md
@ -1,15 +1,14 @@
|
||||
This is an Arduino library for the DHT series of low cost temperature/humidity sensors.
|
||||
# Adafruit DHT Humidity & Temperature Sensor Library
|
||||
|
||||
An Arduino library for the DHT series of low cost temperature/humidity sensors.
|
||||
|
||||
Tutorial: https://learn.adafruit.com/dht
|
||||
|
||||
To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder DHT. Check that the DHT folder contains DHT.cpp and DHT.h. Place the DHT library folder your <arduinosketchfolder>/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE.
|
||||
|
||||
# Adafruit DHT Humidity & Temperature Unified Sensor Library
|
||||
|
||||
This library also includes an optional class for the
|
||||
[DHT humidity and temperature sensor](https://learn.adafruit.com/dht/overview)
|
||||
which is designed to work with the [Adafruit unified sensor library](https://learn.adafruit.com/using-the-adafruit-unified-sensor-driver/introduction).
|
||||
|
||||
You must have the following Arduino libraries installed to use this class:
|
||||
**You must have the following Arduino libraries installed to use this class:**
|
||||
|
||||
- [Adafruit Unified Sensor Library](https://github.com/adafruit/Adafruit_Sensor)
|
||||
|
||||
Examples include both a "standalone" DHT example, and one that works along with the Adafruit Unified Sensor Library. Unified sensor library is required even if using the standalone version.
|
||||
|
||||
Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOADS button in the top right corner, rename the uncompressed folder DHT. Check that the DHT folder contains DHT.cpp and DHT.h. Place the DHT library folder your <arduinosketchfolder>/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE.
|
||||
|
||||
|
@ -3,15 +3,17 @@
|
||||
// Written by Tony DiCola for Adafruit Industries
|
||||
// Released under an MIT license.
|
||||
|
||||
// Depends on the following Arduino libraries:
|
||||
// - Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor
|
||||
// REQUIRES the following Arduino libraries:
|
||||
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
|
||||
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
|
||||
|
||||
#include <Adafruit_Sensor.h>
|
||||
#include <DHT.h>
|
||||
#include <DHT_U.h>
|
||||
|
||||
#define DHTPIN 2 // Pin connected to the DHT sensor.
|
||||
#define DHTPIN 2 // Digital pin connected to the DHT sensor
|
||||
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
|
||||
// Pin 15 can work but DHT must be disconnected during program upload.
|
||||
|
||||
// Uncomment the type of sensor in use:
|
||||
//#define DHTTYPE DHT11 // DHT 11
|
||||
|
@ -1,9 +1,15 @@
|
||||
// Example testing sketch for various DHT humidity/temperature sensors
|
||||
// Written by ladyada, public domain
|
||||
|
||||
// REQUIRES the following Arduino libraries:
|
||||
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
|
||||
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
|
||||
|
||||
#include "DHT.h"
|
||||
|
||||
#define DHTPIN 2 // what digital pin we're connected to
|
||||
#define DHTPIN 2 // Digital pin connected to the DHT sensor
|
||||
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
|
||||
// Pin 15 can work but DHT must be disconnected during program upload.
|
||||
|
||||
// Uncomment whatever type you're using!
|
||||
//#define DHTTYPE DHT11 // DHT 11
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=DHT sensor library
|
||||
version=1.3.1
|
||||
version=1.3.4
|
||||
author=Adafruit
|
||||
maintainer=Adafruit <info@adafruit.com>
|
||||
sentence=Arduino library for DHT11, DHT22, etc Temp & Humidity Sensors
|
||||
|
Reference in New Issue
Block a user