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
|
||||
|
||||
github: RobTillaart
|
||||
GitHub: RobTillaart
|
||||
custom: "https://www.paypal.me/robtillaart"
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
|
||||
name: Arduino-lint
|
||||
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: arduino/arduino-lint-action@v1
|
||||
with:
|
||||
library-manager: update
|
||||
|
@ -6,12 +6,14 @@ on: [push, pull_request]
|
||||
jobs:
|
||||
runTest:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.6
|
||||
- run: |
|
||||
sudo sysctl vm.mmap_rnd_bits=28
|
||||
gem install arduino_ci
|
||||
arduino_ci.rb
|
||||
|
@ -9,10 +9,10 @@ on:
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: json-syntax-check
|
||||
uses: limitusus/json-syntax-check@v1
|
||||
uses: limitusus/json-syntax-check@v2
|
||||
with:
|
||||
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/).
|
||||
|
||||
|
||||
## [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
|
||||
- update readme.md
|
||||
|
||||
|
||||
## [0.4.18] - 2023-01-09
|
||||
- update license to 2023
|
||||
- update GitHub actions
|
||||
|
@ -1,6 +1,6 @@
|
||||
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
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -1,7 +1,7 @@
|
||||
//
|
||||
// FILE: dhtnew.cpp
|
||||
// AUTHOR: Rob Tillaart
|
||||
// VERSION: 0.4.19
|
||||
// VERSION: 0.4.20
|
||||
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
||||
// URL: https://github.com/RobTillaart/DHTNEW
|
||||
//
|
||||
@ -47,10 +47,10 @@ void DHTNEW::reset()
|
||||
|
||||
_wakeupDelay = 0;
|
||||
_type = 0;
|
||||
_humOffset = (float)0.0;
|
||||
_tempOffset = (float)0.0;
|
||||
_humidity = (float)0.0;
|
||||
_temperature = (float)0.0;
|
||||
_humOffset = 0.0;
|
||||
_tempOffset = 0.0;
|
||||
_humidity = 0.0;
|
||||
_temperature = 0.0;
|
||||
_lastRead = 0;
|
||||
_disableIRQ = true;
|
||||
_waitForRead = false;
|
||||
@ -74,18 +74,22 @@ uint8_t DHTNEW::getType()
|
||||
|
||||
void DHTNEW::setType(uint8_t type)
|
||||
{
|
||||
if ((type == 0) || (type == 11))
|
||||
{
|
||||
_type = type;
|
||||
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
||||
}
|
||||
// default type == 0 or unsupported
|
||||
_type = 0;
|
||||
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
||||
|
||||
if ((type == 22) || (type == 23))
|
||||
{
|
||||
_type = type;
|
||||
_wakeupDelay = DHTLIB_DHT_WAKEUP;
|
||||
}
|
||||
else if (type == 11)
|
||||
{
|
||||
_type = type;
|
||||
_wakeupDelay = DHTLIB_DHT11_WAKEUP;
|
||||
}
|
||||
// experimental 0.4.14
|
||||
if (type == 70)
|
||||
else if (type == 70)
|
||||
{
|
||||
_type = type;
|
||||
_wakeupDelay = DHTLIB_SI7021_WAKEUP;
|
||||
@ -192,7 +196,7 @@ int DHTNEW::_read()
|
||||
int16_t t = ((_bits[2] & 0x7F) * 256 + _bits[3]);
|
||||
if (t == 0)
|
||||
{
|
||||
_temperature = (float)0.0; // prevent -0.0;
|
||||
_temperature = 0.0; // prevent -0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -205,14 +209,14 @@ int DHTNEW::_read()
|
||||
}
|
||||
|
||||
|
||||
// HEXDUMP DEBUG
|
||||
// HEXDUMP DEBUG
|
||||
/*
|
||||
Serial.println();
|
||||
// CHECKSUM
|
||||
// CHECKSUM
|
||||
if (_bits[4] < 0x10) Serial.print(0);
|
||||
Serial.print(_bits[4], HEX);
|
||||
Serial.print(" ");
|
||||
// TEMPERATURE
|
||||
// TEMPERATURE
|
||||
if (_bits[2] < 0x10) Serial.print(0);
|
||||
Serial.print(_bits[2], HEX);
|
||||
if (_bits[3] < 0x10) Serial.print(0);
|
||||
@ -220,7 +224,7 @@ int DHTNEW::_read()
|
||||
Serial.print(" ");
|
||||
Serial.print(_temperature, 1);
|
||||
Serial.print(" ");
|
||||
// HUMIDITY
|
||||
// HUMIDITY
|
||||
if (_bits[0] < 0x10) Serial.print(0);
|
||||
Serial.print(_bits[0], HEX);
|
||||
if (_bits[1] < 0x10) Serial.print(0);
|
||||
@ -241,13 +245,13 @@ int DHTNEW::_read()
|
||||
}
|
||||
#endif
|
||||
|
||||
if (_humOffset != (float)0.0)
|
||||
if (_humOffset != 0.0)
|
||||
{
|
||||
_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;
|
||||
}
|
||||
@ -266,7 +270,7 @@ int DHTNEW::_read()
|
||||
void DHTNEW::powerUp()
|
||||
{
|
||||
digitalWrite(_dataPin, HIGH);
|
||||
// do a dummy read to sync the sensor
|
||||
// do a dummy read to synchronise the sensor
|
||||
read();
|
||||
};
|
||||
|
||||
@ -298,7 +302,10 @@ int DHTNEW::_readSensor()
|
||||
uint8_t idx = 0;
|
||||
|
||||
// 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
|
||||
pinMode(_dataPin, OUTPUT);
|
||||
@ -412,7 +419,7 @@ bool DHTNEW::_waitFor(uint8_t state, uint32_t timeout)
|
||||
uint8_t count = 2;
|
||||
while ((micros() - start) < timeout)
|
||||
{
|
||||
// d elayMicroseconds(1); // less # reads ==> minimizes # glitch reads
|
||||
// delayMicroseconds(1); // less # reads ==> minimizes # glitch reads
|
||||
if (digitalRead(_dataPin) == state)
|
||||
{
|
||||
count--;
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// FILE: dhtnew.h
|
||||
// AUTHOR: Rob Tillaart
|
||||
// VERSION: 0.4.19
|
||||
// VERSION: 0.4.20
|
||||
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
|
||||
// URL: https://github.com/RobTillaart/DHTNEW
|
||||
//
|
||||
@ -18,7 +18,7 @@
|
||||
#include "Arduino.h"
|
||||
|
||||
|
||||
#define DHTNEW_LIB_VERSION (F("0.4.19"))
|
||||
#define DHTNEW_LIB_VERSION (F("0.4.20"))
|
||||
|
||||
|
||||
#define DHTLIB_OK 0
|
||||
@ -59,12 +59,13 @@ public:
|
||||
DHTNEW(uint8_t pin);
|
||||
|
||||
// resets all internals to construction time
|
||||
// might help to reset a sensor behaving badly..
|
||||
// might help to reset a sensor behaving badly
|
||||
void reset();
|
||||
|
||||
// 0 = unknown
|
||||
// 11 = DHT11 and compatibles
|
||||
// 22 = DHT22 and compatibles
|
||||
// 23 = mapped to 22 for now (AM23xx)
|
||||
// 70 = Sonoff Si7021
|
||||
uint8_t getType();
|
||||
void setType(uint8_t type = 0);
|
||||
@ -108,10 +109,10 @@ private:
|
||||
uint8_t _dataPin = 0;
|
||||
uint32_t _wakeupDelay = 0;
|
||||
uint8_t _type = 0;
|
||||
float _humOffset = (float)0.0;
|
||||
float _tempOffset = (float)0.0;
|
||||
float _humidity = (float)0.0;
|
||||
float _temperature = (float)0.0;
|
||||
float _humOffset = 0.0;
|
||||
float _tempOffset = 0.0;
|
||||
float _humidity = 0.0;
|
||||
float _temperature = 0.0;
|
||||
uint32_t _lastRead = 0;
|
||||
bool _disableIRQ = true;
|
||||
bool _waitForRead = false;
|
||||
|
@ -6,30 +6,30 @@
|
||||
//
|
||||
|
||||
//
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
// Note:
|
||||
// Adaptive delay makes no sense anymore as the DHTNEW lib catches reads that
|
||||
// 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.
|
||||
// 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%?)
|
||||
// Note:
|
||||
// Adaptive delay makes no sense anymore as the DHTNEW lib catches reads that
|
||||
// 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.
|
||||
// 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%?)
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("dhtnew_adaptive_delay.ino");
|
||||
@ -37,8 +37,8 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
||||
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
||||
@ -97,7 +97,7 @@ void loop()
|
||||
void test()
|
||||
{
|
||||
static uint16_t dht_delay = 600;
|
||||
// READ DATA
|
||||
// READ DATA
|
||||
uint32_t start = micros();
|
||||
int chk = mySensor.read();
|
||||
uint32_t stop = micros();
|
||||
@ -144,7 +144,7 @@ void test()
|
||||
}
|
||||
|
||||
dht_delay = constrain(dht_delay, 100, 5000);
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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)
|
||||
{
|
||||
// READ DATA
|
||||
// READ DATA
|
||||
uint32_t start = micros();
|
||||
int chk = ar[idx].read();
|
||||
uint32_t stop = micros();
|
||||
@ -99,7 +99,7 @@ void test(int idx)
|
||||
break;
|
||||
}
|
||||
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(ar[idx].getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
@ -26,17 +26,17 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
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
|
||||
// (c) : MIT
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#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 start, stop;
|
||||
@ -26,7 +26,7 @@ uint32_t errors[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("DHT_endless.ino");
|
||||
@ -34,15 +34,15 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
count++;
|
||||
// show counters for OK and errors.
|
||||
// show counters for OK and errors.
|
||||
if (count % 50 == 0)
|
||||
{
|
||||
Serial.println();
|
||||
@ -115,7 +115,7 @@ void loop()
|
||||
errors[9]++;
|
||||
break;
|
||||
}
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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
|
||||
// (c) : MIT
|
||||
|
||||
// DHT PINs' layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PINs' layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
@ -25,7 +25,7 @@ uint32_t errors[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("DHT_endless.ino");
|
||||
@ -33,8 +33,8 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ void DHTt(const uint8_t pin)
|
||||
DHTNEW mySensor(pin);
|
||||
|
||||
count++;
|
||||
// show counters for OK and errors.
|
||||
// show counters for OK and errors.
|
||||
if (count % 50 == 0)
|
||||
{
|
||||
Serial.println();
|
||||
@ -120,7 +120,7 @@ void DHTt(const uint8_t pin)
|
||||
errors[9]++;
|
||||
break;
|
||||
}
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
Serial.println("BEFORE OFFSET");
|
||||
delay(2000);
|
||||
@ -55,5 +55,5 @@ void loop()
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
// -- END OF FILE --
|
||||
|
||||
|
@ -4,13 +4,13 @@
|
||||
// PURPOSE: DHTNEW library test sketch
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
@ -20,7 +20,7 @@ uint64_t previousMillis;
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
@ -32,8 +32,8 @@ void DHTt(uint8_t pin)
|
||||
{
|
||||
DHTNEW mySensor(pin);
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
// 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
|
||||
// data transfer.
|
||||
// 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
|
||||
// data transfer.
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
@ -24,15 +24,15 @@ DHTNEW mySensor(16);
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("dhtnew_test.ino");
|
||||
Serial.print("LIBRARY VERSION: ");
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
Serial.println("\nstartup");
|
||||
delay(2000);
|
||||
@ -43,7 +43,7 @@ void setup()
|
||||
int rv = mySensor.read();
|
||||
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(",\t");
|
||||
@ -58,7 +58,7 @@ void setup()
|
||||
|
||||
Serial.println("switch sensor on (and wait 2 seconds)");
|
||||
mySensor.powerUp();
|
||||
// wait for 2 seconds.
|
||||
// wait for 2 seconds.
|
||||
delay(2000);
|
||||
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include "Arduino.h"
|
||||
@ -28,13 +28,13 @@ uint8_t idx = 0;
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("dhtnew_pulse_diag.ino");
|
||||
Serial.println();
|
||||
|
||||
// default should be HIGH
|
||||
// default should be HIGH
|
||||
pinMode(_dataPin, OUTPUT);
|
||||
digitalWrite(_dataPin, HIGH);
|
||||
}
|
||||
@ -104,61 +104,61 @@ void dump()
|
||||
void measure()
|
||||
{
|
||||
count++;
|
||||
// yield(); // handle pending interrupts
|
||||
// yield(); // handle pending interrupts
|
||||
|
||||
// reset measurements table
|
||||
// reset measurements table
|
||||
idx = 0;
|
||||
t = micros();
|
||||
for (int i = 0; i < 100; i++) times[i] = 0;
|
||||
|
||||
times[idx++] = micros();
|
||||
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
||||
// REQUEST SAMPLE - SEND WAKEUP TO SENSOR
|
||||
pinMode(_dataPin, OUTPUT);
|
||||
digitalWrite(_dataPin, LOW);
|
||||
// add 10% extra for timing inaccuracies in sensor.
|
||||
// add 10% extra for timing inaccuracies in sensor.
|
||||
delayMicroseconds(_wakeupDelay * 1100UL);
|
||||
|
||||
Serial.print("awake ");
|
||||
|
||||
times[idx++] = micros();
|
||||
// HOST GIVES CONTROL TO SENSOR
|
||||
// HOST GIVES CONTROL TO SENSOR
|
||||
pinMode(_dataPin, INPUT_PULLUP);
|
||||
|
||||
// DISABLE INTERRUPTS when clock in the bits
|
||||
// noInterrupts(); // gives problems on AVR
|
||||
// DISABLE INTERRUPTS when clock in the bits
|
||||
// noInterrupts(); // gives problems on AVR
|
||||
|
||||
|
||||
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);
|
||||
|
||||
Serial.print("2 ");
|
||||
|
||||
times[idx++] = micros();
|
||||
// SENSOR STAYS LOW for ~80 us => or TIMEOUT
|
||||
// SENSOR STAYS LOW for ~80 us => or TIMEOUT
|
||||
while (digitalRead(_dataPin) == LOW);
|
||||
|
||||
Serial.print("3 ");
|
||||
|
||||
|
||||
times[idx++] = micros();
|
||||
// SENSOR STAYS HIGH for ~80 us => or TIMEOUT
|
||||
// SENSOR STAYS HIGH for ~80 us => or TIMEOUT
|
||||
while (digitalRead(_dataPin) == HIGH);
|
||||
times[idx++] = micros();
|
||||
|
||||
Serial.print("4 ");
|
||||
|
||||
|
||||
// SENSOR HAS NOW SEND ACKNOWLEDGE ON WAKEUP
|
||||
// NOW IT SENDS THE BITS
|
||||
// SENSOR HAS NOW SEND ACKNOWLEDGE ON WAKEUP
|
||||
// NOW IT SENDS THE BITS
|
||||
|
||||
// READ THE OUTPUT - 40 BITS => 5 BYTES
|
||||
// READ THE OUTPUT - 40 BITS => 5 BYTES
|
||||
uint32_t start = micros();
|
||||
uint8_t i = 40;
|
||||
for (i = 40; i != 0; i--)
|
||||
{
|
||||
times[idx++] = micros();
|
||||
// EACH BIT START WITH ~50 us LOW
|
||||
// EACH BIT START WITH ~50 us LOW
|
||||
while (digitalRead(_dataPin) == LOW)
|
||||
{
|
||||
if (micros() - start > 10000)
|
||||
@ -171,9 +171,9 @@ void measure()
|
||||
}
|
||||
|
||||
times[idx++] = micros();
|
||||
// DURATION OF HIGH DETERMINES 0 or 1
|
||||
// 26-28 us ==> 0
|
||||
// 70 us ==> 1
|
||||
// DURATION OF HIGH DETERMINES 0 or 1
|
||||
// 26-28 us ==> 0
|
||||
// 70 us ==> 1
|
||||
while (digitalRead(_dataPin) == HIGH)
|
||||
{
|
||||
if (micros() - start > 10000)
|
||||
@ -187,8 +187,8 @@ void measure()
|
||||
Serial.print("5 ");
|
||||
|
||||
times[idx++] = micros();
|
||||
// After 40 bits the sensor pulls the line LOW for 50 us
|
||||
// TODO: should we wait?
|
||||
// After 40 bits the sensor pulls the line LOW for 50 us
|
||||
// TODO: should we wait?
|
||||
while (digitalRead(_dataPin) == LOW);
|
||||
|
||||
Serial.print("6 ");
|
||||
@ -206,4 +206,4 @@ void measure()
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
// -- END OF FILE --
|
||||
|
@ -4,33 +4,33 @@
|
||||
// PURPOSE: DHTNEW library test sketch
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#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;
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
Serial.print("DHTNEW_LIB_VERSION: ");
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// 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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println(__FILE__);
|
||||
@ -28,10 +28,10 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
delay(2000); // boot time
|
||||
delay(2000); // boot time
|
||||
|
||||
mySensor.setWaitForReading(true);
|
||||
|
||||
@ -60,7 +60,7 @@ void setup()
|
||||
}
|
||||
}
|
||||
|
||||
// safety margin of 100 uSec
|
||||
// safety margin of 100 uSec
|
||||
rd += 100;
|
||||
mySensor.setReadDelay(rd);
|
||||
Serial.print("\nreadDelay set to (ms) : ");
|
||||
@ -71,8 +71,8 @@ void setup()
|
||||
|
||||
void loop()
|
||||
{
|
||||
// Note: the library prevents reads faster than readDelay...
|
||||
// it will return previous values for T & H
|
||||
// Note: the library prevents reads faster than readDelay...
|
||||
// it will return previous values for T & H
|
||||
int chk = mySensor.read();
|
||||
Serial.print(millis());
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
// run sketch without connected sensor to see effect
|
||||
// run sketch without connected sensor to see effect
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
@ -4,23 +4,23 @@
|
||||
// PURPOSE: DHTNEW library test sketch for Arduino
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("dhtnew_test.ino");
|
||||
@ -28,8 +28,8 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010
|
||||
// mySensor.setDisableIRQ(false);
|
||||
|
||||
Serial.println("\n1. Type detection test, first run might take longer to determine type");
|
||||
Serial.println("STAT\tHUMI\tTEMP\tTIME\tTYPE");
|
||||
@ -86,7 +86,7 @@ void loop()
|
||||
|
||||
void test()
|
||||
{
|
||||
// READ DATA
|
||||
// READ DATA
|
||||
uint32_t start = micros();
|
||||
int chk = mySensor.read();
|
||||
uint32_t stop = micros();
|
||||
@ -127,7 +127,7 @@ void test()
|
||||
break;
|
||||
}
|
||||
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("\n");
|
||||
@ -29,8 +29,8 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(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.");
|
||||
@ -66,16 +66,16 @@ void loop()
|
||||
|
||||
void test()
|
||||
{
|
||||
// READ DATA
|
||||
// READ DATA
|
||||
uint32_t start = micros();
|
||||
int chk = mySensor.read();
|
||||
uint32_t stop = micros();
|
||||
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");}
|
||||
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
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
|
||||
// URL: https://github.com/RobTillaart/DHTNew
|
||||
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
// DHT PIN layout from left to right
|
||||
// =================================
|
||||
// FRONT : DESCRIPTION
|
||||
// pin 1 : VCC
|
||||
// pin 2 : DATA
|
||||
// pin 3 : Not Connected
|
||||
// pin 4 : GND
|
||||
|
||||
|
||||
#include <dhtnew.h>
|
||||
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
DHTNEW mySensor(5); // ESP 16 UNO 5 MKR1010 5
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
while(!Serial); // MKR1010 needs this
|
||||
while(!Serial); // MKR1010 needs this
|
||||
|
||||
Serial.begin(115200);
|
||||
Serial.println("\n");
|
||||
@ -29,8 +29,8 @@ void setup()
|
||||
Serial.println(DHTNEW_LIB_VERSION);
|
||||
Serial.println();
|
||||
|
||||
// MKR1010 needs this
|
||||
// mySensor.setDisableIRQ(false);
|
||||
// MKR1010 needs this
|
||||
// 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("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()
|
||||
{
|
||||
// READ DATA
|
||||
// READ DATA
|
||||
uint32_t start = micros();
|
||||
int chk = mySensor.read();
|
||||
uint32_t stop = micros();
|
||||
@ -81,7 +81,7 @@ void loop()
|
||||
break;
|
||||
}
|
||||
|
||||
// DISPLAY DATA
|
||||
// DISPLAY DATA
|
||||
Serial.print(mySensor.getHumidity(), 1);
|
||||
Serial.print(",\t");
|
||||
Serial.print(mySensor.getTemperature(), 1);
|
||||
@ -92,10 +92,10 @@ void loop()
|
||||
Serial.println(mySensor.getType());
|
||||
}
|
||||
|
||||
// do some other stuff
|
||||
// do some other stuff
|
||||
delay(100);
|
||||
}
|
||||
|
||||
|
||||
// -- END OF FILE --
|
||||
// -- END OF FILE --
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
"type": "git",
|
||||
"url": "https://github.com/RobTillaart/DHTNEW.git"
|
||||
},
|
||||
"version": "0.4.19",
|
||||
"version": "0.4.20",
|
||||
"license": "MIT",
|
||||
"frameworks": "*",
|
||||
"platforms": "*",
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=DHTNEW
|
||||
version=0.4.19
|
||||
version=0.4.20
|
||||
author=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.
|
||||
|
@ -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.
|
||||
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
|
||||
|
||||
@ -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.
|
||||
|
||||
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.
|
||||
|
||||
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/DHTStable
|
||||
- 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
|
||||
|
||||
| Front | | Description |
|
||||
|:------|:----:|:--------------|
|
||||
| pin 1 | | VCC |
|
||||
| pin 2 | | DATA |
|
||||
| pin 3 | | Not Connected |
|
||||
| pin 4 | | GND |
|
||||
| Front | | Description |
|
||||
|:--------|:----:|:----------------|
|
||||
| pin 1 | | VCC |
|
||||
| pin 2 | | DATA |
|
||||
| pin 3 | | Not Connected |
|
||||
| pin 4 | | GND |
|
||||
|
||||
**Note: check the datasheet how to connect!**
|
||||
|
||||
|
||||
## Specification DHT22
|
||||
|
||||
| Model | DHT22 | Notes |
|
||||
|:--------------------------|:-----------------------|:------|
|
||||
| Power supply | 3.3 - 6 V DC |
|
||||
| Output signal | digital signal via single-bus |
|
||||
| Sensing element | Polymer capacitor |
|
||||
| Operating range | humidity 0-100% RH | temperature -40° - 80° Celsius
|
||||
| Accuracy humidity | ±2% RH(Max ±5% RH) | temperature < ±0.5° Celsius
|
||||
| Resolution or sensitivity | humidity 0.1% RH | temperature 0.1° Celsius
|
||||
| Repeatability humidity | ±1% RH | temperature ±0.2° Celsius
|
||||
| Humidity hysteresis | ±0.3% RH |
|
||||
| Long-term Stability | ±0.5% RH/year |
|
||||
| Sensing period | Average: 2s |
|
||||
| Interchangeability | fully interchangeable |
|
||||
| Dimensions | small 14 x 18 x 5.5 mm | big 22 x 28 x 5 mm |
|
||||
| Model | DHT22 | Notes |
|
||||
|:----------------------------|:-------------------------|:--------|
|
||||
| Power supply | 3.3 - 6.0 V DC |
|
||||
| Output signal | digital signal via single-bus |
|
||||
| Sensing element | polymer capacitor |
|
||||
| Operating range | humidity 0.0-100.0% RH | temperature -40° - 80° Celsius
|
||||
| Accuracy humidity | ±2% RH(Max ±5% RH) | temperature < ±0.5° Celsius
|
||||
| Resolution or sensitivity | humidity 0.1% RH | temperature 0.1° Celsius
|
||||
| Repeatability humidity | ±1.0% RH | temperature ±0.2° Celsius
|
||||
| Humidity hysteresis | ±0.3% RH |
|
||||
| Long-term Stability | ±0.5% RH/year |
|
||||
| Sensing period | average: 2 s |
|
||||
| Interchangeability | fully interchangeable |
|
||||
| Dimensions | small 14 x 18 x 5.5 mm | big 22 x 28 x 5 mm |
|
||||
|
||||
|
||||
## 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.
|
||||
- **void setType(uint8_t type = 0)** allows to force the type of the sensor.
|
||||
|
||||
| type | sensors | notes |
|
||||
|:------:|:---------------:|:---------------|
|
||||
| 0 | not defined | |
|
||||
| 11 | DHT11 | |
|
||||
| 22 | DHT22 a.o | most others |
|
||||
| 70 | Sonoff Si7021 | experimental |
|
||||
| Type | Sensors | Notes |
|
||||
|:-------:|:---------------:|:--------|
|
||||
| 0 | not defined |
|
||||
| 11 | DHT11 |
|
||||
| 22 | DHT22 a.o | most others
|
||||
| 23 | DHT22 a.o | mapped to 22 for now
|
||||
| 70 | Sonoff Si7021 | experimental
|
||||
| other | sets to 0 | 0.4.20
|
||||
|
||||
|
||||
### 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()**
|
||||
- **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)**.
|
||||
- **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)**.
|
||||
|
||||
|
||||
### Offset
|
||||
|
||||
Adding offsets works well in normal range however they might introduce under- or overflow at the ends of the sensor range.
|
||||
humidity is constrained to 0..100% in the code. For temperature such constrain would be type dependant, so not done.
|
||||
Adding offsets works well in normal range however they might introduce
|
||||
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 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.
|
||||
|
||||
- **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**.
|
||||
- **void setWaitForReading(bool b )** flag to enforce a blocking wait.
|
||||
- **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).
|
||||
set readDelay to 0 will reset to datasheet values AFTER a call to **read()**.
|
||||
- **uint16_t getReadDelay()** returns the above setting.
|
||||
- **void powerDown()** pulls dataPin down to reduce power consumption
|
||||
- **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.
|
||||
This is used to keep spikes out of your graphs / logs.
|
||||
- **void setSuppressError(bool b)** suppress error values of -999 =>
|
||||
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.
|
||||
|
||||
|
||||
@ -298,6 +315,8 @@ fix #86, define constants explicit as float.
|
||||
Update readme.md and library.\* about support for AM2320/21/22.
|
||||
35. (0.4.19)
|
||||
Update readme.md
|
||||
36. (0.4.20)
|
||||
Update GitHub actions and readme.md
|
||||
|
||||
|
||||
## Future
|
||||
@ -318,13 +337,20 @@ Update readme.md
|
||||
|
||||
#### Could
|
||||
|
||||
- improve unit test
|
||||
- test compatibility => table.
|
||||
- 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
|
||||
|
||||
- move all code from .h to .cpp
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#include <ArduinoUnitTests.h>
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "dhtnew.h"
|
||||
|
||||
|
||||
@ -50,6 +49,8 @@ unittest(test_constants)
|
||||
assertEqual(-100, DHTLIB_HUMIDITY_OUT_OF_RANGE );
|
||||
assertEqual(-101, DHTLIB_TEMPERATURE_OUT_OF_RANGE);
|
||||
|
||||
assertEqual(50, DHTLIB_BIT_THRESHOLD);
|
||||
|
||||
assertEqual(-999, DHTLIB_INVALID_VALUE);
|
||||
}
|
||||
|
||||
@ -58,17 +59,24 @@ unittest(test_constructor)
|
||||
{
|
||||
DHTNEW dht(4);
|
||||
|
||||
// verify default flags
|
||||
// assertEqual(0, dht.getType()); // calls read which blocks.
|
||||
// verify default flags
|
||||
// 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.getTempOffset());
|
||||
#if defined(__AVR__)
|
||||
|
||||
assertEqual(0, dht.lastRead());
|
||||
|
||||
#if defined(__AVR__)
|
||||
fprintf(stderr, "__AVR__ defined.");
|
||||
assertFalse(dht.getDisableIRQ());
|
||||
#else
|
||||
#else
|
||||
fprintf(stderr, "__AVR__ not defined.");
|
||||
assertTrue(dht.getDisableIRQ());
|
||||
#endif
|
||||
#endif
|
||||
|
||||
assertFalse(dht.getWaitForReading());
|
||||
assertEqual(0, dht.getReadDelay());
|
||||
assertFalse(dht.getSuppressError());
|
||||
@ -91,7 +99,7 @@ unittest(test_hum_temp)
|
||||
}
|
||||
|
||||
|
||||
unittest(test_process_flags)
|
||||
unittest(test_setType)
|
||||
{
|
||||
DHTNEW dht(4);
|
||||
|
||||
@ -99,6 +107,16 @@ unittest(test_process_flags)
|
||||
assertEqual(11, dht.getType());
|
||||
dht.setType(22);
|
||||
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);
|
||||
assertTrue(dht.getDisableIRQ());
|
||||
@ -131,13 +149,15 @@ unittest(test_read)
|
||||
DHTNEW dht(4);
|
||||
|
||||
fprintf(stderr, "\tread() cannot be tested GODMODE?\n");
|
||||
// int rc = dht.read();
|
||||
// fprintf(stderr, "%d\n", rc);
|
||||
// int rc = dht.read();
|
||||
// fprintf(stderr, "%d\n", rc);
|
||||
|
||||
long lr = dht.lastRead();
|
||||
fprintf(stderr, "\ttime since lastRead %ld\n", lr);
|
||||
}
|
||||
|
||||
|
||||
unittest_main()
|
||||
|
||||
// --------
|
||||
|
||||
// -- END OF FILE --
|
||||
|
Loading…
Reference in New Issue
Block a user