Inteligente, ágil e feito para desafiar sua memória.

Ferramentas utilizadas

Sobre nós

Somos estudantes da CESAR School, apaixonados por tecnologia, inovação e desafios que unem lógica e criatividade. Nosso projeto Genius em Arduino foi desenvolvido como parte das atividades da disciplina de Sistemas Digitais, com o objetivo de aplicar na prática os conceitos de eletrônica, programação e design de interação.

Motivação

A motivação para o desenvolvimento deste projeto surgiu do desejo de unir o aprendizado prático de eletrônica e programação com uma aplicação lúdica e interativa. O jogo Genius é um clássico que estimula a memória e o raciocínio lógico, e sua recriação em Arduino representa uma oportunidade de consolidar conhecimentos sobre componentes eletrônicos, controle de fluxo, lógica de programação e interação homem-máquina.

Objetivo

O principal objetivo deste projeto é desenvolver uma versão funcional do jogo Genius utilizando a plataforma Arduino, integrando LEDs, botões e buzzer para reproduzir a dinâmica original do jogo, onde o jogador deve repetir corretamente a sequência de luzes e sons apresentada pelo sistema.

Contextualização

O projeto foi desenvolvido no contexto da CESAR School, instituição reconhecida por sua metodologia voltada à aprendizagem prática e à inovação tecnológica. A criação do jogo Genius em Arduino insere-se nesse ambiente, em que os alunos são incentivados a experimentar, criar e solucionar problemas reais por meio da tecnologia.

Esquema Conceitual

Descubra o nosso processo de desenvolvimento de conceitos

Processo de trabalho

Conheça as etapas seguidas no desenvolvimento do projeto Genius em Arduino, desde a concepção até a montagem e os testes finais.

1. Ideação e Briefing

Definimos o objetivo principal: recriar o jogo Genius utilizando a plataforma Arduino, promovendo o aprendizado prático de lógica, eletrônica e programação. Essa etapa envolveu alinhar as metas acadêmicas da CESAR School com os objetivos do projeto.

2. Pesquisa e Documentação

Pesquisamos o funcionamento original do jogo Genius e analisamos componentes acessíveis, como LEDs, botões, resistores e buzzers. Consultamos documentações e exemplos de projetos similares para entender as melhores práticas de montagem e codificação.

3. Planejamento e Prototipagem

Desenhamos o circuito e organizamos os componentes na protoboard para validar a estrutura do sistema. Nessa fase, testamos combinações de cores e tempos de resposta dos LEDs e botões, garantindo o funcionamento antes da integração do código.

4. Montagem do Circuito

Com os componentes definidos, montamos o circuito completo na protoboard, conectando os LEDs de quatro cores, botões e buzzers ao Arduino Uno. Essa etapa garantiu a integração física entre o hardware e a lógica do jogo.

5. Programação e Testes

Desenvolvemos o código no Arduino IDE, implementando funções como geração de sequência aleatória, controle de LEDs e verificação das respostas do jogador. Realizamos diversos testes para ajustar tempos e sons, garantindo precisão e interatividade.

6. Ajustes e Finalização

Refinamos o sistema corrigindo falhas de sincronização e otimizando a experiência do jogador. Ajustamos a intensidade dos LEDs e o tempo de resposta dos botões, resultando em um jogo funcional, educativo e com excelente desempenho prático.

Baixe nosso projeto agora!

Quer transformar suas ideias em realidade? Baixe este projeto completo e tenha em mãos todos os códigos, esquemas e instruções necessários para dar o próximo passo.

Vídeo demonstrativo

Lista dos Componentes

Produto Função Quantidade Valor
Arduino Uno Placa microcontroladora usada para controlar LEDs, botões e buzzer do jogo Genius 1x R$50,00
Protoboard Placa usada para montar e testar circuitos eletrônicos sem solda 1x R$13,90
Resistores 220Ω Limitam a corrente elétrica dos LEDs, evitando danos aos componentes 4x R$1,00
Buzzer Emite sons que indicam acertos e erros durante o jogo 1x R$7,00
Botões Permitem a interação do jogador com o jogo, pressionando as sequências corretas 4x R$6,00
LEDs (vermelho, verde, azul e amarelo) Indicadores visuais que representam as cores e sequências do jogo 4x R$4,00
Jumpers macho/macho Fios de conexão usados para interligar os componentes na protoboard 1 conjunto R$10,00

