/********************************* mlx90614 part ************************************************************************/
/*
接线说明:
VCC------VCC:连接传感器的电源正极到Arduino的VCC或5V
GND------GND:连接传感器的电源负极到Arduino的GND
SCL------SCL:连接传感器的SCL引脚到Arduino的I2C SCL引脚(ESP32通常是22)
SDA------SDA:连接传感器的SDA引脚到Arduino的I2C SDA引脚(ESP32通常是21)
注意:当测量物体的距离时,最好在5CM到15CM之间测量(但请注意,MLX90614是一个温度传感器,不是距离传感器)
*/
#include <Wire.h> // 引入Wire库,用于I2C通信
#include <Adafruit_MLX90614.h> // 引入Adafruit MLX90614库
#include <SPI.h> //这一行是多余的,因为MLX90614使用I2C通信,不需要SPI
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); // 实例化Adafruit_MLX90614对象
#define mlxTimeInterval 1000 // 定义检测的时间间隔为1000毫秒(1秒)
unsigned long mlxTimes = 0; // 记录设备上次检测的时间
float mlxAmbTemp = 0; // 环境温度
float mlxObjTemp = 0; // 物体温度
/* 获取温度的函数 */
void getMlxData() {
if (millis() - mlxTimes >= mlxTimeInterval ) { // 如果从上一次检测到现在的时间间隔大于或等于设定的时间间隔
mlxTimes = millis(); // 更新上次检测的时间为当前时间
mlxAmbTemp = mlx.readAmbientTempC(); // 读取环境温度(摄氏度)
// 注意:这里对物体温度进行了乘0.8的操作,这通常是为了某种校准或修正,但应根据实际情况调整
mlxObjTemp = mlx.readObjectTempC() * 0.9; // 读取物体温度(摄氏度)并乘以0.8
Serial.print("环境温度 (C): "); // 通过串口打印环境温度的标题
Serial.print(mlxAmbTemp); // 打印环境温度的值
Serial.print(" , 物体温度 (C): "); // 注意这里应该是"Object"而不是"Objec",是一个拼写错误
Serial.println(mlxObjTemp); // 打印物体温度的值并换行
}
}
/****************************************set up and loop part*********************************
void setup() {
Serial.begin(9600); //Set baud rate
mlx.begin(); //IIC communication initialization
Serial.println("Go online!"); //The device is initialized
}
void loop() {
getMlxData(); //Acquired temperature
}
********************************mlx90614 part********************************************************************/
void setup() {
Serial.begin(9600);
if (!mlx.begin()) {
Serial.println("MLX90614 not found!");
while (1); // 如果没有找到传感器,则停止执行
}
}
void loop() {
getMlxData();
delay(100); // 可选,用于控制主循环的速率
}