0.2.0 CHT8305

This commit is contained in:
Rob Tillaart 2023-12-05 20:46:08 +01:00
parent 581e65e705
commit ce66af044b
12 changed files with 114 additions and 101 deletions

View File

@ -6,13 +6,25 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [0.2.0] - 2023-12-05
- refactor API, constructor, begin()
- update readme.md
- rename setHumOffset => **setHumidityOffset()**
- rename getHumOffset => **getHumidityOffset()**
- rename setTempOffset => **setTemperatureOffset()**
- rename getTempOffset => **getTemperatureOffset()**
- update examples
- update keywords.txt
- minor edits
----
## [0.1.7] - 2023-09-21
- add Wire1 support for ESP32
- fix humidity offset underflow + overflow.
- update readme.md
- minor performance optimization in humidity math
## [0.1.6] - 2023-02-01
- update GitHub actions
- update license 2023

View File

@ -1,11 +1,10 @@
//
// FILE: CHT8305.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.1.7
// VERSION: 0.2.0
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
// URL: https://github.com/RobTillaart/CHT8305
//
// HISTORY: see changelog.md
#include "CHT8305.h"
@ -14,39 +13,16 @@
//
// PUBLIC
//
CHT8305::CHT8305(TwoWire *wire)
CHT8305::CHT8305(const uint8_t address, TwoWire *wire)
{
_wire = wire;
_address = CHT8305_DEFAULT_ADDRESS; // default AD0 to GND.
_wire = wire;
_address = address;
}
#if defined (ESP8266) || defined(ESP32)
int CHT8305::begin(int sda, int scl, const uint8_t address)
int CHT8305::begin()
{
if ((address < 0x40) || (address > 0x43)) return CHT8305_ERROR_ADDR;
_address = address;
if ((sda < 255) && (scl < 255))
{
_wire->begin(sda, scl);
} else {
_wire->begin();
}
if (! isConnected()) return CHT8305_ERROR_CONNECT;
return CHT8305_OK;
}
#endif
int CHT8305::begin(const uint8_t address)
{
if ((address < 0x40) || (address > 0x43)) return CHT8305_ERROR_ADDR;
_address = address;
_wire->begin();
if ((_address < 0x40) || (_address > 0x43)) return CHT8305_ERROR_ADDR;
if (! isConnected()) return CHT8305_ERROR_CONNECT;
return CHT8305_OK;
}
@ -180,29 +156,30 @@ uint8_t CHT8305::getConversionDelay()
}
void CHT8305::setHumOffset(float offset)
void CHT8305::setHumidityOffset(float offset)
{
_humOffset = offset;
};
void CHT8305::setTempOffset(float offset)
void CHT8305::setTemperatureOffset(float offset)
{
_tempOffset = offset;
};
float CHT8305::getHumOffset()
float CHT8305::getHumidityOffset()
{
return _humOffset;
};
float CHT8305::getTempOffset()
float CHT8305::getTemperatureOffset()
{
return _tempOffset;
};
////////////////////////////////////////////////
//
// CONFIG REGISTER
@ -484,5 +461,5 @@ void CHT8305::_clrConfigMask(uint16_t mask)
}
// -- END OF FILE --
// -- END OF FILE --

View File

@ -2,7 +2,7 @@
//
// FILE: CHT8305.h
// AUTHOR: Rob Tillaart
// VERSION: 0.1.7
// VERSION: 0.2.0
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
// URL: https://github.com/RobTillaart/CHT8305
//
@ -12,7 +12,7 @@
#include "Wire.h"
#define CHT8305_LIB_VERSION (F("0.1.7"))
#define CHT8305_LIB_VERSION (F("0.2.0"))
// DEFAULT ADDRESS
#ifndef CHT8305_DEFAULT_ADDRESS
@ -54,14 +54,10 @@
class CHT8305
{
public:
CHT8305(TwoWire *wire = &Wire);
// default address = AD0 to GND.
CHT8305(const uint8_t address = CHT8305_DEFAULT_ADDRESS, TwoWire *wire = &Wire);
#if defined (ESP8266) || defined(ESP32)
// address is optional
int begin(int sda, int scl, const uint8_t address = CHT8305_DEFAULT_ADDRESS);
#endif
// address is optional
int begin(const uint8_t address = CHT8305_DEFAULT_ADDRESS);
int begin();
bool isConnected();
uint8_t getAddress();
@ -82,11 +78,11 @@ public:
// adding offsets works well in normal range
void setHumOffset(float offset);
void setHumidityOffset(float offset);
// might introduce under- or overflow at the ends of the sensor range
void setTempOffset(float offset);
float getHumOffset();
float getTempOffset();
void setTemperatureOffset(float offset);
float getHumidityOffset();
float getTemperatureOffset();
// CONFIG REGISTER
@ -181,5 +177,5 @@ private:
};
// -- END OF FILE --
// -- END OF FILE --

