ESP32-S3/C3内置有温度传感器,用于测量芯片内部温度。温度传感器模块包含一个8位Sigma-Delta型ADC和一个用于补偿温度偏移的DAC

        首先是根据OKGUGU的文章进行一定的修改,感谢OKGUGU。


ESP官网对于内置传感器的详细说明icon-default.png?t=N7T8https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4.2/esp32s3/api-reference/peripherals/temp_sensor.html

方法:

        包含头文件,虽然plaform io的目录结构中没有发现这个头文件,但是包含上去没啥问题;
        #include "driver/temp_sensor.h"

//1.插入头文件
#include "driver/temp_sensor.h"

void setup() {

Serial.begin(9600);// 串口初始化,等下打印信息

//2.定义对象 设定其值为默认值,即
//temp_sensor 的 dac_offset = TSENS_DAC_L2 
//temp_sensor 的 clk_div = 6 

temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT();
      //DEFAULT: range:-10℃ ~  80℃, error < 1℃.
      //TSENS_DAC_DEFAULT	默认偏置,即TSENS_DAC_L2
      //TSENS_DAC_L2	offset = 0, measure range:-10℃ ~ 80℃, error < 1℃.

//其中temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT();
//这句也可以写为如下/* xxxx */所示,二选一即可
/*
 temp_sensor_config_t temp_sensor = {
    .dac_offset = TSENS_DAC_L2,
    .clk_div = 6,
  };
*/

   temp_sensor_set_config(temp_sensor);          //3.设定配置
   temp_sensor_start();                          //4.传感器启用
   Serial.println("Temperature sensor started");
}

void loop()
{
  //温度
  float tsens_out;                         // 5.定义变量存放
  temp_sensor_read_celsius(&tsens_out);    // 6.温度数值存放
  Serial.printf("Temperature out celsius %f°C\r\n", tsens_out);//打印数值
  delay(1000);
}


OKGUGU的原帖icon-default.png?t=N7T8https://blog.csdn.net/qq_36814408/article/details/128075621?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogOpenSearchComplete~Rate-5-128075621-blog-138435563.235%5Ev43%5Epc_blog_bottom_relevance_base7&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogOpenSearchComplete~Rate-5-128075621-blog-138435563.235%5Ev43%5Epc_blog_bottom_relevance_base7&utm_relevant_index=6

        如果有其他疑问,欢迎留言,会尽可能回复

Logo

更多推荐