【问题标题】:Arduino Compiling Error "Error compiling for board Arduino Nano"Arduino 编译错误“为板 Arduino Nano 编译错误”
【发布时间】:2021-03-20 01:04:49
【问题描述】:

我正在使用带有 NEMA17 步进器和 4 个按钮的 Arduino Nano、DRV8825 驱动器来模拟稍后将使用的 ACS712 电流传感器。简而言之,每个按钮都连接到模拟引脚(A0、A1、A2、A3),​​模拟端口被编码为特定的度数(0,45,225,270),经过一些工作,我能够让代码按需要运行。步进器响应按钮并采用最短路径(CW 或 CCW)到下一个选择,无论选择顺序如何。如果您选择相同的按钮两次,它将保持在当前位置,因为它已经存在!由于这是一项正在进行的工作,我正在一次进行一项更改,例如添加编码以将继电器的数字引脚写入高电平,并将部分代码转换为数组。这就是我为板 Arduino Nano 编译错误的地方。我将包含 2 个代码,一个可以工作,一个会导致编译错误。我希望我没有违反任何规则,并且阅读了一些似乎并不适用的结果。

在此处输入代码

                         //THIS ONE GIVE THE ABOVE ERROR//

  //same as 1.0 but names changed to na=new angle & CA=current angle // This one seem to work, had 
    change some code to get it to work in all examples. // Using buttons to simulate analog inputs 
    for now. // Adding led to represent vac relay on/off PIN 4

    // defines pins numbers const int stepPin = 3; const int dirPin = 2; const int enPin = 8; const 
    int vacPin = 4; //Just added this for vac

// Button asignments //const int b1 = A0; //const int b2 = A1; //const int b3 = A2; //const int b4 = A3;

const int PIN_COUNT = 4; int inputPins[PIN_COUNT] = {A0, A1, A2, A3}; int outputVals[4] = {0, 45, 225, 270};

int ca = 0; //currentAngle int na = 0; //angle int stepPerAngle = 5 / 9; // full step = 1.8 or could have used "*1.8" int numstep;

void setup() { Serial.begin(9600); for (int index = 0; index < 4; index++) // Sets the 3 pins as Outputs pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); pinMode(enPin, OUTPUT); pinMode(vacPin, OUTPUT); //Just added this for vac

//set values for 2 outputs digitalWrite(enPin, LOW); digitalWrite(dirPin, HIGH); digitalWrite(vacPin, LOW); //just add this for vac

// set buttons as inputs, some of these will become inputs from ACS712's /* pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); }*/

void loop(); int n; for (int index = 0; index < 4; index++)

/* int n;
  // Assign button degrees
  if      ( digitalRead(A0) == HIGH) {
   na = 0;
  }
  else if ( digitalRead(A1) == HIGH) {
   na = 45;
  }
  else if ( digitalRead(A2) == HIGH) {
   na = 225;
  }
  else if ( digitalRead(A3) == HIGH) {
   na = 270;
  }*/

//currentAngle=ca    new angle=na
// 1st SCENARIO if these to ARE the same nothing happens
//only if they ARE not equal then steps through to find a true statement to act ohn
//if (ca = na) {digitalWrite(vacPin, HIGH);}
if ( ca != na ) {
  //  Serial.println (ca);
  //2nd SCENARIO
  if (na - ca > 0 && na - ca <= 180)
  { digitalWrite(dirPin, HIGH);
    n = ((na - ca) * 5 / 9);
    numstep = n;
    ca = na;
  }

  //3rd SCENARIO
  else if (ca - na > 0 && ca - na > 180)
  { digitalWrite(dirPin, HIGH);
    n = ((na + 360 - ca) * 5 / 9);
    numstep = n;
    ca = na;
  }

  // 4th SCENARIO
  else if (na - ca < 0 && na - ca <= 180)
  { digitalWrite(dirPin, LOW);
    n = ((ca - na) * 5 / 9);
    numstep = n;
    ca = na; (ca);
  }

  //5th SCENARIO
  else if (na - ca > 0 && na - ca > 180)
  { digitalWrite(dirPin, LOW);
    n = ((ca + 360 - na) * 5 / 9);
    numstep = n;
    ca = na; (ca);
  }

  for (int x = 0; x < numstep; x++) {

    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);  //speed
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }  //speed
  delay(500);
}
}
                     //THIS ONE COMPILES WITH NO ERRORS//
 //same as 1.0 but names changed to na=new angle & CA=current angle // This one seem to work, had change some code to get it to work in all examples. // Using buttons to simulate analog inputs for now. // Adding led to represent vac relay on/off PIN 4

