Sound Library
mikroBasic 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 |
sub procedure Sound_Init(dim byref snd_port, snd_pin as longword) |
---|---|
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:
CHECON = 0x32
AD1PCFG = 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!