名称介绍

简介

SHT30是SHT2x系列温湿度传感器的新一代继承者,在SHT3x系列中属于入门版,进一步提高了产品可靠性和精度规格,如增强信号处理和一个可编程温湿度极限的报警模式,以及高达1 MHz的通信速度。
SHT30测量数据经过出厂校正、线性化和温度补偿,具有温湿度报警输出、软硬件复位功能。传感器的湿度测量范围是0-100%RH,温度测量范围是-40-125℃。I2C接口,可选I2C地址,工作电压范围宽(2.15V至5.5 V)。




温湿度偏差参考:
SHT30andSHT31_deviation(CN)

技术规格

SEN0330_SIZE

  • 工作电压:2.15~5.5V
  • 工作电流:<1.5mA
  • 湿度测量精度:±2%RH
  • 湿度测量范围:0-100%RH
  • 温度测量精度:±0.2℃
  • 温度测量范围:-40 to 125℃
  • 通信接口:Breakout 2.54mm-6Pin I2C
  • 外形尺寸:19mmx16mm
  • 安装孔尺寸:2mm
  • 安装孔间距:15mm
  • 工作温度:-40 to 125℃

引脚说明

SEN0330TOP&BOTTON

标号 名称 功能描述
1 SDA 数据线
2 SCL 时钟线
3 GND 电源负极
4 VCC 电源正极
3 INT 报警中断
4 RST 复位

使用教程

准备

关于如何安装库文件,点击链接

  • 主要API接口函数列表
  /**
   * @brief 获取测量到的温度(单位:摄氏度)
   * @return 返回float类型的温度数据
   */
  float getTemperatureC();

  /**
   * @brief 获取测量到的温度(单位:华氏度)
   * @return 返回float类型的温度数据
   */
  float getTemperatureF();
  /**
   * @brief 获取测量到的湿度(单位:%RH)
   * @return 返回float类型的湿度数据
   */
  float getHumidityRH();

接线图

SEN0330接线

样例代码1 - 单次测量温湿度模式

单次测量模式:控制板发送一次采集命令,传感器就去采集一次数据。

