Bibliotecas MikroC PRO for PIC: Sound
O MikroC PRO for PIC fornece uma biblioteca de som para fornecer aos usuários com as rotinas necessárias para a sinalização de som em suas aplicações. Geração de som necessita de hardware adicional, como fone piezoelétrico.
Rotinas:
Sound_Init(char *snd_port, char snd_pin) - Configura o microcontrolador para a geração do som;snd_port- Endereço da Porta de saída do sinal;
snd_pin- Pino de saída do sinal.Sound_Play(unsigned freq_in_hz, unsigned duration_ms) -Gera um sinal de onda quadrada de frequência e duração pré-determinados;freq_in_hz- Frequência do sinal em Hz;
duration_ms- Duração do sinal em milisegundos(ms).
NOTA: Frequência máxima que pode ser produzido por esta função é Freq_max=Fosc/(80*3). A freqüência mínima é Freq_min=Fosc/(80*255).EXEMPLO:
void Tone1() { Sound_Play(659, 250); // Frequency = 659Hz, duration = 250ms } void Tone2() { Sound_Play(698, 250); // Frequency = 698Hz, duration = 250ms } void Tone3() { Sound_Play(784, 250); // Frequency = 784Hz, duration = 250ms } void Melody() { // Plays the melody "Yellow house" Tone1(); Tone2(); Tone3(); Tone3(); Tone1(); Tone2(); Tone3(); Tone3(); Tone1(); Tone2(); Tone3(); Tone1(); Tone2(); Tone3(); Tone3(); Tone1(); Tone2(); Tone3(); Tone3(); Tone3(); Tone2(); Tone2(); Tone1(); } void ToneA() { Sound_Play( 880, 50); } void ToneC() { Sound_Play(1046, 50); } void ToneE() { Sound_Play(1318, 50); } void Melody2() { unsigned short i; for (i = 9; i > 0; i--) { ToneA(); ToneC(); ToneE(); } } void main() { ANSEL = 0; // Configure AN pins as digital ANSELH = 0; C1ON_bit = 0; // Disable comparators C2ON_bit = 0; TRISB = 0xF8; // Configure RB7..RB3 as input Sound_Init(&PORTC, 3); Sound_Play(880, 1000); // Play sound at 880Hz for 1 second while (1) { if (Button(&PORTB,7,1,1)) // RB7 plays Tone1 Tone1(); while (RB7_bit) ; // Wait for button to be released if (Button(&PORTB,6,1,1)) // RB6 plays Tone2 Tone2(); while (RB6_bit) ; // Wait for button to be released if (Button(&PORTB,5,1,1)) // RB5 plays Tone3 Tone3(); while (RB5_bit) ; // Wait for button to be released if (Button(&PORTB,4,1,1)) // RB4 plays Melody2 Melody2(); while (RB4_bit) ; // Wait for button to be released if (Button(&PORTB,3,1,1)) // RB3 plays Melody Melody(); while (RB3_bit) ; // Wait for button to be released } }
Nenhum comentário