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
相关产品推荐
相关产品推荐

