Criando Jogos com Arduino 2: Passo a Passo

Carol Correia Viana · Capítulo 14 de 21

Páginas do PDF

Criando Jogos com Arduino 2: Passo a Passo

Torta na Cara – Passa ou Repassa

 

O Passa ou Repassa é um game show de perguntas e respostas. No

programa, duas equipes devem cumprir diversas gincanas, como o Torta na

Cara, para acumular pontos no placar geral.

No Torta na Cara, um competidor de cada equipe deve se posicionar

um de frente para o outro, em meio a uma bancada equipada com dois

botões e dois sinalizadores.

O apresentador faz a pergunta e o competidor deve apertar o botão

assim que souber a resposta. O sinalizador do competidor que primeiro

apertar o botão será ligado e ele deve responder à pergunta corretamente. Se

a resposta estiver correta, o competidor somará pontos para a sua equipe e

poderá acertar uma torta na cara do competidor adversário. Mas se estiver

errada, ele que receberá uma torta na cara.

 

Neste projeto, simularemos a bancada do jogo Torta na Cara usando

Arduino, LEDs, botões e um buzzer.

Escolha as perguntas, chame os amigos e divirta-se!

MATERIAIS NECESSÁRIOS

 

 

1 x Placa UNO SMD compatível com Arduino UNO ;

1 x Cabo USB ;

1 x Protoboard ;

2 x Botões do tipo push button ;

2 x Resistores de 10 kΩ ;

2 x Resistores de 220 Ω ;

2 x LEDs difusos de 5 mm ;

1 x Buzzer ativo ;

Jumpers macho-macho .

 

ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

 

Certifique-se que sua placa UNO esteja desligada e monte

atentamente o circuito conforme a Figura 1 4 .

Ao montar seu circuito na protoboard, preste atenção nos seguintes

pontos:

O terminal mais longo de cada LED deve ser conectado ao pino

digital correspondente. O terminal mais curto é o cátodo (negativo)

e deve ser conectado ao terra (GND);

Em nosso projeto, utilizaremos resistores de 220 Ω para reduzir a

tensão e a corrente de alimentação dos LEDs;

O botão deve ser montado com dois terminais abaixo da cavidade

central da protoboard e os outros dois acima;

Conecte o push button com um resistor de 10 k Ω pull-down

(resistor conectado no GND). Desta forma, quando o botão estiver

pressionado, a placa UNO retornará nível lógico alto (HIGH).

O terminal positivo do buzzer deve ser conectado à porta digital 11

da placa UNO e o outro terminal deve ser ligado ao GND.

 

Figura 14 - Circuito para o Projeto Torta na Cara - Passa ou Repassa.

 

Assim que você tiver certeza de que tudo foi conectado

corretamente, conecte a placa UNO ao seu computador.

 

ELABORANDO O CÓDIGO

 

Com o circuito montado vamos a programação do jogo. Para melhor

compreensão, o código será explicado passo a passo a seguir. Neste

momento, observe o código abaixo e aproveite para analisar sua estrutura.

 

//Pino para os botões

#define botaoEsquerdo 13

#define botaoDireito 9

//Pinos para os LEDs (Azul e Vermelho)

#define ledEsquerdo 12

#define ledDireito 10

 

#define buzzerAtivo 11 //Pino em que o buzzer está ligado

 

void setup () {

//Configura os pinos em que o buzzer e os LEDs estão conectados como saída

pinMode (buzzerAtivo, OUTPUT );

pinMode (ledEsquerdo, OUTPUT );

pinMode (ledDireito, OUTPUT );

 

//Configura os pinos em que os botões estão conectados como entrada

pinMode (botaoEsquerdo, INPUT );

pinMode (botaoDireito, INPUT );

}

 

