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

问题描述

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

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 并不总是自动识别开发板。因此,请确保您使用工具 > 端口 选择了正确的 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?

希望对你有帮助。谢谢