Jogo da Forca - arduino jogo #01

Jogo 1 : Jogo da Forca

Objetivo

Neste projeto vamos criar o jogo clássico "Jogo da Forca" com leds e um buzzer que toca uma música caso você perca o jogo. Também é possível alterar a palavra oculta e a dicas para ser dada aos jogadores. O jogo é todo apresentado no Monitor Serial do IDE do Arduino.

Obs.: No nosso exemplo utilizamos uma barra gráfica e um led vermelho. Entretanto, você poderá substituir a barra gráfica leds de qualquer cor.

Aplicação

Para fins didáticos.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 415 pontos

Jumpers Kit cabos ligação macho / macho 1  
Buzzer Buzzer ativo 5V 12mm 1 Utilize um buzzer ou um disco piezoelétrico
Barra Gráfica (bargraph) Barra Gráfica de 10 segmentos 1

Utilize barra gráfica de qualquer cor.

Obs.: Você poderá substituir a barra gráfica por 5 leds de qualquer cor.

 

Led 5mm Led 5mm 1

Obs.: Se substituir a barra gráfica por leds, você precisará de 6 leds de qualquer cor.

Resistor Resistor 2

2 Resistores  150 Ω (1 para o LED vermelho e 1 para a barra gráfica vermelha)

Obs.: Se substituir a barra gráfica por leds, você precisará de 6 resistores de 150 Ω (para leds vermelhos)

Se precisar usar outros valores, calcule o resistor apropriado para o led ou barra grafica utilizada.

Arduino UNO

Arduino UNO R3

1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.


Atenção

1) Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

2) Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia Leds ligados em série e em paralelo.

2.1. Valores mínimos utilizados para nossos projetos: LEDs difusos ou de alto brilho: Vermelho, Laranja e Amarelo: 150 Ω | Led Verde e Azul: 100 Ω

3) A barra gráfica (bargraph) possui polaridade. O lado com chanfro recebe ligação positiva ou negativa dependendo do fabricante. Caso o projeto não funcione, inverta a posição da barra gráfica.

4) Em função do "datasheet" da barra gráfica, calculamos o valor do resistor em 150 ohms (barra gráfica vermelha). Entretanto, por segurança, pode-se utilizar um resistor de 300 ohms para barra gráfica de qualquer cor para que o projeto funcione normalmente sem que o componente seja danificado. Obs.: Geralmente as características de cada segmento de uma barra gráfica é similar as de um led comum.

5) O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao Arduino (neste projeto) ou a uma porta digital do Arduino e o polo negativo ao GND.

4) Veja abaixo como ficou a montagem do nosso projeto:

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo jogo1.ino no IDE do Arduino: DOWNLOAD - jogo1.ino

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*  Jogo 1 - Jogo da Fora
*  Créditos: Laboratório de Garagem
*  Adaptções: Squids Arduino 
*
*                   http://squids.com.br/arduino
*
*******************************************************************************/
#include "notas.h" // Baixe e instale o header notas.h
const byte buzzer = 12; // Define o pino onde o buzzer será conectado
const int compasso = 1500; //Define o compasso da música
byte ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13}; // cria um array para os pinos digitais dos LEDs (10 da barra + 1 led)
byte nleds = 11; // números de leds (barra + led) // se você utilizar somente leds, mude para 6

int erros=0, acertos, i, j;
String segredo= "SQUIDS ARDUINO"; //<-Altere nesta String a palavra secreta
const String dica= "Onde voce encontra os melhores PROJETOS sobre Arduino"; //<-Altere nesta linha a dica sobre a palavra utilizada
String tentativas = " -", test;
char inChar;

const int gameover[] = {   
NOTE_C5,NOTE_G4,NOTE_E4,NOTE_A4,NOTE_B4,NOTE_A4,NOTE_GS4,NOTE_AS4, NOTE_GS4, NOTE_E4,NOTE_D4,NOTE_E4
};

const int tempo_gameover[] = {   
4,4,4,8,8,8,8,8,8,   
12,12,4
};

boolean temletra=0;

