2012-01-31 207 views
2

我收到以下错误:错误的Arduino编程

error: expected constructor, destructor, or type conversion before ‘(’ token

这里是源代码,我已经写了:

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); 
     } 
    } 
    } 

的变量和设置都OK;该错误位于for行。谁能告诉我如何解决这个问题?

(编辑:添加脚本用于演示开始时,和对不起(这里的第一个问题)

(编辑:看起来像错误是不是在“我”的定义我使用一个Arduino UNO SMD版,如果有帮助的话(以及IDE的arduino alpha 0022 linux版本)) 编辑:好的,现在就解决了。看来我的Arduino IDE版本没有完全下载,而且我把randomSeed放在了(它应该在setup函数中。)(当我在更新之前将它放在setup函数中时,它显示了一条错误消息,说/opt/arduino/lib/math.h缺少一些东西(或类似的东西,我没有完整的信息))。谢谢f或者你的帮助,我希望我能尽快帮助你在arduino!

+0

要去哪里推送来自因为for循环很好 – RussS 2012-01-31 18:43:19

+0

@RussS:只有在c99和之后。 – 2012-01-31 18:44:28

+0

@Als谢谢你的纠正!我完全忘记了 – RussS 2012-01-31 18:48:02

回答

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

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

如果您使用的是C89编译器,你必须定义i外的for循环条款:

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

而且,所有的声明必须遵循一个块的左大括号,你不能随意混合使用声明和声明。

+0

只需在此添加,C89中的所有声明都必须位于块的顶部。这在这里起作用,因为它位于块的开头(来自上面的上下文),但如果在循环之前有其他语句,则这通常可能不起作用。 – FatalError 2012-01-31 18:46:21

+0

@FatalError是的,在答案中添加注释是有意义的。完成。 – ouah 2012-01-31 18:53:38

1

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

2

您似乎有一个语句randomSeed(analogRead(0));浮动在您的setup()loop()函数定义之间。

移动它和其他任何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的值成推一次(例如你在开机时按住一个按钮);取决于你想要它做什么,你可能想要将读取移动到loop()的开头,所以只要按下按钮就会写入随机值。

1
#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); 
    } 
    } 
}