2016-02-26 5 views
0

«Получение сообщение об ошибке:Arduino: переопределение ошибки функции

"error: 'int ButtonStateNext' previously declared here" (line 7 is where the issue lies)

"exit status 1"

"redefinition of 'int ButtonStateNext'

Всякий раз, когда я пытаюсь скомпилировать мой Arduino program..Could кто-то пролить свет на то, что именно происходит неправильно, я понимаю, что ошибка Сообщение сообщает мне, что я ранее объявлял 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."); 
    } 
} 
+0

В сообщении об ошибке говорится, что вы уже объявили ButtonStateNext в другом месте вашей программы. –

+0

@RobertHarvey Спасибо, но я уже знаю, что говорится в сообщении об ошибке. Проблема в том, что я не вижу нигде, что я объявил ButtonStateNext, поэтому я не уверен, почему он дает это сообщение об ошибке. Я отредактирую свое оригинальное сообщение, чтобы это отразить! – swimmingpoole

ответ

1

У вас есть опечатка

if(ButtonNextState(digitalRead(input)) 

должны быть

if(ButtonNextState(digitalRead(input))) 

И

int ButtonNextState(input) 

должен быть по крайней мере

int ButtonNextState(int input) 
+0

Спасибо! Я исправил его в своем коде и выше - все равно получаю одно и то же сообщение об ошибке: \, но, по крайней мере, это одна проблема! :) – swimmingpoole

+0

@swimmingpoole Я отредактировал. – LPs

+0

@ LP, которые его исправили! Благодаря! : P Может быть, мне не нужно кодировать в 2AM, поэтому я не пропущу маленьких деталей в будущем. Спасибо за помощь. – swimmingpoole

0

Я недавно была такая же проблема, не имея каких-либо ошибок в моем коде. Я думал, что поделился бы тем случаем, когда это будет полезно для тех, кто смотрит сюда позже.

Я ошибочно считал, что у меня могут быть два файла .ino в папке, а компилятор будет смотреть только на файл с тем же именем, что и папка. Это не тот случай, и компилятор просматривает все файлы .ino в папке. Ошибка переопределения возникла из-за того, что оба файла разделяли одни и те же переменные.

Надеюсь, это поможет кому-то еще искать подобную проблему в будущем!