sht20温湿度传感器代码
时间: 2023-07-09 07:43:22 浏览: 90
以下是sht20温湿度传感器的Arduino代码示例:
```
#include <Wire.h>
#define SHT20_ADDRESS 0x40 // SHT20 I2C address
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
float temperature = readTemperature();
float humidity = readHumidity();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" degrees Celsius. Humidity: ");
Serial.print(humidity);
Serial.println("%");
delay(1000);
}
float readTemperature() {
// Send temperature measurement command
Wire.beginTransmission(SHT20_ADDRESS);
Wire.write(0xF3);
Wire.endTransmission();
delay(100); // Wait for measurement to complete
// Read temperature data
Wire.requestFrom(SHT20_ADDRESS, 3);
while (Wire.available() < 3) {}
uint16_t rawTemp = Wire.read() << 8 | Wire.read();
// Skip checksum byte
// Calculate temperature in degrees Celsius using formula from datasheet
float temp = -46.85 + 175.72 * ((float)rawTemp / 65536.0);
return temp;
}
float readHumidity() {
// Send humidity measurement command
Wire.beginTransmission(SHT20_ADDRESS);
Wire.write(0xF5);
Wire.endTransmission();
delay(100); // Wait for measurement to complete
// Read humidity data
Wire.requestFrom(SHT20_ADDRESS, 3);
while (Wire.available() < 3) {}
uint16_t rawHumidity = Wire.read() << 8 | Wire.read();
// Skip checksum byte
// Calculate relative humidity using formula from datasheet
float humidity = -6.0 + 125.0 * ((float)rawHumidity / 65536.0);
return humidity;
}
```
该代码使用Wire库与SHT20传感器进行I2C通信。在setup()函数中,串口通信与Wire库初始化。在loop()函数中,读取温度和湿度并打印到串口输出。
readTemperature()和readHumidity()函数分别发送温度和湿度测量命令,等待测量完成并读取数据。然后,使用SHT20传感器数据手册中的公式将原始数据转换为温度和湿度值。