Como funciona o jogo: 
O jogador deve repetir a sequencia pressionando os botões de acordo com a indicação dos leds

Nível de dificuldade:
O nível de dificuldade atualmente é pré-estabelecido diretamente no código.

Desenvolvimentos Pedagógico: Capacidade visual/ Sensibilidade tátil/ Coordenação manual/ Sensibilidade musical/ Coordenação motora/ Imaginação de fantasia/ Afetividade /Socialização /Interação entre pais e filhos /Estimula a criatividade /Percepção de movimento


Esquema eletrônico

phhPD7F.png


Código para testar o funcionamento dos leds

int botao1 = 2;
int botao2 = 3;
int botao3 = 4;
int botao4 = 5;
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
char ledSelect = "";
int estadoBotao;
void setup() {
  Serial.begin(9600);
  pinMode(botao1, INPUT);
  pinMode(botao2, INPUT);
  pinMode(botao3, INPUT);
  pinMode(botao4, INPUT);  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);  
  testeLeds();
}
void loop() {
  estadoBotao = botaoPressionado();
  switch(botaoPressionado()){
    case 1:
      digitalWrite(led1, HIGH);
      break;
    case 2:
      digitalWrite(led2, HIGH);
      break;
    case 3:
      digitalWrite(led3, HIGH);
      break;  
    case 4:
      digitalWrite(led4, HIGH);
      break;
  }
  delay(5);
  
  apagarLeds();
}
int botaoPressionado(){
  int numeroBotao;
  
  if (digitalRead(botao1) == HIGH){
    numeroBotao = 1;  
  }else if(digitalRead(botao2) == HIGH){
    numeroBotao = 2;
  }else if(digitalRead(botao3) == HIGH){
    numeroBotao = 3;
  }else if(digitalRead(botao4) == HIGH){
    numeroBotao = 4;
  }
  
  return numeroBotao;
}
void apagarLeds(){
  digitalWrite(led1, LOW);
  delay(1);
  digitalWrite(led2, LOW);
  delay(1);
  digitalWrite(led3, LOW);
  delay(1);
  digitalWrite(led4, LOW);    
  delay(1);
}
void testeLeds(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(250);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(250);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(250);  
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(500);    
}


Código do jogo ainda em conclusão

//Define a quantidade de sequencias
#define MAXIMO 20
//Declaração das variáveis que possibilitarão o acesso aos botões
int botao1 = 2;
int botao2 = 3;
int botao3 = 4;
int botao4 = 5;
//Declaração das variáveis que possibilitarão o controle dos leds
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
//Declaração da variável que armazena o estado do botão, ou seja, se esta pressionado ou não.
int estadoBotao;
//Declaração da variável que amazenará a sequencia que os botões devem ser pressionados
int sequenciaJogo[MAXIMO];
int sequenciaBotoesPressionados[MAXIMO];
int proximoSequenciaJogo = 0;
int proximoSequenciaBotao = 0;
int estado = 5;
int brilho = 255;
/*
 ***********************************************************
 *                        Estados                          *
 ***********************************************************
 *  0 = Estado de apresentar a sequencia para o jogador    *
 *  1 = Estado que permite o jogador pressionar os bostões *
 *  2 = Estado que verifica se a sequencia esta correta    *
 *  3 = Estado que avisa que o jogador venceu              *
 *  4 = Estado que avisa que o jogador perdeu              *
 *  5 = Estado que inicia o jogo                           *
 ***********************************************************
 */ 
