ESP32 读取mlx90614温度传感器

在这里插入图片描述
在这里插入图片描述

/********************************* 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); // 可选,用于控制主循环的速率  
 }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白文化

求大佬打赏;

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值