Tutorial: Como Fazer Hinos dos Times de Futebol de São Paulo com Arduino

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:

1 x Arduino Uno R3 original

1 x Protoboard

1 x Alto-Falante 8 Ω / 0,25 W

1 x Potenciômetro de 10 KΩ

1 x Capacitor de 100μF / 25 V

Alguns jumpers

 

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:

 

Hino do Corinthians

Hino do Palmeira

Hino do Santos

Hino do São Paulo 

 

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.cifraclub.com.br

http://www.sotutorial.com/index.php/tutoriais-teorial-musical/

http://pt.wikipedia.org/wiki/Som

Exibições: 26709

Comentar

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)

Comentário de Eduardo Czarnecki Scalisa em 27 junho 2015 às 19:12

Boa noite!!!

Aos PALMEIRENSES de plantão!

Segue link do Hino completo.

https://drive.google.com/file/d/0B_e5kXcXxmyZOXQ0UXVrdTBNN0U/view?u...

Comentário de Djalma Ferreira em 4 junho 2015 às 10:14

Poderia disponibilizar as tablaturas dos hinos

Comentário de Thiago Isac em 17 dezembro 2013 às 20:05

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...

Comentário de david da silva nascimento em 27 setembro 2013 às 18:22

muito bom, conseguir fazer para meu projeto do curso ok !

Comentário de Diego Balbine em 10 setembro 2013 às 16:53

Fiz sem o capacitor. Apenas liguei o buzzer diretamente e funcionou perfeitamente.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço