19-2 Grupo 6

### Resumo

O projeto é um jogo já conhecido por varias pessoas, com o objetivo de testar a memoria auditiva e visual do usuario.

### Software e materiais utilizados

-4 botões

-4 leds (vermelho, amarelo, verder e azul)

- buzzer passivo 5v

-arduino Uno

- protoboard

- 8 resistores 220ohms

- 30 jumpers

### Metodologia

o programa seleciona aleatoriamente uma nota para o buzzer passivo tocar, e aciona ao mesmo tempo uma saída digital que aciona um LED de uma cor.

quando você clicar em um botão, o circuito elétrico é fechado e manda um sinal para o Arduíno. Esse sinal é captado por entradas logicas com a mesma sequencia do LED.

O programa compara a saída do LED e a entrada do botão pressionado, e da sequencia ao jogo, repetindo a mesma nota e sorteando mais uma.

Caso erre, ele apitará e todos os LEDS vão acender. Reiniciando o jogo.

### Desenvolvimento

1- dificuldade com o circuito elétrico (entramos em contato com amigos que lidam com Arduíno frequentemente).

2-dificuldade para encontrar tutoriais ou documentações, de como é o funcionamento de um Buzzer passivo de 5V

### Codigo

#define NOTE\_D4  294

#define NOTE\_G4  392

#define NOTE\_A4  440

#define NOTE\_A5  880

int tons[4] = { NOTE\_A5, NOTE\_A4, NOTE\_G4, NOTE\_D4 };

int sequencia[100] = {};

int rodada\_atual = 0;

int passo\_atual\_na\_sequencia = 0;

int pinoAudio = 6;

int pinosLeds[4] = { 8, 9, 10, 11 };

int pinosBotoes[4] = { 2, 3, 4, 5 };

int botao\_pressionado = 0;

int perdeu\_o\_jogo = false;

void setup() {

for (int i = 0; i <= 3; i++) {

pinMode(pinosLeds[i], OUTPUT);

}

    pinMode(pinosBotoes[i], INPUT);

  }

pinMode(pinoAudio, OUTPUT);

randomSeed(analogRead(0));

}

void loop() {

if (perdeu\_o\_jogo) {

int sequencia[100] = {};

rodada\_atual = 0;

    passo\_atual\_na\_sequencia = 0;

perdeu\_o\_jogo = false;

}

  if (rodada\_atual == 0) {

tocarSomDeInicio();

delay(500);

}

proximaRodada();

  reproduzirSequencia();

  aguardarJogador();

  delay(1000);

}

void proximaRodada() {

int numero\_sorteado = random(0, 4);

sequencia[rodada\_atual++] = numero\_sorteado;

}

void reproduzirSequencia() {

  for (int i = 0; i < rodada\_atual; i++) {

tone(pinoAudio, tons[sequencia[i]]);

digitalWrite(pinosLeds[sequencia[i]], HIGH);

    delay(500);

noTone(pinoAudio);

digitalWrite(pinosLeds[sequencia[i]], LOW);

    delay(100);

}

noTone(pinoAudio);

}

void aguardarJogador() {

for (int i = 0; i < rodada\_atual; i++) {

    aguardarJogada();

verificarJogada();

if (perdeu\_o\_jogo) {

break;

    }

    passo\_atual\_na\_sequencia++;

}

  passo\_atual\_na\_sequencia = 0;

}

void aguardarJogada() {

boolean jogada\_efetuada = false;

while (!jogada\_efetuada) {

for (int i = 0; i <= 3; i++) {

if (digitalRead(pinosBotoes[i]) == HIGH) {

botao\_pressionado = i;

tone(pinoAudio, tons[i]);

digitalWrite(pinosLeds[i], HIGH);

delay(300);

digitalWrite(pinosLeds[i], LOW);

noTone(pinoAudio);

jogada\_efetuada = true;

}

}

delay(10);

  }

}

void verificarJogada() {

  if (sequencia[passo\_atual\_na\_sequencia] != botao\_pressionado) {

for (int i = 0; i <= 3; i++) {

      tone(pinoAudio, tons[i]);

      digitalWrite(pinosLeds[i], HIGH);

delay(200);

digitalWrite(pinosLeds[i], LOW);

      noTone(pinoAudio);

    }

   tone(pinoAudio, tons[3]);

for (int i = 0; i <= 3; i++) {

digitalWrite(pinosLeds[0], HIGH);

digitalWrite(pinosLeds[1], HIGH);

digitalWrite(pinosLeds[2], HIGH);

digitalWrite(pinosLeds[3], HIGH);

delay(100);

digitalWrite(pinosLeds[0], LOW);

digitalWrite(pinosLeds[1], LOW);

digitalWrite(pinosLeds[2], LOW);

digitalWrite(pinosLeds[3], LOW);

delay(100);

}

noTone(pinoAudio);

    perdeu\_o\_jogo = true;

}

}

void tocarSomDeInicio() {

tone(pinoAudio, tons[0]);

digitalWrite(pinosLeds[0], HIGH);

digitalWrite(pinosLeds[1], HIGH);

  digitalWrite(pinosLeds[2], HIGH);

  digitalWrite(pinosLeds[3], HIGH);

delay(500);

digitalWrite(pinosLeds[0], LOW);

  digitalWrite(pinosLeds[1], LOW);

  digitalWrite(pinosLeds[2], LOW);

digitalWrite(pinosLeds[3], LOW);

  delay(500);

  noTone(pinoAudio);

}

### Resultado

chegamos onde queríamos, porem não temos os botoes de todas as cores necessárias.

### Conclusão

Foi um projeto relativamente simples, porem atendeu o nosso objetivo e o do curso. Fazer um jogo e construir seu hardware foi uma experiencia diferente e desafiadora. Tirando os envolvidos de uma zona de conforto no desenvolvimento de games em motores gráficos, partindo para algo mais manual.