PIC: Hino de Clubes
Utilizando a biblioteca Sound do MikroC, podemos gerar frequências na saída de um pino.
Nota: A frequência máxima é
Nota: A frequência máxima é
freq_max = Fosc/(80*3)
. E a frequência mínima é Freq_min =
Fosc/(80*255)
.
Foi criado uma matriz com as notas e tempos de cada hino. Está disponíveis os hinos do Corinthians, São Paulo, Palmeiras e Santos.
A repetição será feita através do botão RESET.
Foi utilizado PIC16F628A, configurado para utilizar o clock interno de 4Mhz.
DOWNLOAD:Foi utilizado PIC16F628A, configurado para utilizar o clock interno de 4Mhz.
Firmware: Hino.hex;
Simulação: Hino.DSN;
Frequência das Notas: Pitches.c; (incluir esse arquivo no projeto)
Outras Melodias
EXEMPLO: Hino do Corinthians
#include "Pitches.c" /* *Projeto: Hino de Clubes *MCU: PIC16F628A *Clock: INTOSC 4MHz *Descrição: Toca o hino do seu time de coração com um PIC *Compilador: MikroC PRO PIC *Autor: Tiago H. Melo */ const code int melodiaTimao[] = { NO_SOUND, NOTE_C5,NOTE_B4,NOTE_G4,NOTE_E4,NOTE_E4, NO_SOUND,NOTE_B3,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_F4,NOTE_F4, NO_SOUND,NOTE_A4,NOTE_F4,NOTE_E4,NOTE_DS4,NOTE_DS4, NO_SOUND,NOTE_DS4,NOTE_DS4,NOTE_E4,NOTE_F4,NOTE_A4,NOTE_G4,NOTE_F4,NOTE_B4, NO_SOUND,NOTE_B4,NOTE_A4,NOTE_GS4,NOTE_A4,NOTE_A4, NO_SOUND,NOTE_A4,NOTE_A4,NOTE_B4,NOTE_C5,NOTE_E5,NOTE_C5,NOTE_A4,NOTE_G4, NO_SOUND,NOTE_E5,NOTE_B4,NOTE_G4,NOTE_F4,NOTE_F4, NO_SOUND,NOTE_A4,NOTE_B4,NOTE_C5,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_F4,NOTE_E4, NO_SOUND,NOTE_B3,NOTE_CS4, NOTE_DS4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_F4,NOTE_C5,NOTE_C5,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4, NOTE_B4,NOTE_B3,NOTE_CS4, NOTE_DS4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_F4,NOTE_C5,NOTE_C5,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_A4, NOTE_B4,NOTE_B4, NO_SOUND,NOTE_B4,NOTE_A4,NOTE_GS4,NOTE_A4,NOTE_A4, NO_SOUND,NOTE_A4,NOTE_G4,NOTE_F4,NOTE_G4,NOTE_G4, NO_SOUND,NOTE_E5,NOTE_B4,NOTE_G4,NOTE_F4, NO_SOUND,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_B4,NOTE_A4,NOTE_G4,NOTE_F4,NOTE_E4 }; const code char tempoNotasTimao[] = { 4,4,4,4,2,2, 8,8,8,8,8,8,8,8,2,2, 4,4,4,4,2,2, 8,8,8,8,8,8,8,8,1, 4,4,4,4,2,2, 8,8,8,8,8,8,8,8,1, 4,4,4,4,2,2, 8,8,8,8,8,8,8,8,1, 4,8,8, 8,8,8,8,8,8,8,8,8,8,8,8, 4,8,8, 8,8,8,8,8,8,8,8,8,8,8,8, 2,2, 4,4,4,4,2,2, 4,4,4,4,2,2, 4,4,4,4,1, 8,8,8,8,4,8,8,2,2 }; const int compasso = 1000; // Altera o compasso da musica void main() { char nota; unsigned tempo; Sound_Init(&PORTB, 1);//Define pino RB1 como saída do sinal for(Nota = 0; Nota < sizeof(melodiaTimao); Nota++) //sizeof() recupera o tamanho da matriz { tempo = compasso / tempoNotasTimao[Nota]; Sound_Play(melodiaTimao[Nota], tempo);//toca a nota durante um tempo VDelay_ms((tempo*12)/10);// Para distinguir as notas adicionamos um tempo entre elas(tempo + 20%) } }
Referência: LabdeGaragem
eu testei no proteus e não funcionou, vc tem o teste ai no proteus?
ResponderExcluirShowwwwwwwwww
ResponderExcluirvoce tem outras ? Muito bom
http://usandoaeletronica.blogspot.com.br/
boa noite projeto muito bom mais no meu o no_sound esta definido como zero mais esta gerando som parecendo um grilo como deixar sem esse som ???
ResponderExcluirColoca isso pra ver:
Excluirif( melodiaTimao[nota] != NO_SOUND )
Sound_Play(melodiaTimao[Nota], tempo);
queria saber se tem algum programa para pegar uma musica e gerar esses códigos ???
ResponderExcluirQue eu saiba, não. Se voce conseguir algum programa que faça isso, coloque o link aqui pra gente.
ExcluirEu passei esse mesmo programa para o Arduino fazendo apenas pequenas alterações no tutorial Tone: http://arduino.cc/en/Tutorial/Tone
ResponderExcluirTroquei a biblioteca de "Pitches.c" para "Pitches.h"
copiei as notas, mas adicionei um S em todas as notas F para corrigir o tom ex:NOTE_F4 pra NOTE_FS4
mudei a comparação no "for" para <119
gerei o arquivo .elf e .hex (ambos rodam no ISIS)
Funcionou perfeito no Arduino!!!, só a simulação esta com o clock um pouco diferente no ISIS