Generic Si7021 Temp/Hum sensor library
Dependents: Turtle_RadioShuttle
Diff: HELIOS_Si7021.h
- Revision:
- 0:19633f4a946b
- Child:
- 1:5ea2d9a2ef8c
diff -r 000000000000 -r 19633f4a946b HELIOS_Si7021.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HELIOS_Si7021.h Fri Mar 29 13:24:58 2019 +0000 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2019 Helmut Tschemernjak + * 30826 Garbsen (Hannover) Germany + * Licensed under the Apache License, Version 2.0); + */ + +#ifndef __HELIOS_Si7021_H__ +#define __HELIOS_Si7021_H__ + +class HELIOS_Si7021 { +public: + HELIOS_Si7021(PinName sda, PinName scl); + ~HELIOS_Si7021(); + + void reset(void); + void readSerialNumber(void); + uint8_t getRevision(void) { return _revision; }; + bool hasSensor(void) { return _foundDevice; }; + + float readTemperature(void); + float readHumidity(void); + + enum sensorType { + SI_Engineering_Samples, + SI_7013, + SI_7020, + SI_7021, + SI_unkown, + }; + const char *getModelName(void); + sensorType getModel(void); + +private: + I2C *_i2c; + char _data[8]; + + bool _foundDevice; + void _readRevision(void); + uint32_t sernum_a, sernum_b; + sensorType _model; + uint8_t _revision; + uint8_t _readRegister8(uint8_t reg); + uint16_t _readRegister16(uint8_t reg); + void _writeRegister8(uint8_t reg, uint8_t value); + const static u_int8_t _i2caddr = 0x40 << 1; // convert from 7 to 8 bit. + const static int _TRANSACTION_TIMEOUT = 100; // Wire NAK/Busy timeout in ms +}; + +/**************************************************************************/ + +#endif // __HELIOS_Si7021_H__ +