My Simon Says not working code…
this is YiNing’s not working Simon code….
boolean simonDone;
int simonSays[99] ={};
int user[99] = {};
int nextStep = 0 ;
int usernextStep = 1;
int simonSpeed = 500;
int ledpin[4] = {};
int btnpin[4] = {};
int count = 0;
int debouncedelay = 10;
boolean debouncefunction(int pin){
boolean state;
boolean previousState;
previousState = digitalRead(pin);
for(int counter =0; counter > debouncedelay; counter++){
delay(1);
state = digitalRead(pin); //readpin
if(state != previousState)
{counter = 0;
previousState = state;
}
}
return state;
}
void setup()
{
for(int i = 4; i < 8; i++){
pinMode(btnpin[i], INPUT);
}
for(int i =8; i < 12; i++){
pinMode(ledpin[i], OUTPUT);
}
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop ()
{
if (simonDone == false)
{
simonSays[nextStep] = int(random(1,5)) ;
Serial.print("nextStep: " );
Serial.println(nextStep);
Serial.print("simonSpeed: " ); // Show how the new time feature works
Serial.println(simonSpeed); // Show how the new time feature works
Serial.print("simonSays: ");
for (int i =0; i <= nextStep ; i++)
{
Serial.print(simonSays[i]);
Serial.print(" , ");
if(simonSays[i] == 1){
digitalWrite(8, HIGH);
delay(300);
digitalWrite(8, LOW);
}
if(simonSays[i] == 2){
digitalWrite(9, HIGH);
delay(300);
digitalWrite(9, LOW);
}
if(simonSays[i] == 3){
digitalWrite(10, HIGH);
delay(300);
digitalWrite(10, LOW);
}
if(simonSays[i] == 4){
digitalWrite(11, HIGH);
delay(300);
digitalWrite(11, LOW);
}
delay(simonSpeed);
}
simonSpeed= (simonSpeed - (nextStep*5));
simonSpeed = max(simonSpeed, 200);
simonDone = true;
Serial.println(" ");
}
if (simonDone == true)
{
//delay(3000);
Serial.println("User's turn");
Serial.print("User says: ");
for(int i = 0; i <= nextStep; i++){
boolean wait = true;
if(user[i] != 1 || user[i] != 2 || user[i] != 3 || user[i] != 4){
if(wait == true) {
for(int i = 0; i <count+1; i++){
delay(count);
count++;
}
}
}
if (digitalRead(4) == HIGH){
wait = false;
Serial.print("1");
user[i] = 1;
delay(200);
}
if (digitalRead(5) == HIGH){
wait = false;
Serial.print("2");
user[i] = 2;
delay(200);
}
if (digitalRead(6) == HIGH){
wait = false;
Serial.print("3");
user[i] = 3;
delay(200);
}
if (digitalRead(7)== HIGH){
wait = false;
Serial.print("4");
user[i] = 4;
delay(200);
}
if (user[i] == simonSays[i]){
//usernextStep ++;
Serial.print(" , ");
//if(usernextStep == nextStep + 1){
Serial.println("User got it right, add a new step and give Simon a Turn");
simonDone = false;
//}
}
}
nextStep++;
}
}
Reply