void loop () {

if ( digitalRead (botaoEsquerdo) == HIGH ) { //Se o botão esquerdo for pressionado, então:

digitalWrite (ledEsquerdo, HIGH ); //Acende o led esquerdo efeitoSonoro(); //Chama a função responsável pelo efeito sonoro delay (5000); //Aguarda 5000 milissegundos (5 segundos) digitalWrite (ledEsquerdo, LOW ); //Apaga o led esquerdo

 

} else if ( digitalRead (botaoDireito) == HIGH ) { //Se o botão direito for pressionado, então:

digitalWrite (ledDireito, HIGH ); //Acende o led direito efeitoSonoro(); //Chama a função responsável pelo efeito sonoro delay (5000); //Aguarda 5000 milissegundos (5 segundos) digitalWrite (ledDireito, LOW ); //Apaga o led direito

}

}

 

//Função responsável por fazer o efeito de 3 beeps quando um dos botões é acionado

void efeitoSonoro() {

for ( int i = 0; i<3; i++){ //Para i = 0, enquanto i for menor que 3, realize o código e incremente

1 em i

digitalWrite (buzzerAtivo, HIGH ); //Ativa o buzzer delay (100); //Aguarda 100 milissegundos digitalWrite (buzzerAtivo, LOW ); //Desliga o buzzer delay (100); //Aguarda 100 milissegundos

}

}

 

Para melhor compreensão do código acompanhe os seguintes passos:

1. Declarar as variáveis

Neste código, declaramos 2 variáveis para leitura dos botões (

botaoEsquerd o e botaoDireit o ), duas variáveis para os LEDs (

ledEsquerd o e ledDireit o ) e uma variável para o buzzer ( buzzerAtiv o

).

 

2. Configuração das portas de entrada e saída

Os pinos digitais 10, 11 e 12, em que os LEDs e o buzzer estão

conectados, foram configurados como saída ( OUTPU T ).

Os pinos digitais 13 e 9, em que os botões estão conectados, foram

configurados como entrada ( INPU T ).

 

3. Verificação do botão pressionado

Iniciamos a função loop ( ) , verificando qual botão foi pressionado.

Para isso, usamos a estrutura de seleção condicional i f .

Primeiramente, verificamos se o botão esquerdo foi pressionado ( if

( digitalRead (botaoEsquerdo) == HIGH ) ). Sendo a condição satisfeita, o

LED esquerdo (azul) será ligado e a função efeitoSonoro( ) será executada.

Após 5 segundos, o LED esquerdo será desligado.

Se o botão esquerdo não tiver sido pressionado ( botaoEsquerdo ==

LO W ), verificamos se o botão direito foi pressionado ( if ( digitalRead

(botaoDireito) == HIGH ) ). Uma vez satisfeita a condição, o LED direito (vermelho) será ligado e a função efeitoSonoro( ) será executada. Após 5

segundos, o LED direito será desligado.

 

4. Criar função efeitoSonoro()

Abaixo da função loop ( ) , criamos a função efeitoSonoro( ) ,

responsável por fazer o efeito de 3 beeps no buzzer quando um dos botões

for pressionado.

Para realizar a repetição dos beeps tocados pelo buzzer, usamos a

estrutura de repetição fo r através da instrução: for ( int i = 0; i<3; i++) ; .

 

Sintaxe: for ( inicialização; condição; incremento);

 

Assim, o primeiro parâmetro incluso foi a variável i , usada como

contador. O segundo parâmetro foi a condição a ser satisfeita para que as

instruções do laço de repetição fossem executadas. Neste projeto, as

instruções do fo r são realizadas enquanto i for menor que 3. O terceiro

parâmetro foi o incremento ( i+ + ).

Para que o buzzer ativo toque o beep, usamos a instrução

digitalWrite (buzzerAtivo, HIGH ) ; . Ao contrário do buzzer passivo, cuja

operação depende da frequência de onda enviada pelo microcontrolador, o

buzzer ativo necessita apenas da alimentação para funcionar.

O buzzer ativo toca o beep por 100 milissegundos. Para parar o

toque usamos a instrução digitalWrite (buzzerAtivo, LOW ) ; .Então, o

buzzer para por 100 milissegundos.

 

TINKERCAD

 

Para melhor visualizar e/ou simular o circuito e a programação

deste projeto, basta acessar o seguinte link:

www.blogdarobotica.com/tinkercad-tortanacara .

 

OceanofPDF.com