Sound Library

The mikroC PRO for PIC32 provides a Sound Library to supply users with routines necessary for sound signalization in their applications. Sound generation needs additional hardware, such as piezo-speaker (example of piezo-speaker interface is given on the schematic at the bottom of this page).

Library Routines

Sound_Init

Prototype

void Sound_Init(unsigned long *snd_port, unsigned long snd_pin);

Description

Configures the appropriate MCU pin for sound generation.

Parameters
  • snd_port: sound output port address
  • snd_pin: sound output pin
Returns

Nothing.

Requires

Nothing.

Example
// Initialize the pin RC3 for playing sound
Sound_Init(&PORTD, 3);
Notes

None.

Sound_Play

Prototype

void Sound_Play(unsigned int freq_in_hz, unsigned< int/b> duration_ms);

Description

Generates the square wave signal on the appropriate pin.

Parameters
  • freq_in_hz: signal frequency in Hertz (Hz)
  • duration_ms: signal duration in miliseconds (ms)
Returns

Nothing.

Requires

In order to hear the sound, you need a piezo speaker (or other hardware) on designated port. Also, you must call Sound_Init to prepare hardware for output before using this function.

Example
// Play sound of 1KHz in duration of 100ms
Sound_Play(1000, 100);
Notes

None.

Library Example

The example is a simple demonstration of how to use the Sound Library for playing tones on a piezo speaker.

Copy Code To ClipboardCopy Code To Clipboard
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() {
  CHECON = 0x32;
  AD1PCFG = 0xFFFF;                 // Configure AN pins as digital
  TRISB = 0xF8;                     // Configure RB7..RB3 as input
  LATB = 0;

  Sound_Init(&PORTD, 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 (RB4_bit);                // Wait for button to be released
  }
}

HW Connection

Example of Sound Library

Example of Sound Library

Copyright (c) 2002-2017 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
Want more examples and libraries? 
Find them on LibStock - A place for the code