DFRobot_SHT20.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef DFRobot_SHT20_h
  2. #define DFRobot_SHT20_h
  3. #if defined(ARDUINO) && ARDUINO >= 100
  4. #include "Arduino.h"
  5. #else
  6. #include "WProgram.h"
  7. #endif
  8. #include <Wire.h>
  9. #define ERROR_I2C_TIMEOUT 998
  10. #define ERROR_BAD_CRC 999
  11. #define SLAVE_ADDRESS 0x40
  12. #define TRIGGER_TEMP_MEASURE_HOLD 0xE3
  13. #define TRIGGER_HUMD_MEASURE_HOLD 0xE5
  14. #define TRIGGER_TEMP_MEASURE_NOHOLD 0xF3
  15. #define TRIGGER_HUMD_MEASURE_NOHOLD 0xF5
  16. #define WRITE_USER_REG 0xE6
  17. #define READ_USER_REG 0xE7
  18. #define SOFT_RESET 0xFE
  19. #define USER_REGISTER_RESOLUTION_MASK 0x81
  20. #define USER_REGISTER_RESOLUTION_RH12_TEMP14 0x00
  21. #define USER_REGISTER_RESOLUTION_RH8_TEMP12 0x01
  22. #define USER_REGISTER_RESOLUTION_RH10_TEMP13 0x80
  23. #define USER_REGISTER_RESOLUTION_RH11_TEMP11 0x81
  24. #define USER_REGISTER_END_OF_BATTERY 0x40
  25. #define USER_REGISTER_HEATER_ENABLED 0x04
  26. #define USER_REGISTER_DISABLE_OTP_RELOAD 0x02
  27. #define MAX_WAIT 100
  28. #define DELAY_INTERVAL 10
  29. #define SHIFTED_DIVISOR 0x988000
  30. #define MAX_COUNTER (MAX_WAIT/DELAY_INTERVAL)
  31. class DFRobot_SHT20
  32. {
  33. public:
  34. void checkSHT20(void);
  35. void setResolution(byte resBits);
  36. void writeUserRegister(byte val);
  37. void initSHT20(TwoWire &wirePort = Wire);
  38. void showReslut(const char *prefix, int val);
  39. float readHumidity(void);
  40. float readTemperature(void);
  41. byte readUserRegister(void);
  42. private:
  43. TwoWire *i2cPort;
  44. byte checkCRC(uint16_t message_from_sensor, uint8_t check_value_from_sensor);
  45. uint16_t readValue(byte cmd);
  46. };
  47. #endif