此模式可以根据需要去读取数据,功耗较低。

    /*!
     * @brief Construct the function
     * @param pWire I2C bus pointer object and construction device, can both pass or not pass parameters, Wire in default.
     * @param address Chip I2C address, two optional addresse.
    */
    /*!
     * @file singleMeasurement.ino
     * @brief Read ambient temperature (C/F) and relative humidity (%RH) in single-read mode.
     * @n Experimental phenomenon: the chip defaults in this mode, we need to send instructions to enable the chip collect data,
     * which means the repeatability of the read needs to be set (the difference between the data measured by the chip under the same measurement conditions)
     * then read the temperature and humidity data and print the data in the serial port.
     * @n Single measure mode: read data as needed, power consumption is relatively low, the chip idle state only costs 0.5mA.
     * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
     * @licence     The MIT License (MIT)
     * @author [fengli](li.feng@dfrobot.com)
     * @version  V1.0
     * @date  2019-08-21
     * @get from https://www.dfrobot.com
     * @url https://github.com/DFRobot/DFRobot_SHT3x
    */

    #include <DFRobot_SHT3x.h>

    /*!
     * @brief Construct the function
     * @param pWire I2C bus pointer object and construction device, both can pass or not pass parameters,
     * Wire in default.
     * @param address Chip I2C address, two optional addresses 0x44 and 0x45(0x45 in default).
     * @param RST RST Chip reset pin, 4 in default.
     * @n I2C address is determined by the pin addr on the chip.
     * @n When the ADR is connected to VDD, the chip I2C address is 0x45.
     * @n When the ADR is connected to GND, the chip I2C address is 0x44.
     */

    //DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);
    DFRobot_SHT3x   sht3x;

    void setup() {
      Serial.begin(9600);
      //Initialize the chip
      while (sht3x.begin() != 0) {
        Serial.println("Failed to Initialize the chip, please confirm the wire connection");
        delay(1000);
      }
      /**
       * readSerialNumber Read the serial number of the chip.
       * @return Return 32-digit serial number.
       */
      Serial.print("Chip serial number");
      Serial.println(sht3x.readSerialNumber());

      /**
       * softReset Send command resets via I2C, enter the chip's default mode single-measure mode,
       * turn off the heater, and clear the alert of the ALERT pin.
       * @return Read the register status to determine whether the command was executed successfully,
       * and return true indicates success.
       */
       if(!sht3x.softReset()){
         Serial.println("Failed to Initialize the chip....");
       }

      /**
       * heaterEnable(): Turn on the heater inside the chip to enable the sensor get correct humidity value in wet environments.
       * @return Read the status of the register to determine whether the command was executed successfully,
       * and return true indicates success.
       * @note Heaters should be used in wet environments, and other cases of use will result in incorrect readings
       */

      //if(!sht3x.heaterEnable()){
      // Serial.println("Failed to turn on the heater....");
      //}
      Serial.println("------------------Read adta in single measurement mode-----------------------");
    }

    void loop() {
      Serial.print("Ambient Temperature(°C/F):");
      /**
       * getTemperatureC Get the meansured temperature(℃).
       * @return Return float temperature data.
       */
      Serial.print(sht3x.getTemperatureC());
      Serial.print(" C/");
      /**
       * getTemperatureF:Get the meansured temperature(℉).
       * @return Return float temperature data.
       */
      Serial.print(sht3x.getTemperatureF());
      Serial.print(" F ");
      Serial.print("Relative Humidity(%RH):");
      /**
       * getHumidityRH: Get the meansured humidity (%RH)
       * @return Return float humidity data
       */
      Serial.print(sht3x.getHumidityRH());
      Serial.println(" %RH");

      /**
       * @brief Get temperature and humidity data in single measurement mode.
       * @param repeatability Set repeatability to read temperature and humidity data with the type eRepeatability_t.
       * @note  Optional parameters:
                   eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
                   eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
                   eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
       * @return Return a structure containing celsius temperature (°C), Fahrenheit temperature (°F), relative humidity(%RH), status code.
       * @n Return O indicates right data return.
      DFRobot_SHT3x::sRHAndTemp_t data = sht3x.readTemperatureAndHumidity(sht3x.eRepeatability_High);
      if(data.ERR == 0){
        Serial.print("Ambient Temperature(°C/F):");
        Serial.print(data.TemperatureC);
        Serial.print(" C/");
        Serial.print(data.TemperatureF);
        Serial.print(" F ");
        Serial.print("Relative Humidity(%RH):");
        Serial.print(data.Humidity);
        Serial.println(" %RH");
      }
      */
      delay(1000);
    }

结果

串口打印出获取到的温湿度数据

SEN033X结果1

样例代码2 - 周期测量温湿度模式

