1. Ardunio uno
#include <Wire.h>
#define Addr_SHT30 0x44
void setup()
{
Wire.begin();
Serial.begin(115200);
delay(300);
}
void loop()
{
unsigned int data[6];
Wire.beginTransmission(Addr_SHT30);
Wire.write(0x2C);
Wire.write(0x06);
Wire.endTransmission();
delay(500);
Wire.requestFrom(Addr_SHT30, 6);
if (Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
float cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
float fTemp = (cTemp * 1.8) + 32;
float humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);
Serial.print("相对湿度:");
Serial.print(humidity);
Serial.println(" %RH");
Serial.print("摄氏度温度:");
Serial.print(cTemp);
Serial.println(" C");
Serial.print("华氏度温度:");
Serial.print(fTemp);
Serial.println(" F");
Serial.print("原数据:");
Serial.print(data[0],HEX);
Serial.print(data[1],HEX);
Serial.println(data[2],HEX);
Serial.print(data[3],HEX);
Serial.print(data[4],HEX);
Serial.println(data[5],HEX);
delay(500);
}
2. ESP8266程序
#include <Wire.h>
#define Addr_SHT30 0x44
#define SDA_PIN 4
#define SCL_PIN 5
void setup()
{
Wire.begin(SDA_PIN, SCL_PIN);
Serial.begin(115200);
delay(300);
}
void loop()
{
unsigned int data[6];
Wire.beginTransmission(Addr_SHT30);
Wire.write(0x2C);
Wire.write(0x06);
Wire.endTransmission();
delay(500);
Wire.requestFrom(Addr_SHT30, 6);
if (Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
float cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
float fTemp = (cTemp * 1.8) + 32;
float humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);
Serial.print("相对湿度:");
Serial.print(humidity);
Serial.println(" %RH");
Serial.print("摄氏度温度:");
Serial.print(cTemp);
Serial.println(" C");
Serial.print("华氏度温度:");
Serial.print(fTemp);
Serial.println(" F");
Serial.print("原数据:");
Serial.print(data[0],HEX);
Serial.print(data[1],HEX);
Serial.println(data[2],HEX);
Serial.print(data[3],HEX);
Serial.print(data[4],HEX);
Serial.println(data[5],HEX);
delay(500);
}
3. arduino使用SHT31.h库函数
#include "Wire.h"
#include "SHT31.h"
#define SHT31_ADDRESS 0x44
SHT31 sht;
void setup()
{
Serial.begin(115200);
Wire.begin();
sht.begin(SHT31_ADDRESS);
Wire.setClock(100000);
uint16_t stat = sht.readStatus();
Serial.print(stat, HEX);
Serial.println();
}
void loop()
{
sht.read();
Serial.print("\t");
Serial.print(sht.getTemperature(), 1);
Serial.print("\t");
Serial.println(sht.getHumidity(), 1);
delay(100);
}