View File

@ -34,6 +34,17 @@ One of the interesting functions is the support of an ALERT function.
This prevents the need for continuous polling of the sensor.
#### 0.2.0 Breaking change
Version 0.2.0 introduced a breaking change.
You cannot set the pins in **begin()** any more.
This reduces the dependency of processor dependent Wire implementations.
The user has to call **Wire.begin()** and can optionally set the Wire pins
before calling **begin()**.
Moved the address parameter from **begin()** to constructor.
#### Tests
- Temperature and humidity functions works on AVR.
@ -108,9 +119,10 @@ Pull ups are needed on SDA, SCL and optional to ALERT.
#### Constructor
- **CHT8305(TwoWire \*wire = &Wire)** Constructor with default I2C bus.
- **int begin(const uint8_t address = CHT8305_DEFAULT_ADDRESS)** sets address, default = 0x40.
- **int begin(int sda, int scl, const uint8_t address = CHT8305_DEFAULT_ADDRESS)** idem for ESP32 et. al.
- **CHT8305(const uint8_t address = CHT8305_DEFAULT_ADDRESS, TwoWire \*wire = &Wire)** Constructor
with default address (0x40) and I2C bus.
- **int begin()** initializes internals.
Returns error status.
- **bool isConnected()** checks if address (default 0x40) can be seen on the I2C bus.
@ -146,10 +158,10 @@ Adding offsets works well in the "normal range" but might introduce
under- or overflow at the ends of the sensor range.
These are not handled for temperature by the library (humidity since 0.1.7).
- **void setHumOffset(float offset)** idem.
- **void setTempOffset(float offset)** idem.
- **float getHumOffset()** idem.
- **float getTempOffset()** idem.
- **void setHumidityOffset(float offset)** idem.
- **void setTemperatureOffset(float offset)** idem.
- **float getHumidityOffset()** idem.
- **float getTemperatureOffset()** idem.
If the offset is not the same over the operational range,
consider a mapping function for temperature and humidity.
@ -289,7 +301,6 @@ See datasheet page 10 for details
#### Could
- make offset functions "full name" e.g. **setHumidityOffset()** (0.2,0)
- parameter testing
- parameter defaults?

View File

