Adquira estes componentes na Loja do Lab de Garagem
Utilizamos o arduino para tocar o Hino dos principais times de futebol de são paulo e demonstraremos como vocês garagistas podem fazer isto utilizando a função tone.
Lista de materiais:
Todos os itens podem ser adquiridos na loja do Lab. de Garagem.
Funcionamento:
A Sintaxe da função tone é a seguinte:
tone (pino, frequência, duração);
Onde:
pino - Pino a frequência será gerada para o alto-falante.
frequência - A frequência em Hertz da nota.
duração - Duração em milissegundos da Nota(este é opcional).
Para geramos as notas musicais temos que entender um pouco sobre música.
Cada nota musical nada mais é do que uma frequência que esta dentro da faixa audível do ouvido da maioria de nós que é entre 20Hz a 20.000Hz. Estes valores variam de pessoa para pessoa e com o passar dos anos os tons mais agudos (Frequência próximas ao 20kHz) deixam de ser ouvidas.
A partir disto, temos por padrão que a nota de referência para afinarmos instrumentos musicais é o 1º Lá (ou ainda o Lá da 4ª oitava (ou "A4")), após o Dó central do piano (nota chamada de "C4"), e este tem sua frequência definida para 440Hz.
Na figura 1 abaixo vemos uma partitura com as Claves de Sol e com a Clave de Fá.
FIgura 1 - Duas Claves de Sol(acima) e de Fá(Abaixo). Nota C4 que é o Dó central do Piano (sua frequência é ≈ 261 Hz).
As demais notas variam de acordo com a tabela abaixo:
Fonte: Wikipedia
Baseados nesta tabela, arquivo pitches.h foi criado para o exemplo contido no Arduino chamado Melody, que nada mais é que os valores aproximados das frequências das notas convertido para um nome mais fácil de lembrar.
Por exemplo a frequência 440 é a nota NOTE_A4 é será assim que ela vai ser chamada na matriz melodia[].
A linha abaixo é definida no começo do sketch para ajudar a fazer as pausas durante as músicas.
#define NO_SOUND 0
Como vimos na Figura 1 o que identifica a nota é a altura em que ela se encontra na partitura, já a duração depende do símbolo com o qual a nota é desenhada assim como mostra a figura 2
Figura 2 - Duração das Notas (Pentagrama superior) e Duração das Pausas(Pentagrama inferior) e nome dos símbolos(Parte inferior).
A duração de tempo vai ser representada no programa pelos valores colocados dentro da matriz tempoNotas[].
Esta matriz deve receber valores conforme o símbolo contido na partitura conforme mostra a tabela abaixo.
Símbolo na partitura |
Valor de tempo de duração da Nota no Programa |
Semibreve |
1 |
Mínima |
2 |
Semínima |
4 |
Colcheia |
8 |
Semicolcheia |
16 |
Fusa |
32 |
Semifusa |
64 |
As duas matrizes trabalham em conjunto e devem receber a mesma quantidade de posição, pois para cada nota ou pausa deve haver seu respectivo tempo de duração e ambos devem ser colocados consecutivamente.
O potenciômetro serve para ajustar o volume e o capacitor servirá para fazer o acoplamento entre o arduino e o alto-falante.
Montagem:
Na figura 3 vocês podem ver a montagem proposta para funcionamento do circuito:
Figura 3 - Montagem proposta.
Os Sketchs
Você necessitará ter o arquivo pitches.h na mesma pasta do sketch que for utilizar.
A estrutura básica do sketch de todas as músicas será igual e ele está todo comentado para ajudar no entendimento.
No código de exemplo abaixo fizemos a tradução da partitura a cima (estando ela na Clave de Sol).
#include "pitches.h"
#define NO_SOUND 0
// Notas que devem ser tocadas ordenadamente;
int melodia[] ={
NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_B4
};
// Duração das Notas: Colcheia:8; Semínima: 4; Mínima:2; Semibreve:1
int tempoNotas[] ={
8,8,8,8,8,8,8
};
const int compasso = 1450; // Altera o compasso da música
void setup(){
for (int Nota = 0; Nota <7; Nota++){//o número 7 indica quantas notas tem a nossa matriz.
int tempo = compasso/tempoNotas[Nota]; //Tempo = compasso dividido pela indicação da matriz tempoNotas.
tone(8, melodia[Nota],tempo); //Toca a nota indicada pela matriz melodia durante o tempo.
// Para distinguir as notas adicionamos um tempo entre elas (tempo da nota + 20%).
delay(tempo*1.2);
}
}
void loop(){
//Não é necessária a repetição pois a mesma será feita pelo botão Reset.
}
//Fim de Programa
Agora o que todos esperavam!!! Os hinos dos times estão zipados e com o arquivo pitches.h na mesma pasta:
Então é isto garagistas esperamos que gostem e o resultado vocês podem ver no vídeo do inicio deste post. Você pode colocar outras músicas, mas fique atento para os tempos de duração mais complexos e efeitos que não podem ser reproduzidos pelo software. Para mais sobre como ler partituras acesse este site.
Referências
http://en.wikipedia.org/wiki/Pitch_(music)#Pitch_and_frequency
http://en.wikipedia.org/wiki/Scientific_pitch_notation
http://www.sotutorial.com/index.php/tutoriais-teorial-musical/
Comentar
Boa noite!!!
Aos PALMEIRENSES de plantão!
Segue link do Hino completo.
https://drive.google.com/file/d/0B_e5kXcXxmyZOXQ0UXVrdTBNN0U/view?u...
Poderia disponibilizar as tablaturas dos hinos
Muito bom o vídeo tutorial.
Com ele, consegui fazer uma música do Zelda: Ocarina of the Time
https://www.facebook.com/photo.php?v=10201061469155343&l=131378...
muito bom, conseguir fazer para meu projeto do curso ok !
Fiz sem o capacitor. Apenas liguei o buzzer diretamente e funcionou perfeitamente.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)