Hi, I am working on a project and I am just starting to test my code. I ran my code and my RGB LED was working for a short while but my for-loops were acting weird. I changed a few lines and now my Serial.println at the beginning of my function is running in an infinite loop in the Serial Monitor. My code should follow:
int redLED = 2;
int greenLED = 3;
int blueLED = 4;
int redbutton = 5;
int bluebutton = 6;
int greenbutton = 7;
int buttons[] = {redbutton,bluebutton,greenbutton};
int sensorRed = digitalRead(redbutton);
int sensorBlue = digitalRead(bluebutton);
int sensorGreen = digitalRead(greenbutton);
bool fact = true;
int presses = 0;
int seq[8];
void setup()
{
Serial.begin (9600);
//setting the LEDs
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
//setup pinmode for the Simon Game
pinMode(redbutton, INPUT_PULLUP);
pinMode(greenbutton, INPUT_PULLUP);
pinMode(bluebutton, INPUT_PULLUP);
}
void loop()
{
simonGame();
}
void lose()
{}
void simonGame()
{
Serial.println("Welcome to Simon!");
Serial.println("Try to play the sequence back by pressing the switches.");
bool game = true;
while(game == true){
for(int t = 0; t < sizeof(seq)-1; t++){
seq[t] = random(0,4);
Serial.println(seq[t]);
}
for(int i = 0; i < sizeof(seq)-1; i++){
if(seq[i] == 1){
analogWrite(redLED, 255);
delay(1000);
analogWrite(redLED, 0);
delay(1000);
}
else if(seq[i] == 2){
analogWrite(blueLED, 255);
delay(1000);
analogWrite(blueLED, 0);
delay(1000);
}
else if(seq[i] == 3){
analogWrite(greenLED, 255);
delay(1000);
analogWrite(greenLED, 0);
delay(1000);
}
else{
break;
}}
//wait for player input (via the switches)
//initialize the count of switches pressed to 0
int switch_count = 0;
int picked[8];
//keep accepting player input until the number of
//items in the sequence is reached
for(int p = 0; p < sizeof(seq)-1; p++){
bool pressed = false;
//so long as no switch is currently pressed...
while(pressed == false){
if(sensorRed == HIGH){
picked[p] = 1;
pressed = true;
}
else if(sensorBlue == HIGH){
picked[p] = 2;
pressed = true;
}
else if(sensorGreen == HIGH){
picked[p] = 3;
pressed = true;
}
else{
break;
} }
if(picked[p] == seq[p]) {
break;
game = false;}
else{
lose();
}}}}
Let me know if you have any suggestions. Thank you!