@ -27,21 +27,21 @@
#include "CHT8305.h"
CHT8305 CHT;
CHT8305 CHT(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
void setup()
{
CHT.begin(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
Wire.setClock(400000);
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("CHT8305_LIB_VERSION: ");
Serial.println(CHT8305_LIB_VERSION);
Serial.println();
Wire.begin();
Wire.setClock(400000);
CHT.begin();
CHT.setVCCenable(true);
Serial.println("voltage\t us");
@ -54,7 +54,7 @@ void loop()
if (millis() - CHT.lastRead() >= 1000)
{
CHT.read();
// READ DATA
// READ DATA
uint32_t start = micros();
float voltage = CHT.getVoltage();
uint32_t stop = micros();
@ -71,4 +71,4 @@ void loop()
}
// -- END OF FILE --
// -- END OF FILE --

View File

@ -25,15 +25,20 @@
#include "CHT8305.h"
CHT8305 CHT;
CHT8305 CHT(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("CHT8305_LIB_VERSION: ");
Serial.println(CHT8305_LIB_VERSION);
Serial.println();
CHT.begin(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
Wire.begin();
Wire.setClock(400000);
CHT.begin();
delay(1000);
}
@ -43,7 +48,7 @@ void loop()
{
if (millis() - CHT.lastRead() >= 1000)
{
// READ DATA
// READ DATA
CHT.read();
Serial.print(millis());
@ -55,4 +60,4 @@ void loop()
}
// -- END OF FILE --
// -- END OF FILE --

View File

@ -25,7 +25,7 @@
#include "CHT8305.h"
CHT8305 CHT;
CHT8305 CHT(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
uint32_t start, stop;
@ -33,13 +33,18 @@ uint32_t start, stop;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("CHT8305_LIB_VERSION: ");
Serial.println(CHT8305_LIB_VERSION);
Serial.println();
CHT.begin(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
Wire.begin();
Wire.setClock(400000);
CHT.begin();
delay(1000);
CHT.setConversionDelay(10); //
CHT.setConversionDelay(10);
CHT.setTemperatureResolution(0); // 14 bit
CHT.setHumidityResolution(0); // 14 bit
@ -99,8 +104,7 @@ void setup()
void loop()
{
}
// -- END OF FILE --
// -- END OF FILE --

View File

@ -25,23 +25,23 @@
#include "CHT8305.h"
CHT8305 CHT;
CHT8305 CHT(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
uint8_t count = 0;
void setup()
{
CHT.begin(0x40); // CHT8305_DEFAULT_ADDRESS = 0x40
Wire.setClock(400000);
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("CHT8305_LIB_VERSION: ");
Serial.println(CHT8305_LIB_VERSION);
Serial.println();
Wire.begin();
Wire.setClock(400000);
CHT.begin();
Serial.println(CHT.getManufacturer(), HEX);
Serial.println(CHT.getVersionID(), HEX);
Serial.println(CHT.getVoltage());
@ -54,7 +54,7 @@ void loop()
{
if (millis() - CHT.lastRead() >= 1000)
{
// READ DATA
// READ DATA
uint32_t start = micros();
int status = CHT.read();
uint32_t stop = micros();
@ -68,7 +68,7 @@ void loop()
count++;
Serial.print("CHT8305\t");
// DISPLAY DATA, sensor has only one decimal.
// DISPLAY DATA, sensor has only one decimal.
Serial.print(CHT.getHumidity(), 1);
Serial.print("\t\t");
Serial.print(CHT.getTemperature(), 1);
@ -101,4 +101,4 @@ void loop()
}
// -- END OF FILE --
// -- END OF FILE --

View File

@ -15,10 +15,10 @@ getHumidity KEYWORD2
setConversionDelay KEYWORD2
getConversionDelay KEYWORD2
setHumOffset KEYWORD2
setTempOffset KEYWORD2
getHumOffset KEYWORD2
getTempOffset KEYWORD2
setHumidityOffset KEYWORD2
setTemperatureOffset KEYWORD2
getHumidityOffset KEYWORD2
getTemperatureOffset KEYWORD2
setConfigRegister KEYWORD2
getConfigRegister KEYWORD2
@ -27,7 +27,7 @@ softReset KEYWORD2
setI2CClockStretch KEYWORD2
getI2CClockStretch KEYWORD2
setHeaterOn KEYWORD2
getHeate KEYWORD2
getHeater KEYWORD2
setMeasurementMode KEYWORD2
getMeasurementMode KEYWORD2

View File

@ -15,7 +15,7 @@
"type": "git",
"url": "https://github.com/RobTillaart/CHT8305.git"
},
"version": "0.1.7",
"version": "0.2.0",
"license": "MIT",
"frameworks": "*",
"platforms": "*",

View File

@ -1,5 +1,5 @@
name=CHT8305
version=0.1.7
version=0.2.0
author=Rob Tillaart <rob.tillaart@gmail.com>
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
sentence=Arduino library for CHT8305 temperature and humidity sensor.

View File

@ -81,21 +81,23 @@ unittest(test_constants_III)
unittest(test_offset)
{
CHT8305 cht;
CHT8305 cht(0x40);
Wire.begin();
// default hum = 0
assertEqualFloat(0.0, cht.getHumOffset(), 0.01);
cht.setHumOffset(12.34);
assertEqualFloat(12.34, cht.getHumOffset(), 0.01);
cht.setHumOffset(0.0);
assertEqualFloat(0.0, cht.getHumOffset(), 0.01);
assertEqualFloat(0.0, cht.getHumidityOffset(), 0.01);
cht.setHumidityOffset(12.34);
assertEqualFloat(12.34, cht.getHumidityOffset(), 0.01);
cht.setHumidityOffset(0.0);
assertEqualFloat(0.0, cht.getHumidityOffset(), 0.01);
// default temp = 0
assertEqualFloat(0.0, cht.getTempOffset(), 0.01);
cht.setTempOffset(12.34);
assertEqualFloat(12.34, cht.getTempOffset(), 0.01);
cht.setTempOffset(0.0);
assertEqualFloat(0.0, cht.getTempOffset(), 0.01);
assertEqualFloat(0.0, cht.getTemperatureOffset(), 0.01);
cht.setTemperatureOffset(12.34);
assertEqualFloat(12.34, cht.getTemperatureOffset(), 0.01);
cht.setTemperatureOffset(0.0);
assertEqualFloat(0.0, cht.getTemperatureOffset(), 0.01);
}
@ -103,6 +105,8 @@ unittest(test_lastRead)
{
CHT8305 cht;
Wire.begin();
assertEqual(0, cht.lastRead());
}
@ -111,6 +115,8 @@ unittest(test_AlertTriggerMode)
{
CHT8305 cht;
Wire.begin();
// test range check only false can be checked
for (int mode = 4; mode < 10; mode++)
{
@ -124,6 +130,8 @@ unittest(test_setAlertLevels)
{
CHT8305 cht;
Wire.begin();
// temp range check only false can be checked
assertFalse(cht.setAlertLevels(-41, 50));
assertFalse(cht.setAlertLevels(126, 50));