I'm working on a small game on arduino but I'm facing some really odd behavior. When I run this code all of my leds flash on and off in less than a second even though delay(10000);
should stop them for 10 seconds. However if I remove the while(game_running) block they go back to flashing every 10 seconds even though that block of code never actually runs.
int yellow = 12;
int green = 10;
int red = 9;
int blue = 11;
int debug = 13;
int sequence[1000];
int level = 0;
int game_running = false;
void setup() {
pinMode(yellow, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
pinMode(red, OUTPUT);
pinMode(debug, OUTPUT);
}
void loop() {
// Pre Game light flash
digitalWrite(yellow, HIGH);
digitalWrite(green, HIGH);
digitalWrite(red, HIGH);
digitalWrite(blue, HIGH);
digitalWrite(debug,HIGH);
delay(10000);
digitalWrite(debug,LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
digitalWrite(red, LOW);
digitalWrite(blue, LOW);
delay(10000);
game_running = false;
level = 0;
while(game_running) {
sequence[level] = random(4); // Select next color
// Blink LEDs
for (int i=0; i < level; i++) {
if(sequence[i] == 0) {
digitalWrite(yellow, HIGH);
delay(1000);
digitalWrite(yellow, LOW);
delay(1000);
} else if(sequence[i] == 1) {
digitalWrite(green, HIGH);
delay(1000);
digitalWrite(green, LOW);
delay(1000);
} else if(sequence[i] == 2) {
digitalWrite(red, HIGH);
delay(1000);
digitalWrite(red, LOW);
delay(1000);
} else {
digitalWrite(blue, HIGH);
delay(1000);
digitalWrite(blue, LOW);
delay(1000);
}
}
level += 1;
}
}
sequence
with 1000 entries eats up 2,000 bytes of RAM. (To say nothing of your other variables.) It might be causing some issues. – lemontwist Jun 24 '17 at 10:26sequence
array to have just 100 entries. Maybe that was a problem? – lemontwist Jun 24 '17 at 10:27