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