#include <Wire.h>
#define SHT2x 0b1000000
#define CMD_TEMP 0b11100011
#define CMD_RH 0b11100101
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
}
void loop()
{
Serial.print(getRH()); // print the character
Serial.println("%");
delay(500);
Serial.print(getTempC());
Serial.println("C");
delay(500);
}
double getRH()
{
Wire.beginTransmission(SHT2x);
Wire.write(CMD_RH);
Wire.endTransmission();
Serial.println("endTransmission");
Wire.requestFrom(SHT2x, 2); // request 6 bytes from slave device #2
unsigned long data=0;
for(int i=0;i<2&&Wire.available();++i) // slave may send less than requested
{
unsigned char c = Wire.read(); // receive a byte as character
data+=(unsigned long)c<<((1-i)*8);
}
double RH;
RH=125.0*(double)data/65536-6.0;
return RH;
}
double getTempC()
{
Wire.beginTransmission(SHT2x);
Wire.write(CMD_TEMP);
Wire.endTransmission();
Serial.println("endTransmission");
Wire.requestFrom(SHT2x, 2); // request 6 bytes from slave device #2
unsigned long data=0;
for(int i=0;i<2&&Wire.available();++i) // slave may send less than requested
{
unsigned char c = Wire.read(); // receive a byte as character
data+=(unsigned long)c<<((1-i)*8);
}
double tempC;
tempC=175.72*(double)data/65536-46.85;
return tempC;
}
Arduino使用SHT2x
本文链接:https://twd2.me/archives/5483

发表评论