2016-02-26 398 views
1

我试图建立一个听起来像一个扬声器,当一个按钮被按下时,我完全失去了,我是相当新的arduino和一般编码。这是我的第一个项目,我正在研究没有教程或任何东西,所以如果编码有点混乱,我很抱歉。提前致谢!error:expected'}'before'else'

#include "pitches.h" 

int sensorPin = 0; 
int val = 9; 

int Buzzer1 = 2; 

int buttonState1 = 1; 
int buttonState2 = 5; 
int buttonState3 = 6; 
int buttonState4 = 7; 

const int buttonPlay = 1; 
const int buttonBlue = 5; 
const int buttonGreen = 6; 
const int buttonYellow = 7; 

const int greenLight = 13; 
const int yellowLight1 = 12; 
const int yellowLight2 = 11; 
const int redLight = 10; 

int melody[] = { //SECRET SONG 
    NOTE_E5, NOTE_E3, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5, 
    NOTE_B4, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_C5, NOTE_E5, NOTE_A3, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5, NOTE_E3, NOTE_E5, 
    NOTE_E3, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_B2, 
    NOTE_C3, NOTE_D3, NOTE_D5, NOTE_F5, NOTE_A5, NOTE_C5, NOTE_C5, NOTE_G5, 
    NOTE_F5, NOTE_E5, NOTE_C3, 0, NOTE_C5, NOTE_E5, NOTE_A4, NOTE_G4, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_G4, NOTE_E5, 
    NOTE_G4, NOTE_C5, NOTE_E4, NOTE_A4, NOTE_E3, NOTE_A4, 0, 
    NOTE_E5, NOTE_E3, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5, 
    NOTE_B4, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_C5, NOTE_E5, NOTE_A3, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5, NOTE_E3, NOTE_E5, 
    NOTE_E3, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_B2, 
    NOTE_C3, NOTE_D3, NOTE_D5, NOTE_F5, NOTE_A5, NOTE_C5, NOTE_C5, NOTE_G5, 
    NOTE_F5, NOTE_E5, NOTE_C3, 0, NOTE_C5, NOTE_E5, NOTE_A4, NOTE_G4, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_G4, NOTE_E5, 
    NOTE_G4, NOTE_C5, NOTE_E4, NOTE_A4, NOTE_E3, NOTE_A4, 0, 
    NOTE_E4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_D4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_A3, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_GS3, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_E4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_D4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_C4, NOTE_E3, NOTE_E4, NOTE_E3, NOTE_A4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_GS4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_E5, NOTE_E3, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5, 
    NOTE_B4, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_C5, NOTE_E5, NOTE_A3, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5, NOTE_E3, NOTE_E5, 
    NOTE_E3, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_B2, 
    NOTE_C3, NOTE_D3, NOTE_D5, NOTE_F5, NOTE_A5, NOTE_C5, NOTE_C5, NOTE_G5, 
    NOTE_F5, NOTE_E5, NOTE_C3, 0, NOTE_C5, NOTE_E5, NOTE_A4, NOTE_G4, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_G4, NOTE_E5, 
    NOTE_G4, NOTE_C5, NOTE_E4, NOTE_A4, NOTE_E3, NOTE_A4, 0, 
    NOTE_E5, NOTE_E3, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5, 
    NOTE_B4, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_C5, NOTE_E5, NOTE_A3, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5, NOTE_E3, NOTE_E5, 
    NOTE_E3, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_B2, 
    NOTE_C3, NOTE_D3, NOTE_D5, NOTE_F5, NOTE_A5, NOTE_C5, NOTE_C5, NOTE_G5, 
    NOTE_F5, NOTE_E5, NOTE_C3, 0, NOTE_C5, NOTE_E5, NOTE_A4, NOTE_G4, NOTE_D5, 
    NOTE_C5, NOTE_B4, NOTE_E4, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_G4, NOTE_E5, 
    NOTE_G4, NOTE_C5, NOTE_E4, NOTE_A4, NOTE_E3, NOTE_A4, 0, 
    NOTE_E4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_D4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_A3, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_GS3, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_E4, NOTE_E3, NOTE_A2, NOTE_E3, NOTE_C4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_D4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_B3, NOTE_E3, NOTE_GS2, NOTE_E3, 
    NOTE_C4, NOTE_E3, NOTE_E4, NOTE_E3, NOTE_A4, NOTE_E3, NOTE_A2, NOTE_E3, 
    NOTE_GS4, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_GS2, NOTE_E3, NOTE_GS2, NOTE_E3, 
}; 

int noteDurations[] = { //SECRET SONG NOTE DURATIONS 
8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,4,8,8,16,16,8,8,8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4, 
    8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,4,8,8,16,16,8,8,8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4, 
    8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,4,8,8,16,16,8,8,8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4, 
    8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,4,8,8,16,16,8,8,8,8,8,8,8,16,16,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4, 
    8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
    8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
}; 


void setup() { 

    { //OUTPUTS 
    pinMode(greenLight, OUTPUT); //Green Wire PIN13 
    pinMode(yellowLight1, OUTPUT); //Yellow Wire PIN12 
    pinMode(yellowLight2, OUTPUT); //Yellow Wire PIN11 
    pinMode(redLight, OUTPUT); //Yellow Wire PIN10 
    pinMode(Buzzer1, OUTPUT); //Black Wire PIN2 
    } 

    { //INPUTS 
    pinMode(buttonPlay, INPUT); //Green Wire PIN1 
    pinMode(buttonBlue, INPUT); //Blue Wire PIN5 
    pinMode(buttonGreen, INPUT); //Green Wire PIN6 
    pinMode(buttonYellow, INPUT); //White Wire PIN7 
    } 
} 

