mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-09-19 16:46:11 -04:00
0.4.20 DHTNEW
This commit is contained in:
parent
38a0039428
commit
5e1c7a2145
3
libraries/DHTNEW/.github/FUNDING.yml
vendored
3
libraries/DHTNEW/.github/FUNDING.yml
vendored
@ -1,4 +1,5 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: RobTillaart
|
GitHub: RobTillaart
|
||||||
|
custom: "https://www.paypal.me/robtillaart"
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
|
|
||||||
name: Arduino-lint
|
name: Arduino-lint
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 5
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: arduino/arduino-lint-action@v1
|
- uses: arduino/arduino-lint-action@v1
|
||||||
with:
|
with:
|
||||||
library-manager: update
|
library-manager: update
|
||||||
compliance: strict
|
compliance: strict
|
@ -6,12 +6,14 @@ on: [push, pull_request]
|
|||||||
jobs:
|
jobs:
|
||||||
runTest:
|
runTest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 20
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: 2.6
|
ruby-version: 2.6
|
||||||
- run: |
|
- run: |
|
||||||
|
sudo sysctl vm.mmap_rnd_bits=28
|
||||||
gem install arduino_ci
|
gem install arduino_ci
|
||||||
arduino_ci.rb
|
arduino_ci.rb
|
||||||
|
@ -9,10 +9,10 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 5
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: json-syntax-check
|
- name: json-syntax-check
|
||||||
uses: limitusus/json-syntax-check@v1
|
uses: limitusus/json-syntax-check@v2
|
||||||
with:
|
with:
|
||||||
pattern: "\\.json$"
|
pattern: "\\.json$"
|
||||||
|
|
@ -6,10 +6,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
|
||||||
|
## [0.4.20] - 2024-03-24
|
||||||
|
- fix #95, units of T & H
|
||||||
|
- update GitHub actions
|
||||||
|
- refactor **setType()** map invalid types to 0
|
||||||
|
- update readme.md
|
||||||
|
- update unit test (minor)
|
||||||
|
- minor edits
|
||||||
|
|
||||||
|
|
||||||
## [0.4.19] - 2023-10-25
|
## [0.4.19] - 2023-10-25
|
||||||
- update readme.md
|
- update readme.md
|
||||||
|
|
||||||
|
|
||||||
## [0.4.18] - 2023-01-09
|
## [0.4.18] - 2023-01-09
|
||||||
- update license to 2023
|
- update license to 2023
|
||||||
- update GitHub actions
|
- update GitHub actions
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2017-2023 Rob Tillaart
|
Copyright (c) 2017-2024 Rob Tillaart
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// FILE: dhtnew.cpp
|
// FILE: dhtnew.cpp
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.4.19
|
// VERSION: 0.4.20
|
||||||
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNEW
|
// URL: https://github.com/RobTillaart/DHTNEW
|
||||||
//
|
//
|
||||||
@ -47,10 +47,10 @@ void DHTNEW::reset()
|
|||||||
|
|
||||||
_wakeupDelay = 0;
|
_wakeupDelay = 0;
|
||||||
_type = 0;
|
_type = 0;
|
||||||
_humOffset = (float)0.0;
|
_humOffset = 0.0;
|
||||||
_tempOffset = (float)0.0;
|
_tempOffset = 0.0;
|
||||||
_humidity = (float)0.0;
|
_humidity = 0.0;
|
||||||
_temperature = (float)0.0;
|
_temperature = 0.0;
|
||||||
_lastRead = 0;
|
_lastRead = 0;
|
||||||
_disableIRQ = true;
|
_disableIRQ = true;
|
||||||
_waitForRead = false;
|
_waitForRead = false;
|
||||||
@ -74,18 +74,22 @@ uint8_t DHTNEW::getType()
|
|||||||
|
|
||||||
void DHTNEW::setType(uint8_t type)
|
void DHTNEW::setType(uint8_t type)
|
||||||
{
|
{
|
||||||
if ((type == 0) || (type == 11))
|
// default type == 0 or unsupported
|
||||||
{
|
_type = 0;
|
||||||
_type = type;
|
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
||||||
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
|
||||||
}
|
|
||||||
if ((type == 22) || (type == 23))
|
if ((type == 22) || (type == 23))
|
||||||
{
|
{
|
||||||
_type = type;
|
_type = type;
|
||||||
_wakeupDelay = DHTLIB_DHT_WAKEUP;
|
_wakeupDelay = DHTLIB_DHT_WAKEUP;
|
||||||
}
|
}
|
||||||
|
else if (type == 11)
|
||||||
|
{
|
||||||
|
_type = type;
|
||||||
|
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
||||||
|
}
|
||||||
// experimental 0.4.14
|
// experimental 0.4.14
|
||||||
if (type == 70)
|
else if (type == 70)
|
||||||
{
|
{
|
||||||
_type = type;
|
_type = type;
|
||||||
_wakeupDelay = DHTLIB_SI7021_WAKEUP;
|
_wakeupDelay = DHTLIB_SI7021_WAKEUP;
|
||||||
@ -192,7 +196,7 @@ int DHTNEW::_read()
|
|||||||
int16_t t = ((_bits[2] & 0x7F) * 256 + _bits[3]);
|
int16_t t = ((_bits[2] & 0x7F) * 256 + _bits[3]);
|
||||||
if (t == 0)
|
if (t == 0)
|
||||||
{
|
{
|
||||||
_temperature = (float)0.0; // prevent -0.0;
|
_temperature = 0.0; // prevent -0.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -205,14 +209,14 @@ int DHTNEW::_read()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// HEXDUMP DEBUG
|
// HEXDUMP DEBUG
|
||||||
/*
|
/*
|
||||||
Serial.println();
|
Serial.println();
|
||||||
// CHECKSUM
|
// CHECKSUM
|
||||||
if (_bits[4] < 0x10) Serial.print(0);
|
if (_bits[4] < 0x10) Serial.print(0);
|
||||||
Serial.print(_bits[4], HEX);
|
Serial.print(_bits[4], HEX);
|
||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
// TEMPERATURE
|
// TEMPERATURE
|
||||||
if (_bits[2] < 0x10) Serial.print(0);
|
if (_bits[2] < 0x10) Serial.print(0);
|
||||||
Serial.print(_bits[2], HEX);
|
Serial.print(_bits[2], HEX);
|
||||||
if (_bits[3] < 0x10) Serial.print(0);
|
if (_bits[3] < 0x10) Serial.print(0);
|
||||||
@ -220,7 +224,7 @@ int DHTNEW::_read()
|
|||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
Serial.print(_temperature, 1);
|
Serial.print(_temperature, 1);
|
||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
// HUMIDITY
|
// HUMIDITY
|
||||||
if (_bits[0] < 0x10) Serial.print(0);
|
if (_bits[0] < 0x10) Serial.print(0);
|
||||||
Serial.print(_bits[0], HEX);
|
Serial.print(_bits[0], HEX);
|
||||||
if (_bits[1] < 0x10) Serial.print(0);
|
if (_bits[1] < 0x10) Serial.print(0);
|
||||||
@ -241,13 +245,13 @@ int DHTNEW::_read()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (_humOffset != (float)0.0)
|
if (_humOffset != 0.0)
|
||||||
{
|
{
|
||||||
_humidity += _humOffset;
|
_humidity += _humOffset;
|
||||||
if (_humidity < 0) _humidity = 0;
|
if (_humidity > 100) _humidity = 100;
|
||||||
if (_humidity > 100) _humidity = 100;
|
else if (_humidity < 0) _humidity = 0;
|
||||||
}
|
}
|
||||||
if (_tempOffset != (float)0.0)
|
if (_tempOffset != 0.0)
|
||||||
{
|
{
|
||||||
_temperature += _tempOffset;
|
_temperature += _tempOffset;
|
||||||
}
|
}
|
||||||
@ -266,7 +270,7 @@ int DHTNEW::_read()
|
|||||||
void DHTNEW::powerUp()
|
void DHTNEW::powerUp()
|
||||||
{
|
{
|
||||||
digitalWrite(_dataPin, HIGH);
|
digitalWrite(_dataPin, HIGH);
|
||||||
// do a dummy read to sync the sensor
|
// do a dummy read to synchronise the sensor
|
||||||
read();
|
read();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -298,7 +302,10 @@ int DHTNEW::_readSensor()
|
|||||||
uint8_t idx = 0;
|
uint8_t idx = 0;
|
||||||
|
|
||||||
// EMPTY BUFFER
|
// EMPTY BUFFER
|
||||||
for (uint8_t i = 0; i < 5; i++) _bits[i] = 0;
|
for (uint8_t i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
_bits[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
||||||
pinMode(_dataPin, OUTPUT);
|
pinMode(_dataPin, OUTPUT);
|
||||||
@ -412,7 +419,7 @@ bool DHTNEW::_waitFor(uint8_t state, uint32_t timeout)
|
|||||||
uint8_t count = 2;
|
uint8_t count = 2;
|
||||||
while ((micros() - start) < timeout)
|
while ((micros() - start) < timeout)
|
||||||
{
|
{
|
||||||
// d elayMicroseconds(1); // less # reads ==> minimizes # glitch reads
|
// delayMicroseconds(1); // less # reads ==> minimizes # glitch reads
|
||||||
if (digitalRead(_dataPin) == state)
|
if (digitalRead(_dataPin) == state)
|
||||||
{
|
{
|
||||||
count--;
|
count--;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// FILE: dhtnew.h
|
// FILE: dhtnew.h
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.4.19
|
// VERSION: 0.4.20
|
||||||
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNEW
|
// URL: https://github.com/RobTillaart/DHTNEW
|
||||||
//
|
//
|
||||||
@ -18,7 +18,7 @@
|
|||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
|
||||||
#define DHTNEW_LIB_VERSION (F("0.4.19"))
|
#define DHTNEW_LIB_VERSION (F("0.4.20"))
|
||||||
|
|
||||||
|
|
||||||
#define DHTLIB_OK 0
|
#define DHTLIB_OK 0
|
||||||
@ -59,12 +59,13 @@ public:
|
|||||||
DHTNEW(uint8_t pin);
|
DHTNEW(uint8_t pin);
|
||||||
|
|
||||||
// resets all internals to construction time
|
// resets all internals to construction time
|
||||||
// might help to reset a sensor behaving badly..
|
// might help to reset a sensor behaving badly
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
// 0 = unknown
|
// 0 = unknown
|
||||||
// 11 = DHT11 and compatibles
|
// 11 = DHT11 and compatibles
|
||||||
// 22 = DHT22 and compatibles
|
// 22 = DHT22 and compatibles
|
||||||
|
// 23 = mapped to 22 for now (AM23xx)
|
||||||
// 70 = Sonoff Si7021
|
// 70 = Sonoff Si7021
|
||||||
uint8_t getType();
|
uint8_t getType();
|
||||||
void setType(uint8_t type = 0);
|
void setType(uint8_t type = 0);
|
||||||
@ -108,10 +109,10 @@ private:
|
|||||||
uint8_t _dataPin = 0;
|
uint8_t _dataPin = 0;
|
||||||
uint32_t _wakeupDelay = 0;
|
uint32_t _wakeupDelay = 0;
|
||||||
uint8_t _type = 0;
|
uint8_t _type = 0;
|
||||||
float _humOffset = (float)0.0;
|
float _humOffset = 0.0;
|
||||||
float _tempOffset = (float)0.0;
|
float _tempOffset = 0.0;
|
||||||
float _humidity = (float)0.0;
|
float _humidity = 0.0;
|
||||||
float _temperature = (float)0.0;
|
float _temperature = 0.0;
|
||||||
uint32_t _lastRead = 0;
|
uint32_t _lastRead = 0;
|
||||||
bool _disableIRQ = true;
|
bool _disableIRQ = true;
|
||||||
bool _waitForRead = false;
|
bool _waitForRead = false;
|
||||||
|
@ -6,30 +6,30 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
// Note:
|
// Note:
|
||||||
// Adaptive delay makes no sense anymore as the DHTNEW lib catches reads that
|
// Adaptive delay makes no sense anymore as the DHTNEW lib catches reads that
|
||||||
// are done faster than READ_DELAY apart (see dhtnew.cpp file).
|
// are done faster than READ_DELAY apart (see dhtnew.cpp file).
|
||||||
// that said it is the goal to get this adaptability into the library one day.
|
// that said it is the goal to get this adaptability into the library one day.
|
||||||
// A way to do this is to add a function auto_calibrate() that finds the timing
|
// A way to do this is to add a function auto_calibrate() that finds the timing
|
||||||
// where reading fails and use that value + safety margin (20%?)
|
// where reading fails and use that value + safety margin (20%?)
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("dhtnew_adaptive_delay.ino");
|
Serial.println("dhtnew_adaptive_delay.ino");
|
||||||
@ -37,8 +37,8 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
||||||
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
||||||
@ -97,7 +97,7 @@ void loop()
|
|||||||
void test()
|
void test()
|
||||||
{
|
{
|
||||||
static uint16_t dht_delay = 600;
|
static uint16_t dht_delay = 600;
|
||||||
// READ DATA
|
// READ DATA
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
int chk = mySensor.read();
|
int chk = mySensor.read();
|
||||||
uint32_t stop = micros();
|
uint32_t stop = micros();
|
||||||
@ -144,7 +144,7 @@ void test()
|
|||||||
}
|
}
|
||||||
|
|
||||||
dht_delay = constrain(dht_delay, 100, 5000);
|
dht_delay = constrain(dht_delay, 100, 5000);
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -159,5 +159,5 @@ void test()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ void loop()
|
|||||||
|
|
||||||
void test(int idx)
|
void test(int idx)
|
||||||
{
|
{
|
||||||
// READ DATA
|
// READ DATA
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
int chk = ar[idx].read();
|
int chk = ar[idx].read();
|
||||||
uint32_t stop = micros();
|
uint32_t stop = micros();
|
||||||
@ -99,7 +99,7 @@ void test(int idx)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(ar[idx].getHumidity(), 1);
|
Serial.print(ar[idx].getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(ar[idx].getTemperature(), 1);
|
Serial.print(ar[idx].getTemperature(), 1);
|
||||||
@ -112,5 +112,5 @@ void test(int idx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,18 +4,18 @@
|
|||||||
// PURPOSE: DHTNEW library debug sketch for Arduino
|
// PURPOSE: DHTNEW library debug sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
@ -26,17 +26,17 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
delay(2000);
|
delay(2000);
|
||||||
mySensor.read(); // put print statements in core lib (see read())
|
mySensor.read(); // put print statements in core lib (see read())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -5,18 +5,18 @@
|
|||||||
// DATE: 2020-06-04
|
// DATE: 2020-06-04
|
||||||
// (c) : MIT
|
// (c) : MIT
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
uint32_t count = 0;
|
uint32_t count = 0;
|
||||||
uint32_t start, stop;
|
uint32_t start, stop;
|
||||||
@ -26,7 +26,7 @@ uint32_t errors[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("DHT_endless.ino");
|
Serial.println("DHT_endless.ino");
|
||||||
@ -34,15 +34,15 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
// show counters for OK and errors.
|
// show counters for OK and errors.
|
||||||
if (count % 50 == 0)
|
if (count % 50 == 0)
|
||||||
{
|
{
|
||||||
Serial.println();
|
Serial.println();
|
||||||
@ -115,7 +115,7 @@ void loop()
|
|||||||
errors[9]++;
|
errors[9]++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -128,5 +128,5 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -5,13 +5,13 @@
|
|||||||
// DATE: 2021-02-19
|
// DATE: 2021-02-19
|
||||||
// (c) : MIT
|
// (c) : MIT
|
||||||
|
|
||||||
// DHT PINs' layout from left to right
|
// DHT PINs' layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
@ -25,7 +25,7 @@ uint32_t errors[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("DHT_endless.ino");
|
Serial.println("DHT_endless.ino");
|
||||||
@ -33,8 +33,8 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ void DHTt(const uint8_t pin)
|
|||||||
DHTNEW mySensor(pin);
|
DHTNEW mySensor(pin);
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
// show counters for OK and errors.
|
// show counters for OK and errors.
|
||||||
if (count % 50 == 0)
|
if (count % 50 == 0)
|
||||||
{
|
{
|
||||||
Serial.println();
|
Serial.println();
|
||||||
@ -120,7 +120,7 @@ void DHTt(const uint8_t pin)
|
|||||||
errors[9]++;
|
errors[9]++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -138,6 +138,6 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,30 +4,30 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch
|
// PURPOSE: DHTNEW library test sketch
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println(__FILE__);
|
Serial.println(__FILE__);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("BEFORE OFFSET");
|
Serial.println("BEFORE OFFSET");
|
||||||
delay(2000);
|
delay(2000);
|
||||||
@ -55,5 +55,5 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch
|
// PURPOSE: DHTNEW library test sketch
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
@ -20,7 +20,7 @@ uint64_t previousMillis;
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println(__FILE__);
|
Serial.println(__FILE__);
|
||||||
@ -32,8 +32,8 @@ void DHTt(uint8_t pin)
|
|||||||
{
|
{
|
||||||
DHTNEW mySensor(pin);
|
DHTNEW mySensor(pin);
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
if (millis() - mySensor.lastRead() > 2000)
|
if (millis() - mySensor.lastRead() > 2000)
|
||||||
{
|
{
|
||||||
@ -52,5 +52,5 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,17 +4,17 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch for Arduino
|
// PURPOSE: DHTNEW library test sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
// to see the effect one must apply a voltmeter to the data pin of the sensor
|
// to see the effect one must apply a voltmeter to the data pin of the sensor
|
||||||
// during the low power mode. Measuring during communication will disrupt the
|
// during the low power mode. Measuring during communication will disrupt the
|
||||||
// data transfer.
|
// data transfer.
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
@ -24,15 +24,15 @@ DHTNEW mySensor(16);
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("dhtnew_test.ino");
|
Serial.println("dhtnew_test.ino");
|
||||||
Serial.print("LIBRARY VERSION: ");
|
Serial.print("LIBRARY VERSION: ");
|
||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("\nstartup");
|
Serial.println("\nstartup");
|
||||||
delay(2000);
|
delay(2000);
|
||||||
@ -43,7 +43,7 @@ void setup()
|
|||||||
int rv = mySensor.read();
|
int rv = mySensor.read();
|
||||||
if (rv != DHTLIB_OK)
|
if (rv != DHTLIB_OK)
|
||||||
{
|
{
|
||||||
Serial.println(rv); // will print -7 when measuring voltage
|
Serial.println(rv); // will print -7 when measuring voltage
|
||||||
}
|
}
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
@ -58,7 +58,7 @@ void setup()
|
|||||||
|
|
||||||
Serial.println("switch sensor on (and wait 2 seconds)");
|
Serial.println("switch sensor on (and wait 2 seconds)");
|
||||||
mySensor.powerUp();
|
mySensor.powerUp();
|
||||||
// wait for 2 seconds.
|
// wait for 2 seconds.
|
||||||
delay(2000);
|
delay(2000);
|
||||||
|
|
||||||
Serial.println("read sensor with 2 second interval");
|
Serial.println("read sensor with 2 second interval");
|
||||||
@ -80,5 +80,5 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
// PURPOSE: DHTNEW library pulse measurement tool - diagnostics
|
// PURPOSE: DHTNEW library pulse measurement tool - diagnostics
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include "Arduino.h"
|
#include "Arduino.h"
|
||||||
@ -28,13 +28,13 @@ uint8_t idx = 0;
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("dhtnew_pulse_diag.ino");
|
Serial.println("dhtnew_pulse_diag.ino");
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// default should be HIGH
|
// default should be HIGH
|
||||||
pinMode(_dataPin, OUTPUT);
|
pinMode(_dataPin, OUTPUT);
|
||||||
digitalWrite(_dataPin, HIGH);
|
digitalWrite(_dataPin, HIGH);
|
||||||
}
|
}
|
||||||
@ -104,61 +104,61 @@ void dump()
|
|||||||
void measure()
|
void measure()
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
// yield(); // handle pending interrupts
|
// yield(); // handle pending interrupts
|
||||||
|
|
||||||
// reset measurements table
|
// reset measurements table
|
||||||
idx = 0;
|
idx = 0;
|
||||||
t = micros();
|
t = micros();
|
||||||
for (int i = 0; i < 100; i++) times[i] = 0;
|
for (int i = 0; i < 100; i++) times[i] = 0;
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
||||||
pinMode(_dataPin, OUTPUT);
|
pinMode(_dataPin, OUTPUT);
|
||||||
digitalWrite(_dataPin, LOW);
|
digitalWrite(_dataPin, LOW);
|
||||||
// add 10% extra for timing inaccuracies in sensor.
|
// add 10% extra for timing inaccuracies in sensor.
|
||||||
delayMicroseconds(_wakeupDelay * 1100UL);
|
delayMicroseconds(_wakeupDelay * 1100UL);
|
||||||
|
|
||||||
Serial.print("awake ");
|
Serial.print("awake ");
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// HOST GIVES CONTROL TO SENSOR
|
// HOST GIVES CONTROL TO SENSOR
|
||||||
pinMode(_dataPin, INPUT_PULLUP);
|
pinMode(_dataPin, INPUT_PULLUP);
|
||||||
|
|
||||||
// DISABLE INTERRUPTS when clock in the bits
|
// DISABLE INTERRUPTS when clock in the bits
|
||||||
// noInterrupts(); // gives problems on AVR
|
// noInterrupts(); // gives problems on AVR
|
||||||
|
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// SENSOR PULLS LOW after 20-40 us => if stays HIGH ==> device not ready
|
// SENSOR PULLS LOW after 20-40 us => if stays HIGH ==> device not ready
|
||||||
while (digitalRead(_dataPin) == HIGH);
|
while (digitalRead(_dataPin) == HIGH);
|
||||||
|
|
||||||
Serial.print("2 ");
|
Serial.print("2 ");
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// SENSOR STAYS LOW for ~80 us => or TIMEOUT
|
// SENSOR STAYS LOW for ~80 us => or TIMEOUT
|
||||||
while (digitalRead(_dataPin) == LOW);
|
while (digitalRead(_dataPin) == LOW);
|
||||||
|
|
||||||
Serial.print("3 ");
|
Serial.print("3 ");
|
||||||
|
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// SENSOR STAYS HIGH for ~80 us => or TIMEOUT
|
// SENSOR STAYS HIGH for ~80 us => or TIMEOUT
|
||||||
while (digitalRead(_dataPin) == HIGH);
|
while (digitalRead(_dataPin) == HIGH);
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
|
|
||||||
Serial.print("4 ");
|
Serial.print("4 ");
|
||||||
|
|
||||||
|
|
||||||
// SENSOR HAS NOW SEND ACKNOWLEDGE ON WAKEUP
|
// SENSOR HAS NOW SEND ACKNOWLEDGE ON WAKEUP
|
||||||
// NOW IT SENDS THE BITS
|
// NOW IT SENDS THE BITS
|
||||||
|
|
||||||
// READ THE OUTPUT - 40 BITS => 5 BYTES
|
// READ THE OUTPUT - 40 BITS => 5 BYTES
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
uint8_t i = 40;
|
uint8_t i = 40;
|
||||||
for (i = 40; i != 0; i--)
|
for (i = 40; i != 0; i--)
|
||||||
{
|
{
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// EACH BIT START WITH ~50 us LOW
|
// EACH BIT START WITH ~50 us LOW
|
||||||
while (digitalRead(_dataPin) == LOW)
|
while (digitalRead(_dataPin) == LOW)
|
||||||
{
|
{
|
||||||
if (micros() - start > 10000)
|
if (micros() - start > 10000)
|
||||||
@ -171,9 +171,9 @@ void measure()
|
|||||||
}
|
}
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// DURATION OF HIGH DETERMINES 0 or 1
|
// DURATION OF HIGH DETERMINES 0 or 1
|
||||||
// 26-28 us ==> 0
|
// 26-28 us ==> 0
|
||||||
// 70 us ==> 1
|
// 70 us ==> 1
|
||||||
while (digitalRead(_dataPin) == HIGH)
|
while (digitalRead(_dataPin) == HIGH)
|
||||||
{
|
{
|
||||||
if (micros() - start > 10000)
|
if (micros() - start > 10000)
|
||||||
@ -187,8 +187,8 @@ void measure()
|
|||||||
Serial.print("5 ");
|
Serial.print("5 ");
|
||||||
|
|
||||||
times[idx++] = micros();
|
times[idx++] = micros();
|
||||||
// After 40 bits the sensor pulls the line LOW for 50 us
|
// After 40 bits the sensor pulls the line LOW for 50 us
|
||||||
// TODO: should we wait?
|
// TODO: should we wait?
|
||||||
while (digitalRead(_dataPin) == LOW);
|
while (digitalRead(_dataPin) == LOW);
|
||||||
|
|
||||||
Serial.print("6 ");
|
Serial.print("6 ");
|
||||||
@ -206,4 +206,4 @@ void measure()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
@ -4,33 +4,33 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch
|
// PURPOSE: DHTNEW library test sketch
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
uint32_t lastTime = 0;
|
uint32_t lastTime = 0;
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println(__FILE__);
|
Serial.println(__FILE__);
|
||||||
Serial.print("DHTNEW_LIB_VERSION: ");
|
Serial.print("DHTNEW_LIB_VERSION: ");
|
||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,9 +52,9 @@ void loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do other things here
|
// Do other things here
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,23 +4,23 @@
|
|||||||
// PURPOSE: DHTNEW library waitForRead example sketch for Arduino
|
// PURPOSE: DHTNEW library waitForRead example sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println(__FILE__);
|
Serial.println(__FILE__);
|
||||||
@ -28,10 +28,10 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
delay(2000); // boot time
|
delay(2000); // boot time
|
||||||
|
|
||||||
mySensor.setWaitForReading(true);
|
mySensor.setWaitForReading(true);
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ void setup()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// safety margin of 100 uSec
|
// safety margin of 100 uSec
|
||||||
rd += 100;
|
rd += 100;
|
||||||
mySensor.setReadDelay(rd);
|
mySensor.setReadDelay(rd);
|
||||||
Serial.print("\nreadDelay set to (ms) : ");
|
Serial.print("\nreadDelay set to (ms) : ");
|
||||||
@ -71,8 +71,8 @@ void setup()
|
|||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
// Note: the library prevents reads faster than readDelay...
|
// Note: the library prevents reads faster than readDelay...
|
||||||
// it will return previous values for T & H
|
// it will return previous values for T & H
|
||||||
int chk = mySensor.read();
|
int chk = mySensor.read();
|
||||||
Serial.print(millis());
|
Serial.print(millis());
|
||||||
Serial.print("\t");
|
Serial.print("\t");
|
||||||
@ -127,5 +127,5 @@ void printStatus(int chk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,16 +4,16 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch
|
// PURPOSE: DHTNEW library test sketch
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
// run sketch without connected sensor to see effect
|
// run sketch without connected sensor to see effect
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
@ -4,23 +4,23 @@
|
|||||||
// PURPOSE: DHTNEW library test sketch for Arduino
|
// PURPOSE: DHTNEW library test sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("dhtnew_test.ino");
|
Serial.println("dhtnew_test.ino");
|
||||||
@ -28,8 +28,8 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010
|
// MKR1010
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
||||||
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
||||||
@ -86,7 +86,7 @@ void loop()
|
|||||||
|
|
||||||
void test()
|
void test()
|
||||||
{
|
{
|
||||||
// READ DATA
|
// READ DATA
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
int chk = mySensor.read();
|
int chk = mySensor.read();
|
||||||
uint32_t stop = micros();
|
uint32_t stop = micros();
|
||||||
@ -127,7 +127,7 @@ void test()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -140,5 +140,5 @@ void test()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,23 +4,23 @@
|
|||||||
// PURPOSE: DHTNEW library waitForRead example sketch for Arduino
|
// PURPOSE: DHTNEW library waitForRead example sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("\n");
|
Serial.println("\n");
|
||||||
@ -29,8 +29,8 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("This sketch shows the use of the setWaitForReading() flag (default value is false).");
|
Serial.println("This sketch shows the use of the setWaitForReading() flag (default value is false).");
|
||||||
Serial.println("Setting the flag to true will make the sketch wait until the sensor is ready to take another reading.");
|
Serial.println("Setting the flag to true will make the sketch wait until the sensor is ready to take another reading.");
|
||||||
@ -66,16 +66,16 @@ void loop()
|
|||||||
|
|
||||||
void test()
|
void test()
|
||||||
{
|
{
|
||||||
// READ DATA
|
// READ DATA
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
int chk = mySensor.read();
|
int chk = mySensor.read();
|
||||||
uint32_t stop = micros();
|
uint32_t stop = micros();
|
||||||
uint32_t duration = stop - start;
|
uint32_t duration = stop - start;
|
||||||
|
|
||||||
// DISPLAY IF OLD OR NEW DATA
|
// DISPLAY IF OLD OR NEW DATA
|
||||||
if (duration > 50){Serial.print("NEW\t");}else{Serial.print("OLD\t");}
|
if (duration > 50){Serial.print("NEW\t");}else{Serial.print("OLD\t");}
|
||||||
|
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -122,5 +122,5 @@ void test()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -4,23 +4,23 @@
|
|||||||
// PURPOSE: DHTNEW non-blocking wait for read example sketch for Arduino
|
// PURPOSE: DHTNEW non-blocking wait for read example sketch for Arduino
|
||||||
// URL: https://github.com/RobTillaart/DHTNew
|
// URL: https://github.com/RobTillaart/DHTNew
|
||||||
|
|
||||||
// DHT PIN layout from left to right
|
// DHT PIN layout from left to right
|
||||||
// =================================
|
// =================================
|
||||||
// FRONT : DESCRIPTION
|
// FRONT : DESCRIPTION
|
||||||
// pin 1 : VCC
|
// pin 1 : VCC
|
||||||
// pin 2 : DATA
|
// pin 2 : DATA
|
||||||
// pin 3 : Not Connected
|
// pin 3 : Not Connected
|
||||||
// pin 4 : GND
|
// pin 4 : GND
|
||||||
|
|
||||||
|
|
||||||
#include <dhtnew.h>
|
#include <dhtnew.h>
|
||||||
|
|
||||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
while(!Serial); // MKR1010 needs this
|
while(!Serial); // MKR1010 needs this
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.println("\n");
|
Serial.println("\n");
|
||||||
@ -29,8 +29,8 @@ void setup()
|
|||||||
Serial.println(DHTNEW_LIB_VERSION);
|
Serial.println(DHTNEW_LIB_VERSION);
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
|
||||||
// MKR1010 needs this
|
// MKR1010 needs this
|
||||||
// mySensor.setDisableIRQ(false);
|
// mySensor.setDisableIRQ(false);
|
||||||
|
|
||||||
Serial.println("This example shows how you can use the output of the read() function to implement non-blocking waiting for read.");
|
Serial.println("This example shows how you can use the output of the read() function to implement non-blocking waiting for read.");
|
||||||
Serial.println("In this example, Arduino continuously polls the read() function and returns fresh data (or an error) only when the read delay is over.");
|
Serial.println("In this example, Arduino continuously polls the read() function and returns fresh data (or an error) only when the read delay is over.");
|
||||||
@ -42,7 +42,7 @@ void setup()
|
|||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
// READ DATA
|
// READ DATA
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
int chk = mySensor.read();
|
int chk = mySensor.read();
|
||||||
uint32_t stop = micros();
|
uint32_t stop = micros();
|
||||||
@ -81,7 +81,7 @@ void loop()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DISPLAY DATA
|
// DISPLAY DATA
|
||||||
Serial.print(mySensor.getHumidity(), 1);
|
Serial.print(mySensor.getHumidity(), 1);
|
||||||
Serial.print(",\t");
|
Serial.print(",\t");
|
||||||
Serial.print(mySensor.getTemperature(), 1);
|
Serial.print(mySensor.getTemperature(), 1);
|
||||||
@ -92,10 +92,10 @@ void loop()
|
|||||||
Serial.println(mySensor.getType());
|
Serial.println(mySensor.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
// do some other stuff
|
// do some other stuff
|
||||||
delay(100);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/RobTillaart/DHTNEW.git"
|
"url": "https://github.com/RobTillaart/DHTNEW.git"
|
||||||
},
|
},
|
||||||
"version": "0.4.19",
|
"version": "0.4.20",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"frameworks": "*",
|
"frameworks": "*",
|
||||||
"platforms": "*",
|
"platforms": "*",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=DHTNEW
|
name=DHTNEW
|
||||||
version=0.4.19
|
version=0.4.20
|
||||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
sentence=Arduino library for DHT temperature and humidity sensor, with automatic sensortype recognition.
|
sentence=Arduino library for DHT temperature and humidity sensor, with automatic sensortype recognition.
|
||||||
|
@ -22,6 +22,9 @@ This is the main development library of all my DHT libraries.
|
|||||||
Supports DHT11, DHT22, DHT33, DHT44, AM2301, AM2302, AM2303 as these all have the same protocol.
|
Supports DHT11, DHT22, DHT33, DHT44, AM2301, AM2302, AM2303 as these all have the same protocol.
|
||||||
Note there are differences e.g. DHT11 has no negative temperature, no decimals, and a longer wakeup time.
|
Note there are differences e.g. DHT11 has no negative temperature, no decimals, and a longer wakeup time.
|
||||||
|
|
||||||
|
The DHTNew library returns Temperature in degrees Celsius and Humidity in 0.0 - 100.0 %RH.
|
||||||
|
For converting temperature to Fahrenheit or Kelvin, see https://github.com/RobTillaart/Temperature.
|
||||||
|
|
||||||
|
|
||||||
#### Sonoff Si7021
|
#### Sonoff Si7021
|
||||||
|
|
||||||
@ -43,7 +46,7 @@ Not tested myself, but AM2320 is confirmed to work, see https://github.com/RobTi
|
|||||||
As the AM2321 and AM2322 are quite identical according to the datasheet, those are expected to work too.
|
As the AM2321 and AM2322 are quite identical according to the datasheet, those are expected to work too.
|
||||||
|
|
||||||
To use the library one should call **setType(22)** as the protocol is identical to the DHT22.
|
To use the library one should call **setType(22)** as the protocol is identical to the DHT22.
|
||||||
If there are differences in operation type (23) will be implemented.
|
If there are differences in operation type (23) will be elaborated.
|
||||||
The value 23 is now mapped upon 22 code.
|
The value 23 is now mapped upon 22 code.
|
||||||
|
|
||||||
Feedback (both positive and negative) about the AM232X sensors is welcome.
|
Feedback (both positive and negative) about the AM232X sensors is welcome.
|
||||||
@ -56,36 +59,38 @@ Feedback (both positive and negative) about the AM232X sensors is welcome.
|
|||||||
- https://github.com/RobTillaart/DHTNew
|
- https://github.com/RobTillaart/DHTNew
|
||||||
- https://github.com/RobTillaart/DHTStable
|
- https://github.com/RobTillaart/DHTStable
|
||||||
- https://github.com/RobTillaart/DHT_Simulator
|
- https://github.com/RobTillaart/DHT_Simulator
|
||||||
|
- https://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html (interesting)
|
||||||
|
- https://github.com/RobTillaart/Temperature (conversions, dewPoint, heatindex etc)
|
||||||
|
|
||||||
|
|
||||||
## DHT PIN layout from left to right
|
## DHT PIN layout from left to right
|
||||||
|
|
||||||
| Front | | Description |
|
| Front | | Description |
|
||||||
|:------|:----:|:--------------|
|
|:--------|:----:|:----------------|
|
||||||
| pin 1 | | VCC |
|
| pin 1 | | VCC |
|
||||||
| pin 2 | | DATA |
|
| pin 2 | | DATA |
|
||||||
| pin 3 | | Not Connected |
|
| pin 3 | | Not Connected |
|
||||||
| pin 4 | | GND |
|
| pin 4 | | GND |
|
||||||
|
|
||||||
**Note: check the datasheet how to connect!**
|
**Note: check the datasheet how to connect!**
|
||||||
|
|
||||||
|
|
||||||
## Specification DHT22
|
## Specification DHT22
|
||||||
|
|
||||||
| Model | DHT22 | Notes |
|
| Model | DHT22 | Notes |
|
||||||
|:--------------------------|:-----------------------|:------|
|
|:----------------------------|:-------------------------|:--------|
|
||||||
| Power supply | 3.3 - 6 V DC |
|
| Power supply | 3.3 - 6.0 V DC |
|
||||||
| Output signal | digital signal via single-bus |
|
| Output signal | digital signal via single-bus |
|
||||||
| Sensing element | Polymer capacitor |
|
| Sensing element | polymer capacitor |
|
||||||
| Operating range | humidity 0-100% RH | temperature -40° - 80° Celsius
|
| Operating range | humidity 0.0-100.0% RH | temperature -40° - 80° Celsius
|
||||||
| Accuracy humidity | ±2% RH(Max ±5% RH) | temperature < ±0.5° Celsius
|
| Accuracy humidity | ±2% RH(Max ±5% RH) | temperature < ±0.5° Celsius
|
||||||
| Resolution or sensitivity | humidity 0.1% RH | temperature 0.1° Celsius
|
| Resolution or sensitivity | humidity 0.1% RH | temperature 0.1° Celsius
|
||||||
| Repeatability humidity | ±1% RH | temperature ±0.2° Celsius
|
| Repeatability humidity | ±1.0% RH | temperature ±0.2° Celsius
|
||||||
| Humidity hysteresis | ±0.3% RH |
|
| Humidity hysteresis | ±0.3% RH |
|
||||||
| Long-term Stability | ±0.5% RH/year |
|
| Long-term Stability | ±0.5% RH/year |
|
||||||
| Sensing period | Average: 2s |
|
| Sensing period | average: 2 s |
|
||||||
| Interchangeability | fully interchangeable |
|
| Interchangeability | fully interchangeable |
|
||||||
| Dimensions | small 14 x 18 x 5.5 mm | big 22 x 28 x 5 mm |
|
| Dimensions | small 14 x 18 x 5.5 mm | big 22 x 28 x 5 mm |
|
||||||
|
|
||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
@ -104,28 +109,37 @@ In case of 0, **getType()** will try to determine type.
|
|||||||
Since 0.4.14 type 70 is added for **experimental** Sonoff Si7021 support.
|
Since 0.4.14 type 70 is added for **experimental** Sonoff Si7021 support.
|
||||||
- **void setType(uint8_t type = 0)** allows to force the type of the sensor.
|
- **void setType(uint8_t type = 0)** allows to force the type of the sensor.
|
||||||
|
|
||||||
| type | sensors | notes |
|
| Type | Sensors | Notes |
|
||||||
|:------:|:---------------:|:---------------|
|
|:-------:|:---------------:|:--------|
|
||||||
| 0 | not defined | |
|
| 0 | not defined |
|
||||||
| 11 | DHT11 | |
|
| 11 | DHT11 |
|
||||||
| 22 | DHT22 a.o | most others |
|
| 22 | DHT22 a.o | most others
|
||||||
| 70 | Sonoff Si7021 | experimental |
|
| 23 | DHT22 a.o | mapped to 22 for now
|
||||||
|
| 70 | Sonoff Si7021 | experimental
|
||||||
|
| other | sets to 0 | 0.4.20
|
||||||
|
|
||||||
|
|
||||||
### Base interface
|
### Base interface
|
||||||
|
|
||||||
- **int read()** reads a new temperature and humidity from the sensor
|
- **int read()** reads a new temperature (Celsius) and humidity (%RH) from the sensor.
|
||||||
- **uint32_t lastRead()** returns milliseconds since last **read()**
|
- **uint32_t lastRead()** returns milliseconds since last **read()**
|
||||||
- **float getHumidity()** returns last read value (float) or -999 in case of error.
|
- **float getHumidity()** returns last read humidity = 0.0 - 100.0 %RH.
|
||||||
|
In case of an error it returns **DHTLIB_INVALID_VALUE** == -999.
|
||||||
Note this error value can be suppressed by **setSuppressError(bool)**.
|
Note this error value can be suppressed by **setSuppressError(bool)**.
|
||||||
- **float getTemperature()** returns last read value (float) or -999 in case of error.
|
- **float getTemperature()** returns last read temperature in Celsius.
|
||||||
|
Range depends on the sensor.
|
||||||
|
In case of an error it returns **DHTLIB_INVALID_VALUE** == -999.
|
||||||
Note this error value can be suppressed by **setSuppressError(bool)**.
|
Note this error value can be suppressed by **setSuppressError(bool)**.
|
||||||
|
|
||||||
|
|
||||||
### Offset
|
### Offset
|
||||||
|
|
||||||
Adding offsets works well in normal range however they might introduce under- or overflow at the ends of the sensor range.
|
Adding offsets works well in normal range however they might introduce
|
||||||
humidity is constrained to 0..100% in the code. For temperature such constrain would be type dependant, so not done.
|
under- or overflow at the ends of the sensor range.
|
||||||
|
Humidity is in % RH.
|
||||||
|
Humidity is constrained to 0.0 - 100.0 % in the code.
|
||||||
|
Temperature is in degrees Celsius.
|
||||||
|
For temperature such constrain would be type dependant, so it is not done.
|
||||||
|
|
||||||
- **void setHumOffset(float offset)** typical < ±5% RH.
|
- **void setHumOffset(float offset)** typical < ±5% RH.
|
||||||
- **void setTempOffset(float offset)** typical < ±2°C.
|
- **void setTempOffset(float offset)** typical < ±2°C.
|
||||||
@ -137,18 +151,21 @@ humidity is constrained to 0..100% in the code. For temperature such constrain w
|
|||||||
|
|
||||||
Functions to adjust the communication with the sensor.
|
Functions to adjust the communication with the sensor.
|
||||||
|
|
||||||
- **void setDisableIRQ(bool b )** allows or suppresses interrupts during core read function to keep timing as correct as possible. **Note AVR + MKR1010**
|
- **void setDisableIRQ(bool b )** allows or suppresses interrupts during core
|
||||||
|
read function to keep timing as correct as possible. **Note AVR + MKR1010**
|
||||||
- **bool getDisableIRQ()** returns the above setting. Default **true**.
|
- **bool getDisableIRQ()** returns the above setting. Default **true**.
|
||||||
- **void setWaitForReading(bool b )** flag to enforce a blocking wait.
|
- **void setWaitForReading(bool b )** flag to enforce a blocking wait.
|
||||||
- **bool getWaitForReading()** returns the above setting.
|
- **bool getWaitForReading()** returns the above setting.
|
||||||
- **void setReadDelay(uint16_t rd = 0)** To tune the time it waits before actual read. This reduces the blocking time.
|
- **void setReadDelay(uint16_t rd = 0)** To tune the time it waits before actual read.
|
||||||
|
This reduces the blocking time.
|
||||||
Default depends on type. 1000 ms (dht11) or 2000 ms (dht22).
|
Default depends on type. 1000 ms (dht11) or 2000 ms (dht22).
|
||||||
set readDelay to 0 will reset to datasheet values AFTER a call to **read()**.
|
set readDelay to 0 will reset to datasheet values AFTER a call to **read()**.
|
||||||
- **uint16_t getReadDelay()** returns the above setting.
|
- **uint16_t getReadDelay()** returns the above setting.
|
||||||
- **void powerDown()** pulls dataPin down to reduce power consumption
|
- **void powerDown()** pulls dataPin down to reduce power consumption
|
||||||
- **void powerUp()** restarts the sensor, note one must wait up to two seconds.
|
- **void powerUp()** restarts the sensor, note one must wait up to two seconds.
|
||||||
- **void setSuppressError(bool b)** suppress error values of -999 => you need to check the return value of read() instead.
|
- **void setSuppressError(bool b)** suppress error values of -999 =>
|
||||||
This is used to keep spikes out of your graphs / logs.
|
You need to check the return value of read() instead.
|
||||||
|
This is used to keep spikes out of your plotter / graphs / logs.
|
||||||
- **bool getSuppressError()** returns the above setting.
|
- **bool getSuppressError()** returns the above setting.
|
||||||
|
|
||||||
|
|
||||||
@ -298,6 +315,8 @@ fix #86, define constants explicit as float.
|
|||||||
Update readme.md and library.\* about support for AM2320/21/22.
|
Update readme.md and library.\* about support for AM2320/21/22.
|
||||||
35. (0.4.19)
|
35. (0.4.19)
|
||||||
Update readme.md
|
Update readme.md
|
||||||
|
36. (0.4.20)
|
||||||
|
Update GitHub actions and readme.md
|
||||||
|
|
||||||
|
|
||||||
## Future
|
## Future
|
||||||
@ -318,13 +337,20 @@ Update readme.md
|
|||||||
|
|
||||||
#### Could
|
#### Could
|
||||||
|
|
||||||
- improve unit test
|
- test compatibility => table.
|
||||||
- investigate temperature constraining (type dependant)
|
- investigate temperature constraining (type dependant)
|
||||||
- fix DHTLIB_VALUE_OUT_OF_RANGE code
|
|
||||||
- move all code from .h to .cpp
|
```cpp
|
||||||
|
if (type == 11) temp = constrain(temp, 0, 100);
|
||||||
|
if (type == 22) temp = constrain(temp, -40, 80);
|
||||||
|
etc.
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
#### Wont
|
#### Wont
|
||||||
|
|
||||||
|
- move all code from .h to .cpp
|
||||||
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
|
|
||||||
#include <ArduinoUnitTests.h>
|
#include <ArduinoUnitTests.h>
|
||||||
|
|
||||||
#include "Arduino.h"
|
|
||||||
#include "dhtnew.h"
|
#include "dhtnew.h"
|
||||||
|
|
||||||
|
|
||||||
@ -46,10 +45,12 @@ unittest(test_constants)
|
|||||||
assertEqual(-6, DHTLIB_ERROR_TIMEOUT_D );
|
assertEqual(-6, DHTLIB_ERROR_TIMEOUT_D );
|
||||||
assertEqual(-7, DHTLIB_ERROR_TIMEOUT_B );
|
assertEqual(-7, DHTLIB_ERROR_TIMEOUT_B );
|
||||||
assertEqual(-8, DHTLIB_WAITING_FOR_READ );
|
assertEqual(-8, DHTLIB_WAITING_FOR_READ );
|
||||||
|
|
||||||
assertEqual(-100, DHTLIB_HUMIDITY_OUT_OF_RANGE );
|
assertEqual(-100, DHTLIB_HUMIDITY_OUT_OF_RANGE );
|
||||||
assertEqual(-101, DHTLIB_TEMPERATURE_OUT_OF_RANGE);
|
assertEqual(-101, DHTLIB_TEMPERATURE_OUT_OF_RANGE);
|
||||||
|
|
||||||
|
assertEqual(50, DHTLIB_BIT_THRESHOLD);
|
||||||
|
|
||||||
assertEqual(-999, DHTLIB_INVALID_VALUE);
|
assertEqual(-999, DHTLIB_INVALID_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,17 +59,24 @@ unittest(test_constructor)
|
|||||||
{
|
{
|
||||||
DHTNEW dht(4);
|
DHTNEW dht(4);
|
||||||
|
|
||||||
// verify default flags
|
// verify default flags
|
||||||
// assertEqual(0, dht.getType()); // calls read which blocks.
|
// assertEqual(0, dht.getType()); // calls read which blocks.
|
||||||
|
assertEqual(0.0, dht.getHumidity());
|
||||||
|
assertEqual(0.0, dht.getTemperature());
|
||||||
|
|
||||||
assertEqual(0, dht.getHumOffset());
|
assertEqual(0, dht.getHumOffset());
|
||||||
assertEqual(0, dht.getTempOffset());
|
assertEqual(0, dht.getTempOffset());
|
||||||
#if defined(__AVR__)
|
|
||||||
|
assertEqual(0, dht.lastRead());
|
||||||
|
|
||||||
|
#if defined(__AVR__)
|
||||||
fprintf(stderr, "__AVR__ defined.");
|
fprintf(stderr, "__AVR__ defined.");
|
||||||
assertFalse(dht.getDisableIRQ());
|
assertFalse(dht.getDisableIRQ());
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "__AVR__ not defined.");
|
fprintf(stderr, "__AVR__ not defined.");
|
||||||
assertTrue(dht.getDisableIRQ());
|
assertTrue(dht.getDisableIRQ());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
assertFalse(dht.getWaitForReading());
|
assertFalse(dht.getWaitForReading());
|
||||||
assertEqual(0, dht.getReadDelay());
|
assertEqual(0, dht.getReadDelay());
|
||||||
assertFalse(dht.getSuppressError());
|
assertFalse(dht.getSuppressError());
|
||||||
@ -83,7 +91,7 @@ unittest(test_hum_temp)
|
|||||||
assertEqual(0, dht.getHumOffset());
|
assertEqual(0, dht.getHumOffset());
|
||||||
dht.setHumOffset(1.5);
|
dht.setHumOffset(1.5);
|
||||||
assertEqual(1.5, dht.getHumOffset());
|
assertEqual(1.5, dht.getHumOffset());
|
||||||
|
|
||||||
assertEqual(0, dht.getTemperature());
|
assertEqual(0, dht.getTemperature());
|
||||||
assertEqual(0, dht.getTempOffset());
|
assertEqual(0, dht.getTempOffset());
|
||||||
dht.setTempOffset(-1.5);
|
dht.setTempOffset(-1.5);
|
||||||
@ -91,7 +99,7 @@ unittest(test_hum_temp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unittest(test_process_flags)
|
unittest(test_setType)
|
||||||
{
|
{
|
||||||
DHTNEW dht(4);
|
DHTNEW dht(4);
|
||||||
|
|
||||||
@ -99,17 +107,27 @@ unittest(test_process_flags)
|
|||||||
assertEqual(11, dht.getType());
|
assertEqual(11, dht.getType());
|
||||||
dht.setType(22);
|
dht.setType(22);
|
||||||
assertEqual(22, dht.getType());
|
assertEqual(22, dht.getType());
|
||||||
|
dht.setType(23);
|
||||||
|
assertEqual(23, dht.getType());
|
||||||
|
dht.setType(70);
|
||||||
|
assertEqual(70, dht.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unittest(test_process_flags)
|
||||||
|
{
|
||||||
|
DHTNEW dht(4);
|
||||||
|
|
||||||
dht.setDisableIRQ(true);
|
dht.setDisableIRQ(true);
|
||||||
assertTrue(dht.getDisableIRQ());
|
assertTrue(dht.getDisableIRQ());
|
||||||
dht.setDisableIRQ(false);
|
dht.setDisableIRQ(false);
|
||||||
assertFalse(dht.getDisableIRQ());
|
assertFalse(dht.getDisableIRQ());
|
||||||
|
|
||||||
dht.setWaitForReading(true);
|
dht.setWaitForReading(true);
|
||||||
assertTrue(dht.getWaitForReading());
|
assertTrue(dht.getWaitForReading());
|
||||||
dht.setWaitForReading(false);
|
dht.setWaitForReading(false);
|
||||||
assertFalse(dht.getWaitForReading());
|
assertFalse(dht.getWaitForReading());
|
||||||
|
|
||||||
dht.setReadDelay(1500);
|
dht.setReadDelay(1500);
|
||||||
assertEqual(1500, dht.getReadDelay());
|
assertEqual(1500, dht.getReadDelay());
|
||||||
dht.setType(11);
|
dht.setType(11);
|
||||||
@ -118,7 +136,7 @@ unittest(test_process_flags)
|
|||||||
dht.setType(22);
|
dht.setType(22);
|
||||||
dht.setReadDelay();
|
dht.setReadDelay();
|
||||||
assertEqual(0, dht.getReadDelay());
|
assertEqual(0, dht.getReadDelay());
|
||||||
|
|
||||||
dht.setSuppressError(true);
|
dht.setSuppressError(true);
|
||||||
assertTrue(dht.getSuppressError());
|
assertTrue(dht.getSuppressError());
|
||||||
dht.setSuppressError(false);
|
dht.setSuppressError(false);
|
||||||
@ -131,13 +149,15 @@ unittest(test_read)
|
|||||||
DHTNEW dht(4);
|
DHTNEW dht(4);
|
||||||
|
|
||||||
fprintf(stderr, "\tread() cannot be tested GODMODE?\n");
|
fprintf(stderr, "\tread() cannot be tested GODMODE?\n");
|
||||||
// int rc = dht.read();
|
// int rc = dht.read();
|
||||||
// fprintf(stderr, "%d\n", rc);
|
// fprintf(stderr, "%d\n", rc);
|
||||||
|
|
||||||
long lr = dht.lastRead();
|
long lr = dht.lastRead();
|
||||||
fprintf(stderr, "\ttime since lastRead %ld\n", lr);
|
fprintf(stderr, "\ttime since lastRead %ld\n", lr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unittest_main()
|
unittest_main()
|
||||||
|
|
||||||
// --------
|
|
||||||
|
// -- END OF FILE --
|
||||||
|
Loading…
Reference in New Issue
Block a user