繁体   English   中英

Arduino:重新定义函数错误

[英]Arduino: redefinition of a function error

“获取错误消息:

“错误:'int ButtonStateNext'先前在此处声明”(第7行是问题所在)

“退出状态1”

“重新定义'int ButtonStateNext'

每当我尝试编译我的arduino程序时......有人可以说明究竟出了什么问题吗? 我知道错误信息告诉我我之前已经宣布过ButtonNextState,但我看不到我已经这样做了(至少,故意?)。 以下是整个代码(自最小以来发布)谢谢。

String ButtonState;
int Pin = 4;
unsigned long timer;
int input;

//function that is to be called in loop to service
int ButtonNextState( input ) {
//Switch statement based on state
    switch( ButtonState )
    {       
        case Idle:
            if(input == LOW)
            {
                //Record time
                timer = millis();
                //Set ButtonState to wait
                ButtonState = "Wait";
            }
            break;
        case Wait:
            if(input == HIGH)
            {
                ButtonState = "Idle";
            }
            else if(timer >= 5)
            {
                ButtonState = "Low";
                return 1;
            }
            break;
        case Low:
            if(input == HIGH)
            {
                ButtonState = "Idle";
            }
            break;
    } //end of switch statement

    return 0; // By default, return 0 indicating nothing is happening    
}

void setup() {
    //Set pin as input
    input = 4;
    //Set ButtonState to Idle
    ButtonState = "Idle";
}

void loop() {
    if( ButtonNextState( digitalRead( input ) ) )
    {
        //Send serial message indicating button press
        Serial.write("Button Pressed.");
    }
}

你这里有一个错字

if( ButtonNextState( digitalRead( input ) )

不得不

if( ButtonNextState( digitalRead( input ) ) )

int ButtonNextState( input )

至少应该是

int ButtonNextState( int input )

我最近遇到了同样的问题而我的代码没有任何错误。 我想我会分享,以防后来看到这里的人有什么用处。

我错误地认为我可以在一个文件夹中有两个.ino文件,编译器只会查看与该文件夹同名的文件。 情况并非如此,编译器会查看文件夹中的所有.ino文件。 重定义错误的出现是因为两个文件共享相同的变量。

希望这有助于其他人在将来寻找类似的问题!

尝试将文件保存到其他位置,然后查看错误是否仍然存在。 如果文件位于云上,我遇到了编译器的上述问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM