You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP-01(NodeMCU)连接TCS3200传感器串口不显示RGB值且WDT复位问题

问题根因

你遇到的rst cause:4, wdt reset报错是ESP8266内置看门狗触发的强制复位,核心问题出在pulseIn()函数的阻塞特性:默认状态下pulseIn()最多会阻塞等待1秒来检测目标电平,这个时间刚好接近ESP8266看门狗的超时阈值,若传感器未正常输出对应电平,函数会一直阻塞,导致系统无法执行看门狗喂狗操作,最终触发复位。

修复步骤

1. 给pulseIn添加超时参数

将所有pulseIn(sensorOut, LOW)调用修改为带超时的版本,超时时间设置为20000微秒(20ms)即可覆盖TCS3200的正常输出频率范围,超时后函数会返回0,可自行加判断过滤无效值:

redFrequency = pulseIn(sensorOut, LOW, 20000);

2. 修正引脚映射

你代码中使用的D4/D5/D6/D7/D8是NodeMCU开发板的丝印标注,和ESP-01的GPIO编号不匹配,请根据实际接线,将宏定义替换为ESP-01对应引脚的GPIO编号,ESP-01可用引脚为GPIO0、GPIO1、GPIO2、GPIO3,示例如下(请根据实际接线调整):

#define S0 2 // 对应接在GPIO2的引脚
#define S1 0 // 对应接在GPIO0的引脚
// 其余引脚同理修改

3. 主动喂狗避免阻塞

每次调用pulseIn()后添加yield()语句,主动让系统执行喂狗操作,避免看门狗误触发。

4. 调整传感器频率缩放系数

你当前设置的20%输出缩放可以修改为100%,拉高输出频率,进一步降低pulseIn()的等待时间:

// 将原来的20%缩放配置替换为以下内容
digitalWrite(S0,HIGH);
digitalWrite(S1,HIGH);

修复后的参考代码

// 请根据实际接线修改引脚编号为ESP-01对应的GPIO号
#define S0 2
#define S1 0
#define S2 3
#define S3 1
#define sensorOut 4

int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // 设置100%频率缩放
  digitalWrite(S0,HIGH);
  digitalWrite(S1,HIGH);
  
  Serial.begin(115200);
}
void loop() {
  // 读取红色通道
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  redFrequency = pulseIn(sensorOut, LOW, 20000);
  yield();
  Serial.print("R = ");
  Serial.print(redFrequency);
  delay(100);
  
  // 读取绿色通道
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  greenFrequency = pulseIn(sensorOut, LOW, 20000);
  yield();
  Serial.print(" G = ");
  Serial.print(greenFrequency);
  delay(100);
 
  // 读取蓝色通道
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  blueFrequency = pulseIn(sensorOut, LOW, 20000);
  yield();
  Serial.print(" B = ");
  Serial.println(blueFrequency);
  delay(100);
}

内容的提问来源于stack exchange,提问作者Muhammad Alfahrezi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:39:02