void setup() {   

Serial.begin(9600);   

for (int x=0; x 0) {     
char caracter = Serial.read();     

if(isAlphaNumeric(caracter) || isDigit(caracter)) {       
caracter = toupper(caracter);       
for (j = 0; j < tentativas.length(); j++){         
if( tentativas[j] == (caracter) ){           
temletra = 1;         
}       
}       

if (temletra == 1)       
{         
Serial.println("Letra ja digitada");         
temletra = 0;       
}       

else       
{         
tentativas += caracter;                  

if(segredo.indexOf(caracter) <0 ){           
erros++;         
}         

acertos = 0;         

for (j = 0; j < tentativas.length(); j++){           
for (i = 0; i < segredo.length(); i++){             
if( segredo[i]== tentativas[j]){               
test[i*2]=  segredo[i];               
acertos++;             
}           
}         
}          

Serial.print("ERROS: ");         
Serial.println(erros);         
Serial.println();         

//###########################################################
        
// imprime letras na tela         
for ( i = 0; i < (segredo.length()*2); i++){           
Serial.print(test[i]);         
}         
Serial.println();         
Serial.println();       
}      
}     

else {       
Serial.println("Digite um caracter valido");       
Serial.println();     
}     

//Atualiza LEDs que indicam os erros
byte led_ind = erros;
byte leda = ((2 * led_ind)-1)-1;
byte ldeb = leda+1;
digitalWrite(1, LOW); 
digitalWrite(ledPin[leda], LOW);
digitalWrite(ledPin[ldeb], LOW); // elimine essa linha se estiver usando 6 leds

if (acertos == segredo.length()){       
Serial.println("Voce venceu!!!");       
while(1){       
}     
}     

if (erros >=6){       
Serial.println("GAME OVER");       //Toca musica de GAME OVER       
for (int Nota = 0; Nota < 12; Nota++) {         
int tempo = compasso/tempo_gameover[Nota];         
tone(buzzer, gameover[Nota],tempo);         
delay(tempo*1.2);       
}       
while(1){       
}     
}   
}
}

Baixar e instalar o "header file" notas.h

Para que a música no final do jogo possa ser produzida é necessário baixar o arquivo notas.h seguindo as instruções abaixo:

1) Obtenha o header file notas.h e coloque na mesma pasta do sketch no IDE do Arduino:  DOWNLOAD - notas.h

Atenção: o arquivo notas.h deverá estar na mesma pasta onde está o sketch principal:

2) No IDE do Arduino, faça a verificação e o upload para o microcontrolador.

Atenção: Observe que deverá aparecer uma aba com o header file notas.h, como mostra a figura acima. Para visualizar ou alterar o código no IDE basta clicar sobre a aba notas.h.

 

Vídeo

Como o projeto deve funcionar

1. Ao executar o programa, abra o monitor serial do IDE do Arduino. Aguarde o monitor estar pronto para você iniciar o jogo:

a) Observe que irá aparecer inicialmente a dica da palavra e os "traços" com o número de letras da palavra oculta.

2. Digite uma letra e tecle [Enter].

a) Se a letra digitada estiver correta, ele mostrará as posições das letras na palavra oculta. Mostrará também o número de erros.

b) Se você digitar uma letra que não faz parte da palavra oculta, o programa irá mostrar que você errou, contando o número de ERROS.

c) No circuito eletrônico as luzes da barra gráfica irão se apagando também a cada erro. A luz do led será a sua última chance.

ATENÇÃO: É permitido apenas 6 erros. Errando mais de 6 vezes você perderá o jogo.

3. Caso você perca o jogo, ou seja, tiver mais de 6 erros, o programa irá avisar com "OVER GAME" e uma música no final será produzida pelo buzzer.

4) Se você acertar todas as letras, aparecerá no final a frase "Você Venceu!!!".

 5. Para reiniciar o jogo basta fechar o Monitor Serial e abrí-lo novamente.

6. Para alterar a palavra oculta, acesse o sketch do projeto e altere as strings segredo e dica. Faça o upload novamente para o controlador.

Créditos

Este projeto foi uma adaptação do projeto original: http://arduino.labdegaragem.com/Guia_preview/SMK_15_forca.html.

Desafios

Com base neste projeto, resolva os seguintes desafios:  Desafio 32

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores