Arduino UNO 传感器数据输出突然跳转

Abrupt jumps in the Arduino UNO sensor data output

我正在使用Arduino UNO记录CNY70的传感器数据。我使用的代码如下所示。此代码写入记录值 10 秒,然后停止。

#include <EEPROM.h>
const int chipSelect = 2;
unsigned int y1 = 0;
unsigned long y = 0;

String data = "";
void setup()
{
  Serial.begin(230400);
  delay(10);
}

void loop()
{
  while (y < 10000000)
  {
    if (y1 > 372) //start recording only after 372 microseconds
    {
      y = micros();
      data += y;
      data += ",";
      data += analogRead(A0);
      Serial.println(data);
      data = " "; //clear data after printing the value
    }
    y1 = micros() - y;
  }
}

这些值是从串行监视器复制的。一些记录显示一个或两个记录值突然跳跃,因此,数据图表看起来已经 'struck' 了。这些数字是: Jump in value of the sensor data Zoomed image of the sensor data

这些突然的值不会在每次代码为 运行 时出现,但它们确实每 7-12 运行 秒出现一次。这些突然跳跃的原因是什么?实验条件没有突然变化。如何防止 Arduino 记录和存储这种突然的值?

您的值不会突然上升,它们会下降到 0。 通常,如果对地短路,则只能测量 0。因此,也许您的电缆因振动而损坏....我不知道您的测试设置。

测试 1) 测量恒定电压

测试 2) 尝试另一个输入引脚

如果无法修复,请检查读取值。如果它们没有意义,请跳过它们或通过外推法替换它们。