周期测量模式:传感器按照设定采集频率自动去采集数据。

    /*!
     * @file periodicDataReading.ino
     * @brief Read ambient temperature (C/F) and relative humidity (%RH) in cycle read mode.
     * @n Experimental phenomenon: Before we start, please set the read frequency and repeatability of the read
     * (the difference between the data measured by the chip under the same measurement conditions),
     * and enter the periodic read mode, and then read the temperature and humidity data.
     * @n The temperature and humidity data will be printed at the serial port, after 10 seconds of operation.
     * @n It will exit the cycle mode and enter 2 measurement mode: Single measurement mode and Cycle measurement mode.
     * @n Single measurement mode: reflect the difference between the two modes of reading data.
     * @n Cycle measurement mode: the chip periodically monitors temperature and humidity, only in this mode the ALERT pin will work.
     * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
     * @licence     The MIT License (MIT)
     * @author [fengli](li.feng@dfrobot.com)
     * @version  V1.0
     * @date  2019-08-20
     * @get from https://www.dfrobot.com
     * @url https://github.com/DFRobot/DFRobot_SHT3x
    */

    #include <DFRobot_SHT3x.h>

    /*!
     * @brief Construct the function
     * @param pWire I2C bus pointer object and construction device, can both pass or not pass parameters, Wire in default.
     * @param address Chip I2C address, two optional addresses 0x44 and 0x45(0x45 in default).
     * @param RST Chip reset pin, 4 in default.
     * @n The I2C address is determined by the pin addr on the chip.
     * @n When the ADR is connected to VDD, the chip I2C address is 0x45.
     * @n When the ADR is connected to GND, the chip I2C address is 0x44.
     */
    //DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);

    DFRobot_SHT3x sht3x;

    void setup() {

      Serial.begin(9600);
        //Initialize the chip to detect if it can communicate properly.
      while (sht3x.begin() != 0) {
        Serial.println("Failed to initialize the chip, please confirm the chip connection");
        delay(1000);
      }

      /**
       * readSerialNumber Read the serial number of the chip
       * @return Return 32-digit serial number
       */
      Serial.print("chip serial number: ");
      Serial.println(sht3x.readSerialNumber());
      /**
       * softReset Send command resets via I2C, enter the chip's default mode single-measure mode,
       * turn off the heater, and clear the alert of the ALERT pin.
       * @return Read the status register to determine whether the command was executed successfully,
       * and return true indicates success.
       */
       if(!sht3x.softReset()){
         Serial.println("Failed to reset the chip");
       }

      /**
       * pinReset Reset through the chip's reset pin, enter the chip's default mode single-measure mode,
       * turn off the heater, and clear the alert of the ALERT pin.
       * @return The status register has a data bit that detects whether the chip has been reset,
       * and return true indicates success.
       * @note When using this API, the reset pin of the chip nRESET should be connected to RST (default to pin4) of arduino.
       */
      //if(!sht3x.pinReset()){
        //Serial.println("Failed to reset the chip");
      //}

      /**
       * heaterEnable() Turn on the heater inside the chip so that the sensor can have accurate humidity data even in humid environment.
       * @return Read the status register to determine whether the command was executed successfully, and return true indicates success.
       * @NOTE Heaters should be used in wet environment, and other cases of use will result in incorrect readings.
       */
      //if(!sht3x.heaterEnable()){
        // Serial.println("Failed to turn on the heater");
      //}
      /**
       * startPeriodicMode Enter cycle measurement mode and set repeatability and read frequency.
       * @param measureFreq Read the eMeasureFrequency_t data frequency.
       * @note  Selectable parameters:
                   eMeasureFreq_Hz5,   /**the chip collects data in every 2s
                   eMeasureFreq_1Hz,   /**the chip collects data in every 1s
                   eMeasureFreq_2Hz,   /**the chip collects data in every 0.5s
                   eMeasureFreq_4Hz,   /**the chip collects data in every 0.25s
                   eMeasureFreq_10Hz   /**the chip collects data in every 0.1s
       * @param repeatability Read the repeatability of temperature and humidity data, the default parameter is eRepeatability_High.
       * @note  Optional parameters:
                   eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
                   eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
                   eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
       * @return Read the status of the register to determine whether the command was executed successfully, and return true indicates success
       */
      if(!sht3x.startPeriodicMode(sht3x.eMeasureFreq_1Hz)){
        Serial.println("Failed to enter the periodic mode");
      }
      Serial.println("------------------Read data in cycle measurement mode-----------------------");
    }

    void loop() {

      Serial.print("Ambient temperature(°C/F):");
      /**
       * getTemperatureC Get the measured temperature (in degrees Celsius).
       * @return Return the float temperature data.
       */
      Serial.print(sht3x.getTemperatureC());
      Serial.print(" C/");
      /**
       * getTemperatureF Get the measured temperature (in degrees Fahrenheit).
       * @return Return the float temperature data.
       */
      Serial.print(sht3x.getTemperatureF());
      Serial.print(" F ");
      Serial.print("Relative humidity(%RH):");
      /**
       * getHumidityRH Get measured humidity(%RH)
       * @return Return the float humidity data
       */
      Serial.print(sht3x.getHumidityRH());
      Serial.println(" %RH");
      //Please adjust the frequency of reading according to the frequency of the chip collection data.
      //The frequency to read data must be greater than the frequency to collect the data, otherwise the returned data will go wrong.
      delay(100);
      if(millis() > 10000 && millis() < 10200){
        /**
         * stopPeriodicMode() Exit from the cycle read data
         * @return Read the status of the register to determine whether the command was executed successfully,
         * and return true indicates success.
         */
        sht3x.stopPeriodicMode();
        Serial.println("Exited from the cycle measurement mode, enter the single measurement mode");
      }
      /**
       * readTemperatureAndHumidity Get temperature and humidity data in cycle measurement mode and use structures to receive data
       * @return Return a structure containing celsius temperature (°C), Fahrenheit temperature (°F), relative humidity (%RH), status code.
       * @n A status of 0 indicates that the right return data.

      DFRobot_SHT3x::sRHAndTemp_t data = sht3x.readTemperatureAndHumidity();
      if(data.ERR == 0){
        Serial.print("ambient temperature(°C/F):");
        Serial.print(data.TemperatureC);
        Serial.print("C/");
        Serial.print(data.TemperatureF);
        Serial.print("F");
        Serial.print("relative humidity(%RH):");
        Serial.print(data.Humidity);
        Serial.println("%RH");
      }
      */
    }

