Fork me on GitHub

Microcontrolandos

O Blog está passando por uma fase de mudanças. Todos os posts estão sendo atualizados, códigos, links e imagens estão sendo arrumados. Conteúdos novos ainda estão por vir.

Tutorial 5:Blibloteca MikroC: Sound

Share:

Bibliotecas MikroC PRO for PIC: Sound




BIBLIOTECA 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