Sound Library
mikroBasic PRO for dsPIC30/33 and PIC24 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 |
sub procedure Sound_Init(dim byref snd_port, snd_pin as word) |
---|---|
Description |
Configures the appropriate MCU pin for sound generation. |
Parameters |
|
Returns |
Nothing. |
Requires |
Nothing. |
Example |
' Initialize the pin RD3 for playing sound Sound_Init(PORTD, 3) |
Notes |
None. |
Sound_Play
Prototype |
sub procedure Sound_Play(dim freq_in_hz, duration_ms as word) |
---|---|
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.
program Sound sub procedure Tone1() Sound_Play(659, 250) ' Frequency = 659Hz, duration = 250ms end sub sub procedure Tone2() Sound_Play(698, 250) ' Frequency = 698Hz, duration = 250ms end sub sub procedure Tone3() Sound_Play(784, 250) ' Frequency = 784Hz, duration = 250ms end sub sub procedure 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() end sub sub procedure ToneA() ' Tones used in Melody2 function Sound_Play( 880, 50) end sub sub procedure ToneC() Sound_Play(1046, 50) end sub sub procedure ToneE() Sound_Play(1318, 50) end sub sub procedure Melody2() ' Plays Melody2 dim counter as byte for counter = 9 to 1 step-1 ToneA() ToneC() ToneE() next counter end sub main: ADPCFG = 0xFFFF ' Configure AN pins as digital I/O TRISB = 0xF8 ' Configure RB7..RB3 as input Sound_Init(PORTD, 3) Sound_Play(880, 1000) while TRUE ' endless loop if (Button(PORTB,7,1,1)) then ' If PORTB.7 is pressed play Tone1 Tone1() while (RB7_bit <> 0) ' Wait for button to be released nop wend end if if (Button(PORTB,6,1,1)) then ' If PORTB.6 is pressed play Tone1 Tone2() while (RB6_bit <> 0) ' Wait for button to be released nop wend end if if (Button(PORTB,5,1,1)) then ' If PORTB.5 is pressed play Tone1 Tone3() while (RB5_bit <> 0) ' Wait for button to be released nop wend end if if (Button(PORTB,4,1,1)) then ' If PORTB.4 is pressed play Tone1 Melody2() while (RB4_bit <> 0) ' Wait for button to be released nop wend end if if (Button(PORTB,3,1,1)) then ' If PORTB.3 is pressed play Tone1 Melody() while (RB3_bit <> 0) ' Wait for button to be released nop wend end if wend end.
HW Connection
Example of Sound Library
What do you think about this topic ? Send us feedback!