Códigos mais importantes

1. Definições de Hardware

As definições abaixo mapeiam os pinos do Arduino para os LEDs, botões e buzzers usados no jogo Genius:


#define LED_RED     10
#define LED_GREEN   5
#define LED_BLUE    3
#define LED_YELLOW  13

#define BUTTON_RED    9
#define BUTTON_GREEN  11
#define BUTTON_BLUE   2
#define BUTTON_YELLOW 12

#define BUZZER1  4
#define BUZZER2  7
        

Essas configurações garantem que cada componente físico esteja corretamente conectado ao microcontrolador.

2. Variáveis Globais

Essas variáveis armazenam o estado atual do jogo e o progresso das rodadas:


byte gameBoard[32];
byte gameRound = 0;
unsigned long lastActionTime = 0;
boolean gameActive = false;
        

Elas controlam se o jogo está ativo, qual rodada o jogador está e quais cores compõem a sequência atual.

3. Função de Inicialização (setup)

Responsável por configurar os pinos de entrada e saída e preparar o sistema para começar o jogo:


void setup() {
  pinMode(BUTTON_RED, INPUT_PULLUP);
  pinMode(BUTTON_GREEN, INPUT_PULLUP);
  pinMode(BUTTON_BLUE, INPUT_PULLUP);
  pinMode(BUTTON_YELLOW, INPUT_PULLUP);

  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
  pinMode(LED_YELLOW, OUTPUT);

  pinMode(BUZZER1, OUTPUT);
  pinMode(BUZZER2, OUTPUT);

  gameActive = false;
}
        

Esta etapa garante que todos os componentes estejam prontos antes do início do jogo.

4. Lógica Principal (loop)

O loop principal executa continuamente a lógica do jogo: inicia, toca a sequência e verifica acertos ou erros.


void loop() {
  if (!gameActive) {
    attractMode(); // modo de espera
    gameActive = true;
  }

  if (play_memory()) {
    play_winner();
  } else {
    play_loser();
  }

  gameActive = false;
}
        

Essa estrutura é o coração do jogo, responsável por iniciar e reiniciar as partidas automaticamente.

5. Função play_memory()

A função central do jogo, responsável por gerar a sequência aleatória e verificar se o jogador acerta:


boolean play_memory(void) {
  randomSeed(millis());
  gameRound = 0;

  while (gameRound < ROUNDS_TO_WIN) {
    add_to_moves();
    playMoves();

    for (byte currentMove = 0; currentMove < gameRound; currentMove++) {
      byte choice = wait_for_button();
      if (choice != gameBoard[currentMove]) return false;
    }
    delay(1000);
  }
  return true;
}
        

Essa função define a mecânica do jogo Genius — o jogador deve repetir a sequência de luzes e sons corretamente.

6. Controle de LEDs e Sons

As funções abaixo acendem os LEDs e produzem os sons correspondentes a cada cor pressionada:


void setLEDs(byte leds) {
  digitalWrite(LED_RED, (leds & CHOICE_RED) != 0);
  digitalWrite(LED_GREEN, (leds & CHOICE_GREEN) != 0);
  digitalWrite(LED_BLUE, (leds & CHOICE_BLUE) != 0);
  digitalWrite(LED_YELLOW, (leds & CHOICE_YELLOW) != 0);
}

void toner(byte which, int buzz_length_ms) {
  setLEDs(which);
  switch (which) {
    case CHOICE_RED: buzz_sound(buzz_length_ms, 1136); break;
    case CHOICE_GREEN: buzz_sound(buzz_length_ms, 568); break;
    case CHOICE_BLUE: buzz_sound(buzz_length_ms, 851); break;
    case CHOICE_YELLOW: buzz_sound(buzz_length_ms, 638); break;
  }
  setLEDs(CHOICE_OFF);
}
        

Essas funções coordenam o som e a luz para cada botão, criando o efeito visual e auditivo característico do Genius.

Passo a passo do projeto

Principais etapas realizadas para desenvolver e implementar o jogo Genius:

Arduino Uno
Protoboard
LEDs
1º passo

