Criando Jogos com Arduino 2: Passo a Passo
4.Criando Jogos com Arduino
PIANO ELETRÔNICO
Como estão as suas habilidades musicais? Que tal testá-las em um
piano eletrônico construído com o Arduino?
Neste projeto aprenderemos como transformar seu Arduino em um
pequeno piano, capaz de tocar as 7 notas musicais: Dó, Ré, Mi, Fá, Sol, Lá
e Si.
Para este projeto você precisará de botões, resistores e de um buzzer
passivo, que é para melodias e reprodução de notas. Para tocar as notas
musicais usaremos a função tone ( ) .
MATERIAIS NECESSÁRIOS
1 x Placa UNO SMD compatível com Arduino UNO ;
1 x Cabo USB ;
1 x Protoboard ;
7 x Botões do tipo push button ;
7 x Resistores de 10 kΩ ;
1 x Buzzer passivo ;
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 2 .
Ao montar seu circuito na protoboard preste atenção nos seguintes
pontos:
Você pode utilizar fios de cores diferentes ou furos diferentes na
protoboard, mas deve assegurar que os componentes e fios estejam
conectados na mesma ordem da Figura 1 2 ;
O botão possui 4 terminais que são interligados aos pares. Quando
pressionado, os 4 terminais são conectados gerando continuidade no
circuito;
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 não
estiver pressionado o Arduino receberá nível lógico baixo;
Quando o botão estiver pressionado, a placa UNO receberá nível
lógico alto (HIGH).
O terminal positivo do buzzer deve ser conectado à porta digital 6
da placa UNO e o outro terminal deve ser ligado ao GND.
Figura 12 - Circuito para o Projeto Piano Eletrônico.
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 piano. 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.
//Define os pinos dos botões
#define botao1 7
#define botao2 8
#define botao3 9
#define botao4 10
#define botao5 11
#define botao6 12
#define botao7 13
#define buzzer 6 //Pino do Buzzer
//Cada nota e sua frequência
#define C 262 //Nota Dó
#define D 294 //Nota Ré
#define E 330 //Nota Mi
#define F 349 //Nota Fá
#define G 392 //Nota Sol
#define A 440 //Nota Lá
#define B 493 //Nota Si
void setup () {
//Configura os botões como entrada
pinMode (botao1, INPUT );
pinMode (botao2, INPUT );
pinMode (botao3, INPUT );
pinMode (botao4, INPUT );
pinMode (botao5, INPUT );
pinMode (botao6, INPUT );
pinMode (botao7, INPUT );
pinMode (buzzer, OUTPUT ); //Configura o buzzer como saída
}
void loop () {
//Faz as leituras do status de cada botão e guarda na variável correspondente
int status1 = digitalRead (botao1);
int status2 = digitalRead (botao2);
int status3 = digitalRead (botao3);
int status4 = digitalRead (botao4);
int status5 = digitalRead (botao5);
int status6 = digitalRead (botao6);
int status7 = digitalRead (botao7);
if (status1 == HIGH ) { //Se o botão 1 for pressionado
tone (buzzer, C); //Toca nota Dó
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status2 == HIGH ) { //Se o botão 2 for pressionado
tone (buzzer, D); //Toca nota Ré
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status3 == HIGH ) { //Se o botão 3 for pressionado
tone (buzzer, E); //Toca nota Mi
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status4 == HIGH ) { //Se o botão 4 for pressionado
tone (buzzer, F); //Toca nota Fá
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status5 == HIGH ) { //Se o botão 5 for pressionado
tone (buzzer, G); //Toca nota Sol
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status6 == HIGH ) { //Se o botão 6 for pressionado
tone (buzzer, A); //Toca nota Lá
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
if (status7 == HIGH ) { //Se o botão 7 for pressionado
tone (buzzer, B); //Toca nota Si
delay (200); //por 200 milissegundos
noTone (buzzer); //Interrompe o som
}
}
Para melhor compreensão do código acompanhe os seguintes passos:
1. Declarar as variáveis
Neste código declaramos 7 variáveis para os botões ( botao1,
botao2, botao3, botao4, botao5, botao6, botao 7 ), e uma variável para o
buzzer ( buzze r ).
Em seguida, definimos as variáveis para armazenar a frequência das
7 notas musicais, conforme a Tabela a seguir.
Variável Nota Musical Frequência
C Dó 262 D Ré 294 E Mi 330 F Fá 349 G Sol 392 A Lá 440 B Si 493
2. Configuração dos pinos de entrada e saída
Os pinos digitais em que os botões estão conectados foram
configurados como entrada ( INPU T ) e o pino digital 6, conectado ao
buzzer, foi configurado como saída ( OUTPU T ).
3. Leitura dos botões
Iniciamos a função loop () realizando a leitura dos botões. Os
estados dos botões botao 1 , botao 2 , botao 3 , botao 4 , botao 5 , botao 6 e botao 7 são armazenados nas variáveis status 1 , status 2 , status 3 ,
status 4 , status 5 , statu s 6 e status 7 , respectivamente.
4. Verificação se o botão foi pressionado
Após a leitura, criamos uma série de estruturas de seleção usando o
condicional i f . Nelas, verificamos se os botões foram pressionados (
statusX == HIGH ) .
5. Tocar a nota correspondente
Sendo a condição verdadeira (botão pressionado), tocamos a nota
correspondente a ele. Por exemplo, quando o botão 1 ( botao 1 ) for
pressionado, a nota Dó deverá ser tocada.
Para tocar a nota, usamos a função tone ( ) passando como
parâmetros a variável buzzer e a nota correspondente ao botão pressionado.
Sintaxe da função tone ( ) : tone (pino, frequência);
Em seguida, inserimos um intervalo de 200 milissegundos.
Para interromper o toque da nota pelo buzzer, usamos a função
noTone ( ) e passamos como parâmetro a variável buzzer.
Sintaxe da função noTone ( ) : noTone (pino);
TINKERCAD
Para melhor visualizar e/ou simular o circuito e a programação
deste projeto, basta acessar o seguinte link:
www.blogdarobotica.com/tinkercad-piano .
OceanofPDF.com