wwwmisla / ura-project

Jogo da Memória inspirado no Genius que tem como intuito treinar o Ouvido Absoluto de crianças.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Batma²m - URA

Projeto: Batma²m do URA - Um Robô por Aluno

Desenvolvido por:

  • Artur Silva;
  • Misla Wislaine;
  • Wesleanne Sena.

Licence Badge em Desenvolvimento

Índice

📄 Descrição do Projeto

Este é o repositório do projeto final do Curso de Robótica para Graduandos - 2023.2 do URA (https://www.umroboporaluno.org/), o qual tem como objetivo o desenvolvimento de um projeto que envolva a Robótica Educacional e que esteja seguindo a BNCC - Base Nacional Comum Curricular.

Neste projeto vamos apresentar um "Jogo da Memória" intitulado de "Desenvolvimento e Implementação de um Dispositivo Audioperceptivo Absoluto Destinado a Crianças: Batma²m" ou simplesmente "Batma²m", que é inspirado no "Genius" — jogo de grande sucesso na década de 80. O Batma²m é composto por 4 botões e 4 Leds que acenderão em uma sequência de notas musicais (Dó, Ré, Mi, Fa), com sons definidos para cada um dos Leds, que posteriormente se tornará uma sequência de notas musicais aleatórias para aumentar o grau de dificuldade do jogo. Desse modo, o jogador deverá clicar nos botões conforme a sequência gerada pelo Arduíno e vencerá o jogo se conseguir repetir a maior sequência possível de notas musicais. Aliás, o jogo é limitado a 10 jogadas (5 da sequência de notas e 5 da sequência de notas acrescida da aleatoriedade), mas você poderá ajustar se desejar à medida que o grau de dificuldade do jogador aumentar ou diminuir.

❓ Por Que Escolhemos Fazer Um Teclado Musical Como Testador De Ouvido Absoluto (OA) Para Crianças?
O OA desempenha um papel significativo no desenvolvimento infantil, sobretudo quando relacionado aos aspectos tecnológicos, sociais e cognitivos. Sendo assim, quando pensamos em um contexto tecnológico, o Ouvido Absoluto pode ser potencializado por softwares e dispositivos inovadores que oferecem experiências musicais imersivas, interativas e personalizadas, contribuindo para a ampliação das habilidades auditivas das crianças. Veja abaixo alguns aspectos importantes:

  • Socialmente: A capacidade de reconhecer e reproduzir notas musicais pode promover a inclusão, proporcionando às crianças uma forma adicional de expressão e comunicação;
  • Cognitivamente: O OA estimula o desenvolvimento do raciocínio lógico matemático, uma das competências previstas na BNCC, ao exigir a identificação precisa de frequências sonoras, por exemplo;
  • Estímulo à sensibilidade musical: Pois, desde cedo favorece o desenvolvimento emocional e cultural das crianças, contribuindo para uma formação integral, conforme preconizado pela BNCC.

Logo, o Ouvido Absoluto não apenas potencializa o aprendizado musical, mas também se alinha aos princípios educacionais contemporâneos, promovendo habilidades multidimensionais essenciais para o pleno desenvolvimento das crianças quando aplicado à Robótica Educacional (RE), pode ser integrado a projetos interdisciplinares, fomentando a criatividade e a resolução de problemas, tornando-se um catalisador para o avanço Científico, Tecnológico e Cognitivo.

🧰 Componentes Utilizados

Quantidade Componente
1 Arduíno Uno R3
4 Chaves Momentâneas (Push Button)
4 Leds de Cores Diferentes
4 Resistores de 220 Ohms (ou valor adequado para o LED selecionado)
1 Buzzer
1 Protoboard
15 Jumpers (Macho/Macho)

🛠️ Tecnologias Utilizadas

YouTube WhatsApp Discord Notion Arduino Windows Markdown GitHub C++ Canva Tinkercad Google Acadêmico Repositórios Acadêmicos

📝 Como Fazer

🖥️ Explicação Circuito - Hardware


🎹 Circuito Virtual & 🎼 Circuito Prático

Breve Explicação sobre a Arquitetura do Circuito:

  1. Entradas Digitais - Arduíno:

    • Componentes de Entrada:

      • 4 Botões.
    • Componentes de Saída:

      • 4 Leds e 1 Buzzer.
  2. Portas Digitais Utilizadas - Arduíno:

    • 2, 3, 4 e 5;
      • Jumpers Vermelho, Amarelo, Branco e Verde -> Botões Dó, Ré, Mi e Fa.
    • 6, 7, 8 e 9;
      • Jumpers Vermelho, Amarelo, Branco e Verde -> Ânodo dos Leds VM, AM, BR e VD.
    • 10;
      • Jumper Marrom -> Positivo do Pino Buzzer.
    • GND;
      • Área de Alimentação da Protoboard (-).
  3. Protoboard:

    • Resistores - Conectados a área de alimentação da protoboard (-):
      • Resistores Conectados aos Cátodos dos Leds.
    • Buzzer:
      • Resistor no Positivo do Buzzer;
      • Jumper com negativo vindo da área de alimentação da protoboard.
    • Botões:
      • Todos os 4 botões recebem jumpers (com cores respectivas as notas) que saem da área de alimentação da protoboard (-).
    • A trilha superior de alimentação (-) passa um jumper (preto) para a trilha inferior de alimentação (-).

Inserimos os componentes na Protoboard como mostra a imagem com o circuito virtual. Sempre tendo atenção e cuidado com os cabos de ligação antes de iniciar o Arduíno e lembrando que ele tem que estar inteiramente desligado enquanto realizamos a montagem do nosso circuito!

- Ter atenção de que os Leds possuem polaridade; - Ter atenção de que o Buzzer possui polaridade.

👩‍💻 Explicação Código - Software

Aqui está um resumo explicativo do código.

  1. Definição de Pinos:

    • Começamos definindo valores constantes para as notas musicais dos sons e das melodias.
  2. Definição de Variáveis:

    • Variáveis são definidas para manipular:
      • As melodias;
      • Os pinos para o Buzzer, os Leds e os Botões;
      • O status dos Botões;
      • Temporizadores;
      • Indicador do Modo Demonstração;
      • O status do Jogo;
      • A sequência de cores que o jogador deve responder;
      • As etapas e fases do Jogo;
      • As respostas do Jogador (serve para guardar o valor);
      • Variável para guardar o Botão pressionado pelo jogador;
      • Indicador quando perder o jogo;
      • Tempo para resposta do jogador;
    • Constante são definidas para manipular:
      • O número máximo de combinações ou fases de jogo;
      • O tempo de cada cor (millisegundos).
  3. Função de Configuração (setup):

    • Inicializa a comunicação serial a 9600 bps;
    • Define os pinos dos 4 Leds e do Buzzer como saída;
    • Define os pinos dos Botões como entrada;
    • Registro de tempo e inicializa randomização;
    • Inicializando o random através de uma leitura da porta analógica.
  4. Função "loop":

    • Há dois laços de repetição (while).
      • O while do Modo Demonstração: chama as funções "modoDemo" e "leituraBotoes" quando a variável "statusJogo" é diferente de 1 e utiliza a função Serial.print para imprimir um "." na porta serial;
      • O while do Modo Jogo: chama a função "modoJogo" quando a variável "statusJogo" é igual a 1.
  5. Função "modoDemo":

    • Essa função consiste em um efeito dos Leds apenas e um pequeno atraso.
      • Utiliza-se uma condicional "if" e um "switch".
  6. Função "modoJogo":

    • É dividida em duas partes: Inicialização e Jogo propriamente dito.
      • Utiliza-se um "switch" e um pequeno atraso.
  7. Função "inicioJogo":

    • Função de efeitos de início do jogo e carregamento da memória.
      • É realizado um Serial.println para imprimir "Iniciando Jogo...", chamada a função "somInicio" e posteriormente feito um efeito com os Leds através de um laço de repetição "for";
      • Utiliza-se um for para fazer a sequência de notas(Dó, Ré, Mi, Fa), acendendo seus respectivos Leds e após isso é randomizado as notas e apagados os Leds para aumentar o grau de dificuldade do jogo;
      • Zera variáveis.
  8. Função "turnoArduino":

    • Acender os Leds conforme memória e fase atual.
      • Utiliza-se um Serial.print e um Serial.println para imprimir onde(fase) o jogador está, há um laço de repetição "for" contendo um "switch", ao final existe pequenos atrasos e a função "apagaLeds" é chamada.
  9. Função "turnoJogador":

    • Para cada fase alcançada, o jogador tem que repetir sequêcia do Arduíno.
    • Utiliza-se um Serial.print e um Serial.println para imprimir onde(fase) o jogador está, há a variável "terminoTurno", existe um laço de repetição "for" para checar se o botão pressionado está correto atráves de uma condicional "if" e "else", tem também um pequeno atraso, a incrementação de mais uma fase e mais uma condicional "if" para saber se o jogador chegou na fase que contém o mesmo valor limite do tamanho da mémoria, pois caso sejam iguais o jogador ganhou o jogo e ele é finalizado com a função "somGanhou".
  10. Função "leituraBotoes":

    • Ler botões no modo demonstação, com lógica para sair do modo se pressionou botão.
      • Possui condicionais "if", a função "digitalRead" e pequenos atrasos.
  11. Função "leituraBotoesJogo":

    • Leitura dos botões durante jogo, inclui debounce para evitar leituras espúrias.
      • Possui variáveis, um laço de repetição "while", condicionais "if", a função "digitalRead" e pequenos atrasos.
  12. Função "perdeJogo":

    • Efeitos de Perdeu o Jogo (som e efeitos com os Leds).
      • É chamada a função "somPerdeu" e iniciado um laço de repetição "for" que contém vários "digitalWrite" e pequenos atrasos.
  13. Função "ganhouJogo":

    • Efeitos de Ganhou o Jogo (som e efeitos com os Leds).
      • É chamada a função "somGanhou" e iniciado um laço de repetição "for" que contém vários "digitalWrite" e pequenos atrasos.
  14. Função "acendeLeds":

    • Acender os Leds, conforme status passado pelas variáveis.
      • Utiliza-se a condicional "if" e o "digitalWrite".
  15. Função "apagaLeds":

    • Serve para apagar todos os Leds.
    • Utiliza-se "digitalWrite".
  16. Funções de Sons - Notas Musicais:

    • Funções "somBR", "somAM", "somVD", "somVM" relacionadas as cores dos Leds (Branco, Amarelo etc) e as suas respectivas notas musicais(Dó, Ré, Mi etc).
      • Utiliza-se a função "tone" para cada tom musical.
  17. Funções de Sons - Melodias:

    • Músicas para tornar o jogo mais divertido.
      • Função "somInicio";
      • Função "somPerdeu";
      • Função "somGanhou".
    • Utiliza-se o laço de repetição "for", variáveis para manipular a duração, as funções "tone" e "noTone".

🎮 Como Jogar

🗂️ Documentação do Projeto

📰 Artigo:

Link do Artigo

📊 Slide para Apresentação:

Link do Slide - Canva

🧾 Referências

About

Jogo da Memória inspirado no Genius que tem como intuito treinar o Ouvido Absoluto de crianças.

License:MIT License


Languages

Language:C++ 100.0%