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