Setup() 不止一次运行。在 VS Code 中使用 PlatformIO

Setup() runnunig more than once. Using PlatformIO in VS Code

嘿,我正在做一个小项目,我不知何故设法导致设置 运行 不止一次,而且新代码不会上传到板上。我不完全确定我做错了什么,但我找不到答案所以我问你们。

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  // I want to make some sound to tell the user to start measuring so I'll put some code below
  Serial.print("Inicialize setup");
  while (millis() < 5000)
  {
    if (millis() % 1000)
    {
      Serial.print(millis());
      Serial.print("\n");
    }
    if (AnalogValue > MaxIntensity)
    {
      MaxIntensity = AnalogValue;
    }
    if (AnalogValue < MinIntensity)
    {
      MinIntensity = AnalogValue;
    }
  }
  Serial.print("setup done");
  float MaxDist = Distance(MaxIntensity);
  float MinDist = Distance(MinIntensity);
  float delta = MaxDist - fabs(MinDist);
  Segmentlength = delta / 7;

  for (int i = 7; i > 0; i--)
  {
    TonesUpperValues[i] = MinDist + (Segmentlength * i);
  }
}

这就是上面用到的函数

float Distance(int Intensity)
//function to calculate distance from intensity
{
  float d = (1 / (exp(Intensity + EOffset))) + Offset;
  d *= -1;
  return d;
}

在串行监视器中,我看到一遍又一遍地打印毫秒,还有一些我猜是 "inicialize setup" "Setup done" 的文本 当我尝试上传代码时出现此错误:avrdude: ser_open(): can't open device "\.\COM5": Access is denied. 即使:Auto-detected: COM5 之前的代码(无法被新上传覆盖且当前为 运行 的代码在功能中有此警告,这不是设置的一部分:src\main.cpp:38:1: warning: control reaches end of non-void function [-Wreturn-type]

你们看到我犯了什么错误吗?

查看代码片段,我不完全确定您的代码发生了什么。但是我发现了一些问题,希望对你有所帮助。

  1. 对于 avrdude: ser_open(): can't open device "\.\COM5": Access is denied. 个问题,
  • Arduino 并不总是自动识别开发板。因此,请确保使用 Tools > Port 选择了正确的 com 端口。你必须在那里看到你的 Arduino

  • 如果电路板不存在,请确保您已正确连接 Arduino,即 Arduino 上的 LED 亮起。

  • 如果你已经正确连接板子,但仍然没有显示板子,请确保Arduino USB driver安装正确。重新安装 Arduino IDE 以安装 USB 驱动程序。

  1. 您的代码片段没有 void loop()。如果您不使用 void loop(),则将其留空,但千万不要错过。会导致编译错误。

  2. 对于warning: control reaches end of non-void function [-Wreturn-type]错误,请通过What does "control reaches end of non-void function" mean?

希望这对您有所帮助。谢谢