2016-02-26 2 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); 
     } 
    } 
} 

Теперь, как вы можете видеть, что вы в основном говорят, «если это, то, что. В противном случае, что-то еще. В противном случае, что-то еще Иначе, что-то еще. У вас может быть только один оператор else в if, потому что он будет рассматриваться как «окончательное решение» в вашей логике (если все остальное не работает, сделайте [это]).

Итак, я думаю, что вы хотите переформатировать это, чтобы использовать логику 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, val < 510)), вы уже знаете, что 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); 
    } 
} 
Смежные вопросы