void setup() {
  Serial.begin(9600);
  pinMode(botao1, INPUT);
  pinMode(botao2, INPUT);
  pinMode(botao3, INPUT);
  pinMode(botao4, INPUT);  
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);  
}
void loop() {
    //sequenciaBotoesPressionados[proximoSequenciaBotao] = botaoPressionado();
    /*if(botaoPressionado() != 0){
      Serial.print("Botão Pressionado: ");
      Serial.println(botaoPressionado());        
    }*/
  switch(estado){
    case 0:
      apresentarSequencia();
      estado = 1;
      break;
    case 1:
        int botaoValor;
        if(botaoPressionado() != 0){
          botaoValor = botaoPressionado();
          Serial.print("Botão Pressionado: ");
          Serial.println(botaoValor);
        }else{
          break;
        }
        sequenciaBotoesPressionados[proximoSequenciaBotao] = botaoValor;
        for(int i=0; i          Serial.println("ENTROU");
          if(botaoValor == sequenciaJogo[i]){
            Serial.println("Acertou mizeravi");
            estado = 3;    
            proximoSequenciaBotao++;  
          }else if(botaoPressionado() == 0){
            estado = 1;
          }else{
            estado = 4;
          }          
        } 
      break;
    case 2:
      break;
    case 3:
      acertouSequencia();
      estado = 0;
      break;
    case 4:
      Serial.println("ERROOOOU");
      Serial.print("Sequencia Botoes Pressionados");
      Serial.println(sequenciaBotoesPressionados[proximoSequenciaBotao]);
      Serial.print("Sequencia Jogo");      
      Serial.println(sequenciaJogo[proximoSequenciaJogo]);      
      errouSequencia();
      estado = 6;
      break;
    case 5:
      Serial.println("Criar sequencia");
      //Chamada da função que testa os leds, acendendo-os em sequencia
      testeLeds();
      //Chamada da função que cria a sequencia de botões que devem ser pressionados
      criarSequencia();
      apagarLeds();    
      estado = 0;
      break;
    case 6:
      break;
    default:
      break;
  }

  
  //estadoBotao = botaoPressionado();

}
int botaoPressionado(){
  int numeroBotao = 0;
  while(numeroBotao == 0){
    if (digitalRead(botao1) == HIGH){
       numeroBotao = 1;
       digitalWrite(led1, HIGH);
    }else if(digitalRead(botao2) == HIGH){
       numeroBotao = 2;
       digitalWrite(led2, HIGH);
    }else if(digitalRead(botao3) == HIGH){
       numeroBotao = 3;
       digitalWrite(led3, HIGH);       
    }else if(digitalRead(botao4) == HIGH){
       numeroBotao = 4; 
       digitalWrite(led4, HIGH);            
    }
  }
  delay(50);
  apagarLeds();
  
  return numeroBotao;
}
void apagarLeds(){
  digitalWrite(led1, LOW);
  delay(1);
  digitalWrite(led2, LOW);
  delay(1);
  digitalWrite(led3, LOW);
  delay(1);
  digitalWrite(led4, LOW);    
  delay(1);
}
void testeLeds(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(50);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(50);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);  
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);    
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);   
}
void criarSequencia(){
  for(int i=0; i<20; i++){
    sequenciaJogo[i] = random(1,5);
    Serial.println(sequenciaJogo[i]);
    delay(1); 
  }
}
void apresentarSequencia(){
  
  for(int i=0; i <= proximoSequenciaJogo; i++){
    int numSequencia = sequenciaJogo[i];
    switch(numSequencia){
      case 1:
        digitalWrite(led1, HIGH);
        delay(500);
        digitalWrite(led1, LOW);
        delay(500);
        break;
      case 2:
        digitalWrite(led2, HIGH);
        delay(500);
        digitalWrite(led2, LOW);
        delay(500);        
        break;
      case 3:
        digitalWrite(led3, HIGH);
        delay(500);
        digitalWrite(led3, LOW);
        delay(500);        
        break;  
      case 4:
        digitalWrite(led4, HIGH);
        delay(500);
        digitalWrite(led4, LOW);
        delay(500);        
        break;
    }
  }
  delay(500);
  proximoSequenciaJogo++;
  if(proximoSequenciaJogo == MAXIMO){
    proximoSequenciaJogo = 0;
  }
  apagarLeds();  
}
void acertouSequencia(){
  delay(1000);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);    
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);    
  delay(250);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);    
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);    
  delay(250);
}
void errouSequencia(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH); 
  delay(1000);

  for(int brilho=255; brilho >= 0; brilho--){
    analogWrite(led1, brilho);    
    analogWrite(led2, brilho);    
    analogWrite(led3, brilho);    
    analogWrite(led4, brilho);
    delay(3);
  }
}




          if(botaoValor == sequenciaJogo[i]){
            Serial.println("Acertou mizeravi");
            estado = 3;    
            proximoSequenciaBotao++;  
          }else if(botaoPressionado() == 0){
            estado = 1;
          }else{
            estado = 4;
          }          
        } 
      break;
    case 2:
      break;
    case 3:
      acertouSequencia();
      estado = 0;
      break;
    case 4:
      Serial.println("ERROOOOU");
      Serial.print("Sequencia Botoes Pressionados");
      Serial.println(sequenciaBotoesPressionados[proximoSequenciaBotao]);
      Serial.print("Sequencia Jogo");      
      Serial.println(sequenciaJogo[proximoSequenciaJogo]);      
      errouSequencia();
      estado = 6;
      break;
    case 5:
      Serial.println("Criar sequencia");
      //Chamada da função que testa os leds, acendendo-os em sequencia
      testeLeds();
      //Chamada da função que cria a sequencia de botões que devem ser pressionados
      criarSequencia();
      apagarLeds();    
      estado = 0;
      break;
    case 6:
      break;
    default:
      break;
  }
  
  //estadoBotao = botaoPressionado();
}
int botaoPressionado(){
  int numeroBotao = 0;
  while(numeroBotao == 0){
    if (digitalRead(botao1) == HIGH){
       numeroBotao = 1;
       digitalWrite(led1, HIGH);
    }else if(digitalRead(botao2) == HIGH){
       numeroBotao = 2;
       digitalWrite(led2, HIGH);
    }else if(digitalRead(botao3) == HIGH){
       numeroBotao = 3;
       digitalWrite(led3, HIGH);       
    }else if(digitalRead(botao4) == HIGH){
       numeroBotao = 4; 
       digitalWrite(led4, HIGH);            
    }
  }
  delay(50);
  apagarLeds();
  
  return numeroBotao;
}
void apagarLeds(){
  digitalWrite(led1, LOW);
  delay(1);
  digitalWrite(led2, LOW);
  delay(1);
  digitalWrite(led3, LOW);
  delay(1);
  digitalWrite(led4, LOW);    
  delay(1);
}
void testeLeds(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(50);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(50);  
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, HIGH);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, LOW);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);  
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);    
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(50);   
}
void criarSequencia(){
  for(int i=0; i<20; i++){
    sequenciaJogo[i] = random(1,5);
    Serial.println(sequenciaJogo[i]);
    delay(1); 
  }
}
void apresentarSequencia(){
  
  for(int i=0; i <= proximoSequenciaJogo; i++){
    int numSequencia = sequenciaJogo[i];
    switch(numSequencia){
      case 1:
        digitalWrite(led1, HIGH);
        delay(500);
        digitalWrite(led1, LOW);
        delay(500);
        break;
      case 2:
        digitalWrite(led2, HIGH);
        delay(500);
        digitalWrite(led2, LOW);
        delay(500);        
        break;
      case 3:
        digitalWrite(led3, HIGH);
        delay(500);
        digitalWrite(led3, LOW);
        delay(500);        
        break;  
      case 4:
        digitalWrite(led4, HIGH);
        delay(500);
        digitalWrite(led4, LOW);
        delay(500);        
        break;
    }
  }
  delay(500);
  proximoSequenciaJogo++;
  if(proximoSequenciaJogo == MAXIMO){
    proximoSequenciaJogo = 0;
  }
  apagarLeds();  
}
void acertouSequencia(){
  delay(1000);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);    
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);    
  delay(250);
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);    
  delay(250);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);    
  delay(250);
}
void errouSequencia(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH); 
  delay(1000);
  for(int brilho=255; brilho >= 0; brilho--){
    analogWrite(led1, brilho);    
    analogWrite(led2, brilho);    
    analogWrite(led3, brilho);    
    analogWrite(led4, brilho);
    delay(3);
  }
}

a69AO29.jpg



Atividades recentes