Arduino编程错误

Error in Arduino programming

本文关键字:错误 编程 Arduino      更新时间:2023-10-16

我收到以下错误:

错误:在"("标记之前需要构造函数、析构函数或类型转换

这是我写的源代码:

   void setup() {
     pinMode(1,OUTPUT);
   [...]
     pinMode(13,INPUT);
   }
   int i = 1;
   bool pushed = digitalRead(13);
   bool val = 0;
   randomSeed(analogRead(0));
   void loop() {
     if (pushed == 1) {
       for (i = 1; i < 9; i++) {
         val = random(2);
         digitalWrite(i,val);
       }
     }
   }

变量和设置正常;错误位于CCD_ 1线上。有人能告诉我怎么解决这个问题吗?

(编辑:添加了脚本的开头,对演示感到抱歉(此处为第一个问题)

(编辑:看起来错误不在"i"定义中。如果有帮助的话,我正在使用Arduino UNO SMD Edition(以及IDE的Arduino alpha 0022 linux版本))编辑:好了,伙计们,现在解决了。我的Arduino IDE版本似乎没有完全下载,我把randomSeed放错了地方(它应该在setup函数中。)(当我在更新之前把它放在setup函数中时,它显示了一条错误消息,说/opt/Arduino/lib/math.h缺少一些东西(或者类似的东西,我没有完整的消息)。谢谢你的帮助,我希望我能很快在阿都诺帮助你!

for (int i = 1; i < 9; i++)

在C99/C11中有效,但在C89中无效。

如果使用C89编译器,则必须在for循环子句之外定义i

int i;
for (i = 1; i < 9; i++)

同样在C89中,所有声明都必须跟在块的左大括号后面,不能随意混合声明和语句。

您的setup()loop()函数定义之间似乎浮动着一条语句randomSeed(analogRead(0));

将其和任何其他IO操作移动到setup()功能的末尾,以便在设置引脚方向后读取

   int i = 1;
   bool pushed; 
   bool val = 0;
   void setup() {
     pinMode(1,OUTPUT);
   [...]
     pinMode(13,INPUT);
     pushed = digitalRead(13);
     randomSeed(analogRead(0));
   }
   void loop() {
     if (pushed == 1) {
       for (i = 1; i < 9; i++) {
         val = random(2);
         digitalWrite(i,val);
       }
     }
   }

这将读取引脚13的值,只需按下一次(例如,通电时按住按钮);根据您希望它执行的操作,您可能希望将读取移动到for0的开头,以便在按下按钮时写入随机值。

在C(C99之前)中,不允许在for循环的第一个表达式中定义新变量。请尝试在函数顶部声明变量i

#define pinMode1 1
#define pinMode2 13
bool pushed;
bool val = 0;
void setup() {
  // Declare OUTPUT pin.
  pinMode(pinMode1, OUTPUT);
  // Declare INPUT pin.
  pinMode(pinMode2, INPUT);
  // Set digitalRead().
  pushed = digitalRead(pinMode2);
  // Initializes the pseudo-random number generator.
  randomSeed(analogRead(0));
}
void loop() {
  if (pushed == 1) {
    for (int i = 1; i < 9; i++) {
      val = random(2);
      // Set i to HIGH or LOW.
      digitalWrite(i, val);
    }
  }
}