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

Arduino多任务实现失败求助:仅输出pHValue,未使用delay()

Arduino多任务实现问题的解决方案
  • 问题核心:两个任务共用了同一个prevTime变量,导致第二个任务的触发条件永远无法满足。第一个判断每50毫秒就会更新prevTime,此时currentTime - prevTime的差值最大为50,永远达不到100,所以第二个if块永远不会执行。

  • 解决方案:为每个任务单独维护一个独立的计时变量,避免互相干扰。

修改后的代码如下:

// 为每个任务单独定义计时变量
unsigned long prevPHTime = 0;
unsigned long prevPrintTime = 0;

void loop(void) {
  unsigned long currentTime = millis();
  int pHValue = readPH();

  // 每50毫秒打印pH值
  if (currentTime - prevPHTime > 50) {
    Serial.println(pHValue);
    prevPHTime = currentTime;
  }

  // 每100毫秒打印指定字符串
  if(currentTime - prevPrintTime > 100) {
    Serial.println("I got printed");
    prevPrintTime = currentTime;
  }
}

这样修改后,两个任务各自独立计时,不会互相影响,就能正常实现多任务执行的效果了。

内容的提问来源于stack exchange,提问作者Maaz Shahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:31:02