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 |
|
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 |
|
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.
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
What do you think about this topic ? Send us feedback!