Conecte os quatro LEDs coloridos (vermelho, verde, azul e amarelo) na protoboard. Ligue cada LED ao Arduino com um resistor apropriado. Objetivo: Criar as luzes que o jogo usará para mostrar a sequência.

Botões
Entrada do jogador
Protoboard
2º passo

Instale quatro botões, cada um correspondente a um LED. Conecte os botões ao Arduino usando resistores pull-down ou pull-up. Objetivo: Permitir que o jogador digite a sequência exibida pelo jogo.

Buzzer
Som
Feedback
3º passo

Conecte um buzzer ao Arduino para emitir sons associados a cada cor. Programe tons diferentes para cada LED. Objetivo: Criar feedback sonoro para deixar o jogo mais intuitivo.

Lógica do jogo
Sequência
Arduino
4º passo

Programe o Arduino para gerar uma sequência aleatória de LEDs e sons. Crie funções para exibir a sequência e captar a resposta do jogador. Objetivo: Desenvolver a mecânica principal do jogo.

Comparação
Validação
5º passo

Programe o Arduino para comparar a entrada do jogador com a sequência gerada. Trate casos de acerto, erro e avanço de nível. Objetivo: Garantir que o jogo responda corretamente às ações do jogador.

Montagem final
Organização
Demonstração
6º passo

Organize LEDs, botões e buzzer de forma compacta e visualmente clara. Verifique se todos os cabos e conexões estão firmes. Objetivo: Finalizar o protótipo pronto para testes e apresentação.

Maiores dificuldades

Principais desafios enfrentados durante o desenvolvimento do projeto Genius em Arduino

Sincronização entre LEDs e Sons

Um dos principais desafios foi sincronizar as luzes dos LEDs com os sons emitidos pelos buzzers. Diferenças no tempo de execução causavam atrasos perceptíveis entre os estímulos visuais e sonoros. A solução envolveu ajustar os delays e otimizar a temporização das funções, garantindo uma resposta precisa e fluida durante o jogo.

Leitura dos Botões

Durante os testes, alguns botões apresentavam leituras instáveis ou repetidas devido a ruídos elétricos. Implementamos a técnica de debounce no código e revisamos as conexões físicas na protoboard, o que estabilizou as leituras e assegurou que cada toque fosse registrado corretamente.

Limitação de Pinos do Arduino

Com múltiplos LEDs, botões e buzzers conectados, o número de pinos disponíveis no Arduino Uno tornou-se limitado. Para contornar essa limitação, otimizamos o uso das portas digitais e revisamos o mapeamento de pinos, evitando conflitos e garantindo que todos os componentes funcionassem de forma estável e integrada.

Autores do Projeto

"Desenvolver o jogo Genius em Arduino foi uma experiência incrível! Pude compreender melhor como a lógica, os componentes eletrônicos e o código se conectam para criar um sistema interativo e funcional. Foi muito satisfatório ver o projeto tomando forma a cada teste."

João Lucas

Programador e Lógica do Sistema

"Trabalhar no projeto Genius me ajudou a aprimorar habilidades de montagem e organização de circuitos. Aprendi a importância de testar cada conexão e garantir que todos os componentes funcionassem em harmonia com o Arduino."

Raysa Queiroz

Montagem e Organização de Circuitos

"Participar do desenvolvimento do Genius foi uma grande oportunidade de aprendizado. Fiquei responsável pelos testes e otimização do sistema, garantindo que o código e o circuito funcionassem de forma sincronizada e estável."

Fernando Araújo

Testes e Ajustes Técnicos

"O projeto foi um grande desafio e, ao mesmo tempo, uma experiência divertida. Contribuí na parte de programação e na lógica de funcionamento do jogo, aprendendo muito sobre controle de tempo, respostas dos botões e integração de hardware."

Mateus Henrique

Programação e Integração de Componentes

"Participar do projeto Genius foi muito gratificante. Trabalhei na documentação e no acompanhamento final dos testes, garantindo clareza e organização no processo. Foi incrível ver o resultado de um trabalho feito em equipe."

Daniel

Documentação e Validação Final

"Contribuir com o projeto Genius foi uma experiência muito positiva. Trabalhar com a construção do arduíno exigiu muita paciência, foco e perseverança. Ver o trabalho em equipe gerar excelentes resultados foi fantástico."

Augusto

Organização e Controle do Projeto