一、Adafruit ESP32‑S3 TFT Feather 读取内部温度传感器(ADC 内部温度)
Adafruit ESP32‑S3 TFT Feather,板载 ST7789 屏幕,ESP32‑S3 内置内部温度传感器,不需要外接任何元件
ESP32‑S3 内部温度传感器是ADC1 的通道 10,属于内部 ADC,不是外部 ADC 引脚。
ESP32‑S3 内部温度传感器:
硬件通道:ADC1_CHANNEL_10
读取方式:调用 ESP‑IDF 底层 API,Arduino‑ESP32‑S3 框架封装好函数
注意:内部温度读数是芯片结温,不是环境温度,芯片发热会造成读数偏高。
精度一般:±1~2℃,适合做芯片温度监测,不适合高精度环境测温。
底层 ADC 配置,精细控制,校准。
ESP32‑S3 ADC1 与 SPI 屏幕不冲突,内部温度传感器不占用外部 GPIO。
二,代码
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(10);
}
Serial.println("XIAO ESP32S3 温度监测开始...");
}
void loop() {
float temperature = temperatureRead();
Serial.print("芯片内部温度: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000);
}
三、代码讲解
setup () 初始化部分
Serial.begin(115200);
开启串口通信,波特率 115200。 电脑串口监视器要设置同样波特率,才能看到打印输出。
while (!Serial) { delay(10); }
这是USB 虚拟串口等待,XIAO ESP32‑S3 使用 USB‑CDC 虚拟串口。
!Serial:判断串口是否还没有被电脑打开。
如果电脑没有打开串口监视器,程序就卡在循环等待;
一旦打开串口监视器,Serial变为 true,跳出循环继续往下执行。
delay(10):每次循环等待 10ms,避免 CPU 空跑。
作用:防止程序刚上电就打印信息,导致串口监视器接收不到开头的打印文本。
只有 USB 虚拟串口才需要这句;硬件 UART 串口不需要。
Serial.println("XIAO ESP32S3 温度监测开始...");
串口打印一行文字,换行输出。
loop () 循环主程序
float temperature = temperatureRead();
temperatureRead():XIAO ESP32‑S3 专用内置函数
读取芯片内部 ADC 温度传感器,返回浮点型温度值,单位℃。
底层对应 ESP32‑S3 的ADC1_CHANNEL_10内部温度传感器。
读出来是芯片结温。芯片工作、USB 供电发热,数值会比真实环境温度高好几度。
串口打印
Serial.print("芯片内部温度: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print():打印内容不换行
Serial.println():打印完自动换行 示例输出:
XIAO ESP32S3 温度监测开始...
芯片内部温度: 42.3 °C
芯片内部温度: 43.1 °C
芯片内部温度: 43.8 °C
delay(1000);
延时 1000 毫秒 = 1 秒,每秒读取并打印一次温度。
四、软件流程图

五、硬件工作流程

六、实现效果

我要赚赏金
