Generic Si7021 Temp/Hum sensor library

Dependents:   Turtle_RadioShuttle

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HELIOS_Si7021.h Source File

HELIOS_Si7021.h

00001 /*
00002  * Copyright (c) 2019 Helmut Tschemernjak
00003  * 30826 Garbsen (Hannover) Germany
00004  * Licensed under the Apache License, Version 2.0);
00005  */
00006 
00007 #ifndef __HELIOS_Si7021_H__
00008 #define __HELIOS_Si7021_H__
00009 
00010 class HELIOS_Si7021 {
00011 public:
00012     HELIOS_Si7021(PinName sda, PinName scl);
00013     ~HELIOS_Si7021();
00014 
00015     void reset(void);
00016     void readSerialNumber(void);
00017     uint8_t getRevision(void) { return _revision; };
00018     bool hasSensor(void) { return _foundDevice; };
00019     
00020     float readTemperature(void);
00021     float readHumidity(void);
00022     
00023     enum sensorType {
00024         SI_Engineering_Samples,
00025         SI_7013,
00026         SI_7020,
00027         SI_7021,
00028         SI_unkown,
00029     };
00030     const char *getModelName(void);
00031     sensorType getModel(void);
00032     
00033 private:
00034     I2C *_i2c;
00035     char _data[8];
00036 
00037     bool _foundDevice;
00038     void _readRevision(void);
00039     uint32_t sernum_a, sernum_b;
00040     sensorType _model;
00041     uint8_t _revision;
00042     uint8_t _readRegister8(uint8_t reg);
00043     uint16_t _readRegister16(uint8_t reg);
00044     void _writeRegister8(uint8_t reg, uint8_t value);
00045     const static uint8_t _i2caddr = 0x40 << 1; // convert from 7 to 8 bit.
00046     const static int _TRANSACTION_TIMEOUT = 100; // Wire NAK/Busy timeout in ms
00047 };
00048 
00049 /**************************************************************************/
00050 
00051 #endif // __HELIOS_Si7021_H__
00052