All my LED's activate when i click the button

i made a game where you have to click a button when an certain LED is on, but its not working properly, instead if lighting up once to indicate the score, all the LED's light up one after another and winning the game with one click.
indent preformatted text by 4 spaces
#include "pitches.h"

const int led1 = 3;
const int led2 = 4;
const int led3 = 5;
const int led4 = 6;
const int led5 = 7;
const int buzzer = 12;
const int button = 2;
int ledState1 = LOW;
int ledState2 = LOW;
int ledState3 = LOW;
int ledState4 = LOW;
int ledState5 = LOW;
int interval = 200;
int led = 1;
int score = 0;
unsigned long previous = 0;

void setup() {
// put your setup code here, to run once:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(button, INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
unsigned long currentMillis = millis();
int buttonState = digitalRead(button);
if (currentMillis - previous >= interval && led == 1) {
previous = currentMillis;
ledOff();
digitalWrite(led5, LOW);
digitalWrite(led1, HIGH);
led++;
}
if (currentMillis - previous >= interval && led == 2) {
previous = currentMillis;
ledOff();
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
led++;
}
if (currentMillis - previous >= interval && led == 3) {
previous = currentMillis;
ledOff();
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
led++;
}
if (currentMillis - previous >= interval && led == 4) {
previous = currentMillis;
ledOff();
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
led++;
}
if (currentMillis - previous >= interval && led == 5) {
previous = currentMillis;
ledOff();
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
led = 1;
}

if(buttonState == 0) {
switch(led){
case 1:
ledOff();
score++;
scoreFunc();
delay(1000);
break;
case 2:
ledOff();
digitalWrite(led2, HIGH);
delay(200);
loseFunc();
delay(1000);
digitalWrite(led2, LOW);
delay(1000);
break;
case 3:
ledOff();
digitalWrite(led3, HIGH);
delay(200);
loseFunc();
delay(1000);
digitalWrite(led3, LOW);
delay(1000);
break;
case 4:
ledOff();
digitalWrite(led4, HIGH);
delay(200);
loseFunc();
delay(1000);
digitalWrite(led4, LOW);
delay(1000);
break;
case 5:
ledOff();
digitalWrite(led5, HIGH);
delay(200);
loseFunc();
delay(1000);
digitalWrite(led5, LOW);
delay(1000);
break;
}
}
}

void scoreFunc() {
switch(score) {
case 1:
Serial.println("score!");
digitalWrite(led1, HIGH);
delay(100);
tone(buzzer,NOTE_E6,850);
delay(800);
noTone(buzzer);
ledOff();
case 2:
Serial.println("score!");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(100);
tone(buzzer,NOTE_E6,850);
delay(800);
noTone(buzzer);
ledOff();
case 3:
Serial.println("score!");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(100);
tone(buzzer,NOTE_E6,850);
delay(800);
noTone(buzzer);
ledOff();
case 4:
Serial.println("score!");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(100);
tone(buzzer,NOTE_E6,850);
delay(800);
noTone(buzzer);
ledOff();
case 5:
tone(buzzer,NOTE_E6,125);
delay(130);
tone(buzzer,NOTE_G6,125);
delay(130);
tone(buzzer,NOTE_E7,125);
delay(130);
tone(buzzer,NOTE_C7,125);
delay(130);
tone(buzzer,NOTE_D7,125);
delay(130);
tone(buzzer,NOTE_G7,125);
delay(125);
noTone(buzzer);

}
}

void loseFunc() {
Serial.println("lost");
score = 0;
tone(buzzer,NOTE_G4,35);
delay(35);
tone(buzzer,NOTE_G5,35);
delay(35);
tone(buzzer,NOTE_G6,35);
delay(35);
noTone(buzzer);
}

void ledOff() {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
indent preformatted text by 4 spaces

You don't have break; at the end of the cases so the code for all of the cases is run when case run runs

1 Like

when i removed break; the code for the rest of the cases ran (which is not what i wanted to do)

Check scoreFunc(). The cases don't have breaks

1 Like

thank you, that fixed the problem.

sorry i misunderstood your comment.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.