GY-MCU90615 非接触式体温传感器实现源码
时间: 2023-12-06 22:02:03 浏览: 29
以下是使用GY-MCU90615非接触式体温传感器测量物体表面温度的示例源代码(使用Arduino开发板):
```
#include <Wire.h>
#define ADDR 0x5B // GY-MCU90615的I2C地址
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
float temperature = readTemperature();
Serial.print("Object temperature: ");
Serial.print(temperature);
Serial.println(" ℃");
delay(1000);
}
float readTemperature() {
uint16_t data[3];
Wire.beginTransmission(ADDR);
Wire.write(0x07); // 温度寄存器的地址
Wire.endTransmission(false);
Wire.requestFrom(ADDR, (uint8_t)3);
for (int i = 0; i < 3; i++) {
data[i] = Wire.read();
}
uint8_t crc = data[2] >> 8;
if (crc == calculateCRC(data, 2)) {
float temp = (float)((data[1] << 8) | data[0]);
temp = (-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000273.15 + (0.02 * temp));
return temp;
} else {
return -1;
}
}
uint8_t calculateCRC(uint16_t data[], int len) {
uint32_t crc = 0xFFFF;
for (int pos = 0; pos < len; pos++) {
crc ^= (uint16_t)data[pos];
for (int i = 8; i != 0; i--) {
if ((crc & 0x0001) != 0) {
crc >>= 1;
crc ^= 0x8408;
} else {
crc >>= 1;
}
}
}
return crc;
}
```
该代码通过I2C通信协议读取GY-MCU90615的温度寄存器,解析温度数据并进行校验,最后输出物体表面的温度值。注意,该代码只是一个简单的示例,实际使用时需要根据具体的应用场景进行修改和优化。