结果

串口前10S打印周期测量模式下获取的温湿度数据,10S后退出周期测量模式,进入单次测量模式,打印单次测量模式下获取的温湿度数据。

SEN033X结果2

样例代码3 - 温湿度报警

设定温湿度阈值,超出了自定义的阈值时,INT引脚就会产生报警信号。

本样例需要将传感器的INT引脚连接到主控板相应的中断引脚。请参照样例中的中断关系表连接引脚。

**注意:**只能在周期测量模式下报警引脚才能正常工作

    /*!
     * @file alert.ino
     * @brief Temperature and humidity over-threshold alarm.
     * @n Experimental phenomenon: The user can customize the temperature and humidity thresholds,
     * and the ALERT pin generates an alarm signal once the values exceed the user-defined threshold.
     * @n NOTE: The ALERT pin on the sensor should be connected to the interrupt pin on the main panel when using this function.
     * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
     * @licence  The MIT License (MIT)
     * @author [fengli](li.feng@dfrobot.com)
     * @version  V1.0
     * @date  2019-08-26
     * @get from https://www.dfrobot.com
     * @url https://github.com/DFRobot/DFRobot_SHT3x
     */

    #include <DFRobot_SHT3x.h>
    /*!
     * @brief Construct the function
     * @param pWire I2C bus pointer object and construction device, can both pass or not pass parameters, Wire in default.
     * @param address Chip I2C address, two optional addresses 0x44 and 0x45(0x45 in default).
     * @param RST Chip reset pin, 4 in default.
     * @n I2C address is determined by the pin addr on the chip.
     * @n When the ADR is connected to VDD, the chip I2C address is 0x45.
     * @n When the ADR is connected to GND, the chip I2C address is 0x44.
     */
    //DFRobot_SHT3x sht3x(&Wire,/*address=*/0x45,/*RST=*/4);

    DFRobot_SHT3x sht3x;
    //The non-alarm status of the alert pin is low;
    volatile  int alertState = 0;
    void alert(){
      alertState = 1 - alertState;
    }
    void setup() {
      Serial.begin(9600);
      #ifdef ARDUINO_ARCH_MPYTHON
      /*                    The Correspondence Table of ESP32 Interrupt Pins And Terminal Numbers
       * -----------------------------------------------------------------------------------------------------
       * |            |  DigitalPin  | P0-P20 can be used as an external interrupt                           |
       * |    esp32   |--------------------------------------------------------------------------------------|
       * |            | Interrupt No |  DigitalPinToInterrupt (Pn) can be used to query the interrupt number |
       * |---------------------------------------------------------------------------------------------------|
       */
      attachInterrupt(digitalPinToInterrupt(P16)/*Query the interrupt number of the P16 pin*/,alert,CHANGE);
      //Open esp32's P16 pin for external interrupt, bilateral edge trigger, ALERT connected to P16
      #else
      /*    The Correspondence Table of AVR Series Arduino Interrupt Pins And Terminal Numbers
       * ---------------------------------------------------------------------------------------
       * |                                        |  DigitalPin  | 2  | 3  |                   |
       * |    Uno, Nano, Mini, other 328-based    |--------------------------------------------|
       * |                                        | Interrupt No | 0  | 1  |                   |
       * |-------------------------------------------------------------------------------------|
       * |                                        |    Pin       | 2  | 3  | 21 | 20 | 19 | 18 |
       * |               Mega2560                 |--------------------------------------------|
       * |                                        | Interrupt No | 0  | 1  | 2  | 3  | 4  | 5  |
       * |-------------------------------------------------------------------------------------|
       * |                                        |    Pin       | 3  | 2  | 0  | 1  | 7  |    |
       * |    Leonardo, other 32u4-based          |--------------------------------------------|
       * |                                        | Interrupt No | 0  | 1  | 2  | 3  | 4  |    |
       * |--------------------------------------------------------------------------------------
       */
      /*                      The Correspondence Table of micro:bit Interrupt Pins And Terminal Numbers
       * ---------------------------------------------------------------------------------------------------------------------------------------------
       * |             micro:bit                       | DigitalPin |P0-P20 can be used as an external interrupt                                     |
       * |  (When using as an external interrupt,      |---------------------------------------------------------------------------------------------|
       * |no need to set it to input mode with pinMode)|Interrupt No|Interrupt number is a pin digital value, such as P0 interrupt number 0, P1 is 1 |
       * |-------------------------------------------------------------------------------------------------------------------------------------------|
       */
      attachInterrupt(/*Interrupt No*/0,alert,CHANGE);//Open the external interrupt 0, connect ALERT to the digital pin of the main control:
         //UNO(2), Mega2560(2), Leonardo(3), microbit(P0).
      #endif
        //Initialize the chip to detect if it can communicate properly
      while (sht3x.begin() != 0) {
        Serial.println("The initialization of the chip is failed, please confirm whether the chip connection is correct");
        delay(1000);
      }
      /**
       * readSerialNumber Read the serial number of the chip
       * @return Return 32-digit serial number
       */
      Serial.print("The chip serial number");
      Serial.println(sht3x.readSerialNumber());
      /**
       * softReset Send command resets via iiC, enter the chip's default mode single-measure mode, turn off the heater,
       * and clear the alert of the ALERT pin.
       * @return Read the status register to determine whether the command was executed successfully, and returning true indicates success.
       */
      if(!sht3x.softReset()){
         Serial.println("Failed to reset the chip");
       }
      /**
       * @brief All flags (Bit 15, 11, 10, 4) in the status register can be cleared (set to zero).
       * @n ALERT can work properly only when the bit:15 is set to 0, otherwise it will remain high.
       */
      sht3x.clearStatusRegister();
      /**
       * startPeriodicMode Enter cycle measurement mode and set repeatability, read frequency, and only in this mode ALERT can work.
       * @param measureFreq Read the data frequency, data type eMeasureFrequency_t
       * @note  Selectable parameters:
                   eMeasureFreq_Hz5,   /**the chip collects data in every 2s
                   eMeasureFreq_1Hz,   /**the chip collects data in every 1s
                   eMeasureFreq_2Hz,   /**the chip collects data in every 0.5s
                   eMeasureFreq_4Hz,   /**the chip collects data in every 0.25s
                   eMeasureFreq_10Hz   /**the chip collects data in every 0.1s
       * @param repeatability Read the repeatability of temperature and humidity data, the default parameter is eRepeatability_High.
       * @note  Optional parameters:
                   eRepeatability_High /**In high repeatability mode, the humidity repeatability is 0.10%RH, the temperature repeatability is 0.06°C
                   eRepeatability_Medium,/**In medium repeatability mode, the humidity repeatability is 0.15%RH, the temperature repeatability is 0.12°C.
                   eRepeatability_Low, /**In low repeatability mode, the humidity repeatability is0.25%RH, the temperature repeatability is 0.24°C
       * @return Read the status of the register to determine whether the command was executed successfully, and return true indicates success.
       */
      if(!sht3x.startPeriodicMode(sht3x.eMeasureFreq_10Hz)){
        Serial.println("Failed to enter the periodic mode");
      }
      /**
       * setTemperatureLimitC Set the threshold temperature and alarm clear temperature(°C)
       * setTemperatureLimitF Set the threshold temperature and alarm clear temperature(°F)
       * @param highset High temperature alarm point, when the temperature is greater than this value, the ALERT pin generates an alarm signal.
       * @param highClear High temperature alarm clear point, alarming when the temp higher than the highset, otherwise the alarm signal will be cleared.
       * @param lowset Low temperature alarm point, when the temperature is lower than this value, the ALERT pin generates an alarm signal.
       * @param lowclear Low temperature alarm clear point, alarming when the temp lower than the highset, otherwise the alarm signal will be cleared.
       * @note The filled value should be an integer (range: -40 to 125 degrees Celsius), -40 to 257 (Fahrenheit)highset>highClear>lowclear>lowset)
       */
      //sht3x.setTemperatureLimitF(/*highset=*/35,/*highClear=*/34,/*lowSet=*/18,/*lowClear=*/20)
      if(sht3x.setTemperatureLimitC(/*highset=*/35,/*highClear=*/34,/*lowSet=*/18,/*lowClear=*/20) != 0){
        Serial.println("Failed to set the temperature limit");
      }
      /**
       * setHumidityLimitRH Set the relative humidity threshold temperature and the alarm clear humidity(%RH)
       * @param highset High humidity alarm point, when the humidity is greater than this value, the ALERT pin generates an alarm signal.
       * @param highClear High humidity alarm clear point, alarming when the humidity higher than the highset, otherwise the alarm signal will be cleared.
       * @param lowset Low humidity alarm point, when the humidity is lower than this value, the ALERT pin generates an alarm signal.
       * @param lowclear Low humidity alarm clear point, alarming when the humidity lower than the highset, otherwise the alarm signal will be cleared.
       * @note The filled value should be an integer (range: 0 - 100 %RH,highset>highClear>lowclear>lowset)
       */
      if(sht3x.setHumidityLimitRH(/*highset=*/70,/*highClear=*/68,/*lowSet=*/19,/*lowClear=*/20) != 0){
        Serial.println("Failed to set the humidity limit");
      }
      //Serial.println(F("string") Save stings to flash to save the dynamic ram when compiling.
      Serial.println(F("----------------------Alarm Detection-------------------------------"));
      Serial.println(F("Alarms raised when temp and humidity are out of the threshold range. Please connect ALERT to the main control board interrupt pin"));
      Serial.println(F("-Different main contorl UNO(2), Mega2560(2), Leonardo(3), microbit(P0), mPython(P16)----"));
      Serial.println(F("----------------------the humidity limit(%RH)-----------------------------------"));
      /**
       * @brief Measure relative humidity threshold temperature and alarm clear humidity
       * @return Return true indicates successful data acquisition
       */
      if(sht3x.measureHumidityLimitRH()){
        Serial.print("high set:");
        //getHumidityHighSetRH() Get the high humidity alarm point
        Serial.print(sht3x.getHumidityHighSetRH());
        Serial.print("               low clear:");
        //getHumidityHighClearRH() Get the high humidity alarm clear point
        Serial.println(sht3x.getHumidityLowClearRH());
        Serial.print("high clear:");
        //getHumidityLowClearRH() Get the low humidity alarm clear point
        Serial.print(sht3x.getHumidityHighClearRH());
        Serial.print("               low set:");
        //getHumidityLowSetRH() Get the low humidity alarm point
        Serial.println(sht3x.getHumidityLowSetRH());
      } else {
        Serial.println("Failed to get the humidity limit");
      }
      /**
       * measureTemperatureLimitC Measure the threshold temperature and alarm clear temperature(°C)
       * measureTemperatureLimitF Measure the threshold temperature and alarm clear temperature(°F)
       * @return Return true indicates successful data acquisition
       */
      Serial.println("----------------------temperature limit(°C)---------------------------------");
      //Serial.println(F("----------------------temperature limit(°F)---------------------------------"));
      if(sht3x.measureTemperatureLimitC()){
        Serial.print("high set:");
        //getTemperatureHighSetC() Get high temperature alarm points(°C)
        //getTemperatureHighSetF() Get high temperature alarm points(°F)
        Serial.print(sht3x.getTemperatureHighSetC());
        Serial.print("               low clear:");
        //getTemperatureHighClearC() Get high temperature alarm clear points(°C)
        //getTemperatureHighClearF() Get high temperature alarm clear points(°F))
        Serial.println(sht3x.getTemperatureLowClearC());
        Serial.print("high clear:");
        //getTemperatureLowClearC() Get low temperature alarm clear points(°C)
        //getTemperatureLowClearF() Get low temperature alarm clear points(°F)
        Serial.print(sht3x.getTemperatureHighClearC());
        Serial.print("               low set:");
        //getTemperatureLowSetC() Get low temperature alarm points(°C)
        //getTemperatureLowSetF() Get low temperature alarm points(°F)
        Serial.println(sht3x.getTemperatureLowSetC());
        Serial.println("------------------------------------------------------------------");
      } else {
        Serial.println("Failed to get temperature limit");
      }
      /**
       * readAlertState Read the status of the ALERT pin.
       * @return High returns 1, low returns 0.
       */
      //To initialize the state of ALERT
      if(sht3x.readAlertState() == 1){
        alertState = 1;
      } else {
        alertState = 0;
      }
    }
    void loop() {
      Serial.print("environment temperature(°C/F):");
      /**
       * getTemperatureC Get the measured temperature (in degrees Celsius)
       * @return Return temperature data of the type float
       */
      Serial.print(sht3x.getTemperatureC());
      Serial.print(" C/");
      /**
       * getTemperatureF Get the measured temperature (in degrees Celsius)
       * @return Return temperature data of the type float
       */
      Serial.print(sht3x.getTemperatureF());
      Serial.print(" F      ");
      Serial.print("relative humidity(%RH):");
      /**
       * getHumidityRH Get measured humidity (in %RH)
       * @return Return humidity data of the type float
       */
      Serial.print(sht3x.getHumidityRH());
      Serial.println(" %RH");
      //The read data frequency should greater than the frequency to collect data, otherwise the return data will make errors.
      if(alertState == 1){
        /**
         * @brief Determine if the temperature and humidity are out of the threshold range
         * @return Return the status code, representing as follows
         * @n 01 Indicates that the humidity exceeds the lower threshold range
         * @n 10 Indicates that the temperature exceeds the lower threshold range
         * @n 11 Indicates that both the humidity and the temperature exceed the lower threshold range
         * @n 02 Indicates that the humidity exceeds the upper threshold range
         * @n 20 Indicates that the temperature exceeds the upper threshold range
         * @n 22 Indicates that both the humidity and the temperature exceed the upper threshold range
         * @n 12 Indicates that the temperature exceeds the lower threshold range,
         //and the humidity exceeds the upper threshold range
         * @n 21 Indicates that the temperature exceeds the upper threshold range,
         //and the humidity exceeds the lower threshold range
         * @n 0  Back to normal, but the alarm is not cleared.
         */
        uint8_t state = sht3x.environmentState();
        //Serial.println(F("string") Save stings to flash to save the dynamic ram when compiling.
        if(state == 1)  Serial.println(F("The humidity exceeds the lower threshold range!"));
        else if(state == 10)  Serial.println(F("The temperature exceeds the lower threshold range!"));
        else if(state == 11)  Serial.println(F("The humidity and the temperature exceed the lower threshold range!"));
        else if(state == 2)   Serial.println(F("The humidity exceeds the upper threshold range!"));
        else if(state == 20)  Serial.println(F("The temperature exceeds the upper threshold range!"));
        else if(state == 22)  Serial.println(F("The humidity and the temperature exceed the upper threshold range!"));
        else if(state == 12)  Serial.println(F("The temperature exceeds the lower threshold range,the humidity exceeds the upper threshold range!"));
        else if(state == 21)  Serial.println(F("The temperature exceeds the upper threshold range, and the humidity exceeds the lower threshold range!"));
        else Serial.println(F("T&H back to normal, but the alarm is not cleared!"));
      } else {
        Serial.println(F("T&H in normal range, alarm cleared"));
      }
      delay(1000);
    }

结果

SEN033X结果3

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接