void loop() { 
    { //BUTTON STATES 
    buttonState1 = digitalRead(buttonPlay); 
    buttonState2 = digitalRead(buttonBlue); 
    buttonState3 = digitalRead(buttonGreen); 
    buttonState4 = digitalRead(buttonYellow); 
    } 

    { //SECRET SONG 
     if(buttonState1 == LOW,buttonState3 == LOW){ 
for (int thisNote = 0; thisNote < 1000; thisNote++){ 
    int noteDuration = 1000/noteDurations[thisNote]; 
    tone(2, melody[thisNote],noteDuration); 
    int pauseBetweenNotes = noteDuration * 1.30; 
    delay(pauseBetweenNotes); 
    noTone(2); //stop the tone playing: 
    } 
    digitalWrite(2,LOW); 
     } 
    } 

    { //READPOTENTIOMETER 
    val = analogRead(sensorPin); 
    delay(10); 
    } 

    { //BUTTONBLUE 
    if(buttonState2 == LOW){ 
     tone(Buzzer1,200,100); 
    } 
    } 

    { //BUTTONGREEN 
if(buttonState3 == LOW){ 
     if(val < 225){tone(Buzzer1,400,250); 
    }else{if(val >= 225,val < 510){tone(Buzzer1,350,225); 
    }}else{if(val >= 510,val < 735){tone(Buzzer1,300,200); 
    }}else{if(val >= 735){tone(Buzzer1,250,175); 
    }} 
    } 
    } 

    { //BUTTONYELLOW 
    if(buttonState4 == LOW){ 

    } 
    } 

    { //LIGHTGREEN 
    if(val < 255){ 
     digitalWrite(13,HIGH); 
    } 
    } 

    { //LIGHTYELLOW1 
    if(val > 255){ 
     digitalWrite(12,HIGH); 
    } 
    else{ digitalWrite(12,LOW); 
    } 
    } 
    { //LIGHTYELLOW2 
     if(val > 510){ 
     digitalWrite(11,HIGH); 
    } 
    else{ digitalWrite(11,LOW); 
    } 
    } 
{ //LIGHTRED 
     if(val > 765){ 
     digitalWrite(10,HIGH); 
    } 
    else{ digitalWrite(10,LOW); 
    } 
} 
} 

完整的错误代码:

Good_Meme.ino: In function 'void loop()': 
Good_Meme:144: error: expected '}' before 'else' 
     }}else{if(val >= 510,val < 735){tone(Buzzer1,300,200); 
     ^
Good_Meme:145: error: 'else' without a previous 'if' 
     }}else{if(val >= 735){tone(Buzzer1,250,175); 
     ^
Good_Meme.ino: At global scope: 
Good_Meme:150: error: expected unqualified-id before '{' token 
    { //BUTTONYELLOW 
^
expected '}' before 'else' 

回答

0

总之,你如果/在BUTTONGREEN段其他嵌套是不正确的。让我们来阻止你的if结构,使其更易于阅读...

if(buttonState3 == LOW) 
{ 
    if(val < 225) 
    { 
     tone(Buzzer1,400,250); 
    } 
    else 
    { 
     if(val >= 225,val < 510) 
     { 
      tone(Buzzer1,350,225); 
     } 
    } 
    else 
    { 
     if(val >= 510,val < 735) 
     { 
      tone(Buzzer1,300,200); 
     } 
    } 
    else 
    { 
     if(val >= 735) 
     { 
      tone(Buzzer1,250,175); 
     } 
    } 
} 

现在,你可以看到,你基本上说,“如果这样,那么,否则,别的东西。否则,别的东西别的,别的。“您在if中只能有一个else声明,因为它将在您的逻辑中被视为“最终解决方案”(如果其他方法都失败,请执行此操作)。

所以,我认为你想要做的是重新格式化这个使用else if逻辑。我相信一个更正确的结构将是:

if(buttonState3 == LOW) 
{ 
    if(val < 225) 
    { 
     tone(Buzzer1,400,250); 
    } 
    else if (val >= 225,val < 510) 
    { 
     tone(Buzzer1,350,225); 
    } 
    else if(val >= 510,val < 735) 
    { 
     tone(Buzzer1,300,200); 
    } 
    else if(val >= 735) 
    { 
     tone(Buzzer1,250,175); 
    } 
} 

但是!在最后的else if条件下,您可能可以将其更改为else并省略if(val >= 735)。因为在路的尽头,如果你已经得到那么多,你几乎可以肯定的是val >= 735。另外,您可以考虑删除else if条件的第一部分。因为,如果您处于第二种状态(​​),则您已知道val >= 225。所以,你应该可以说:

if(buttonState3 == LOW) 
{ 
    if(val < 225) 
    { 
     tone(Buzzer1,400,250); 
    } 
    else if (val < 510) 
    { 
     tone(Buzzer1,350,225); 
    } 
    else if(val < 735) 
    { 
     tone(Buzzer1,300,200); 
    } 
    else 
    { 
     tone(Buzzer1,250,175); 
    } 
}