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