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

超声波测距串口打印缺失奇数序号问题求助

问题分析:串口只显示偶数序号的原因及修复方案

你遇到的这个问题,核心原因是循环变量i被意外递增了两次,直接跳过了所有奇数序号的计数。咱们拆解一下代码里的问题点:

  1. 首先看你的for循环定义:for(i=0;i<51;i++),每次循环执行完毕后,i会自动加1,这是for循环的默认行为;
  2. 但在循环体里,你又写了values[i++] = result;——这里的i++会让i再额外加一次;
  3. 这么一来,每次循环结束后i总共增加了2,自然就从0跳到2,再跳到4……直到50,完全跳过了奇数序号。

另外还有个小细节:你的TakeMeasurement应该是一个测量函数,所以要写成TakeMeasurement();(加上括号),不然编译器会把它当成变量处理,可能导致测量结果错误或者编译失败。

下面是修正后的代码:

int i, result = 0, values[51]; 
for(i=0;i<51;i++){
 result = TakeMeasurement(); // 修正:添加函数调用括号
 Serial.print("Nr.");
 Serial.print(i);
 Serial.print(": ");
 Serial.println(result);
 values[i] = result; // 修正:移除多余的i++
 delay(150);
}

这样修改后,循环变量i只会在for循环的每次迭代末尾递增一次,串口就能正常显示从Nr.0到Nr.50的所有序号了。

内容的提问来源于stack exchange,提问作者Peter S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:04:04