#include <Wire.h>
#define AS6221_ADDR 0x48 // 默认 I²C 地址
void setup() {
Serial.begin(9600);
Wire.begin();// 初始化I²C总线
}
void loop() {
float temp = readAS6221();
Serial.print("Temperature: ");
Serial.print(temp, 2); // 保留两位小数
Serial.println(" °C");
delay(1000);
}
float readAS6221() {
Wire.beginTransmission(AS6221_ADDR);
Wire.write(0x00); // 温度数据寄存器地址(高字节)
Wire.endTransmission();
Wire.requestFrom(AS6221_ADDR, 2);
if (Wire.available() >= 2) {
uint8_t msb = Wire.read();
uint8_t lsb = Wire.read();
int16_t raw = (msb << 8) | lsb;
return (raw >> 2) * 0.0078125/2-2; //0.03125; // 转换公式(见数据手册)
}
return -999; // 错误值
}
这个温度的换算和手册里不符,只能用四则运算模拟趋近,
环境温度22.9度。
修改:
|