// defines pins numbers const int stepPin = 3; const int dirPin = 2; const int enPin = 8; const int vacPin = 4; //Just added this for vac

// Button asignment //const int b1 = A0; //const int b2 = A1; //const int b3 = A2; //const int b4 = A3;

int ca = 0; //currentAngle int na = 0; //angle int stepPerAngle = 5 / 9; // full step = 1.8 or could have used "*1.8" int numstep;

void setup() { Serial.begin(9600);

// Sets the 3 pins as Outputs pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); pinMode(enPin, OUTPUT); pinMode(vacPin, OUTPUT); //Just added this for vac

//set values for 2 outputs digitalWrite(enPin, LOW); digitalWrite(dirPin, HIGH); digitalWrite(vacPin, LOW); //just add this for vac

// set buttons as inputs, some of these will become inputs from ACS712's pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); }

void loop() { int n; // Assign button degrees if ( digitalRead(A0) == HIGH) { na = 0; } else if ( digitalRead(A1) == HIGH) { na = 45; } else if ( digitalRead(A2) == HIGH) { na = 225; } else if ( digitalRead(A3) == HIGH) { na = 270; }

//currentAngle=ca new angle=na // 1st SCENARIO if these to ARE the same nothing happens //only if they ARE not equal then steps through to find a true statement to act ohn //if (ca = na) {digitalWrite(vacPin, HIGH);} if ( ca != na ) { // Serial.println (ca); //2nd SCENARIO if (na - ca > 0 && na - ca <= 180) { digitalWrite(dirPin, HIGH); n = ((na - ca) * 5 / 9); numstep = n; ca = na; }

//3rd SCENARIO
else if (ca - na > 0 && ca - na > 180)
{ digitalWrite(dirPin, HIGH);
  n = ((na + 360 - ca) * 5 / 9);
  numstep = n;
  ca = na;
}

// 4th SCENARIO
else if (na - ca < 0 && na - ca <= 180)
{ digitalWrite(dirPin, LOW);
  n = ((ca - na) * 5 / 9);
  numstep = n;
  ca = na; (ca);
}

//5th SCENARIO
else if (na - ca > 0 && na - ca > 180)
{ digitalWrite(dirPin, LOW);
  n = ((ca + 360 - na) * 5 / 9);
  numstep = n;
  ca = na; (ca);
}

for (int x = 0; x < numstep; x++) {

  digitalWrite(stepPin, HIGH);
  delayMicroseconds(1000);  //speed
  digitalWrite(stepPin, LOW);
  delayMicroseconds(1000);
}  //speed
delay(500);
} }

【问题讨论】:

    标签: arduino


    【解决方案1】:

    “Arduino Nano 板编译错误”

    只是错误信息的结束。带有错误信息的实际错误消息在此之上。

    我不会在这里详细介绍,因为您的代码格式非常糟糕,我不能简单地复制粘贴它。如果您需要其他人的帮助,您至少可以使用换行符发布您的代码。不能将 cmets 和代码放在同一行中。

    首先映入我眼帘的是:

    void loop(); int n; for (int index = 0; index < 4; index++)
    

    如果您将有效的代码与无法编译的代码进行比较,您会发现一些重要的差异。

    例如,你有一个分号,你需要{

    void loop () {
      // you code
    }
    

    现在向上滚动控制台,找出编译器抱怨的问题并修复它。如果您省略变量名并搜索通用文本,您可以在线找到任何错误消息的解决方案。

    【讨论】:

    • 请注意,您在 void 循环中省略了括号
    • 很抱歉。我向上滚动查看您指出的示例,但有些内容没有正确粘贴。并非所有代码都在那里,而且非常混乱。我已经准备好发布它并且它消失了,我急忙重做它,显然把它搞砸了。。等我休息好后再试。
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多