Transform a buzzer into a piano

Marc DANIEL

Well-Known Member
Licensed User
With an Arduino board and 8 buttons, transform a buzzer into a piano :
Connexions.jpg
Materials needed:

- an Arduino Uno board
- 8 buttons
- 8 10K-Ohm resistors
- 1 buzzer

 

Attachments

  • PIANO_B4R.zip
    1.1 KB · Views: 23
  • rTone Librairie.zip
    102.4 KB · Views: 19
Last edited:

Marc DANIEL

Well-Known Member
Licensed User


PIANO_B4R:
' PIANO_B4R
#Region Project Attributes
    #AutoFlushLogs: True
    #CheckArrayBounds: True
    #StackBufferSize: 300
#End Region

Sub Process_Globals
    Public Serial1 As Serial
    Private Btn1, Btn2, Btn3, Btn4, Btn5, Btn6, Btn7, Btn8 As Pin
    Private Piano As Tone
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    Btn1.Initialize(2, Btn1.MODE_INPUT_PULLUP)
    Btn1.AddListener("Btn1_StateChanged")
    Btn2.Initialize(3, Btn2.MODE_INPUT_PULLUP)
    Btn2.AddListener("Btn2_StateChanged")
    Btn3.Initialize(4, Btn3.MODE_INPUT_PULLUP)
    Btn3.AddListener("Btn3_StateChanged")
    Btn4.Initialize(5, Btn4.MODE_INPUT_PULLUP)
    Btn4.AddListener("Btn4_StateChanged")
    Btn5.Initialize(6, Btn5.MODE_INPUT_PULLUP)
    Btn5.AddListener("Btn5_StateChanged")
    Btn6.Initialize(7, Btn6.MODE_INPUT_PULLUP)
    Btn6.AddListener("Btn6_StateChanged")
    Btn7.Initialize(8, Btn7.MODE_INPUT_PULLUP)
    Btn7.AddListener("Btn7_StateChanged")
    Btn8.Initialize(9, Btn8.MODE_INPUT_PULLUP)
    Btn8.AddListener("Btn8_StateChanged")
    Piano.Initialize(13)
End Sub

Sub Btn1_StateChanged 'DO - C
    Piano.play(130,1000)
    Delay(10)
End Sub

Sub Btn2_StateChanged 'RÉ - D
    Piano.play(146,1000)
    Delay(10)
End Sub
  
Sub Btn3_StateChanged 'MI - E
    Piano.play(164,1000)
    Delay(10)
End Sub

Sub Btn4_StateChanged 'FA - F
    Piano.play(174,1000)
    Delay(10)
End Sub

Sub Btn5_StateChanged 'SOL - G
    Piano.play(196,1000)
    Delay(10)
End Sub

Sub Btn6_StateChanged 'LA - A
    Piano.play(220,1000)
    Delay(10)
End Sub

Sub Btn7_StateChanged 'SI - B
    Piano.play(246,1000)
    Delay(10)
End Sub

Sub Btn8_StateChanged 'DO - C
    Piano.play(261,1000)
    Delay(10)
End Sub
 
Last edited:

Marc DANIEL

Well-Known Member
Licensed User
The same scenario as before, moving from the 2nd octave to the 3rd octave, which is higher.


NEW_PIANO_B4R:
'NEW_PIANO_B4R - Octave 3
#Region Project Attributes
    #AutoFlushLogs: True
    #CheckArrayBounds: True
    #StackBufferSize: 300
#End Region

Sub Process_Globals
    Public Serial1 As Serial
    Private Btn1, Btn2, Btn3, Btn4, Btn5, Btn6, Btn7, Btn8 As Pin
    Private Piano As Tone
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    Btn1.Initialize(2, Btn1.MODE_INPUT_PULLUP)
    Btn1.AddListener("Btn1_StateChanged")
    Btn2.Initialize(3, Btn2.MODE_INPUT_PULLUP)
    Btn2.AddListener("Btn2_StateChanged")
    Btn3.Initialize(4, Btn3.MODE_INPUT_PULLUP)
    Btn3.AddListener("Btn3_StateChanged")
    Btn4.Initialize(5, Btn4.MODE_INPUT_PULLUP)
    Btn4.AddListener("Btn4_StateChanged")
    Btn5.Initialize(6, Btn5.MODE_INPUT_PULLUP)
    Btn5.AddListener("Btn5_StateChanged")
    Btn6.Initialize(7, Btn6.MODE_INPUT_PULLUP)
    Btn6.AddListener("Btn6_StateChanged")
    Btn7.Initialize(8, Btn7.MODE_INPUT_PULLUP)
    Btn7.AddListener("Btn7_StateChanged")
    Btn8.Initialize(9, Btn8.MODE_INPUT_PULLUP)
    Btn8.AddListener("Btn8_StateChanged")
    Piano.Initialize(13)
End Sub


Sub Btn1_StateChanged 'DO - C
    Piano.play(261,1000)
    Delay(10)
End Sub

Sub Btn2_StateChanged 'RÉ - D
    Piano.play(293,1000)
    Delay(10)
End Sub
    
Sub Btn3_StateChanged 'MI - E
    Piano.play(329,1000)
    Delay(10)
End Sub

Sub Btn4_StateChanged 'FA - F
    Piano.play(349,1000)
    Delay(10)
End Sub

Sub Btn5_StateChanged 'SOL - G
    Piano.play(392,1000)
    Delay(10)
End Sub

Sub Btn6_StateChanged 'LA - A
    Piano.play(440,1000)
    Delay(10)
End Sub

Sub Btn7_StateChanged 'SI - B
    Piano.play(493,1000)
    Delay(10)
End Sub

Sub Btn8_StateChanged 'DO - C
    Piano.play(523,1000)
    Delay(10)
End Sub
 

Attachments

  • NEW_PIANO_B4R.zip
    1.1 KB · Views: 14

Marc DANIEL

Well-Known Member
Licensed User
And to install 15 buttons on a breadboard and obtain 2 successive octaves, one can advantageously use the numerous pins of an ARDUINO Mega2560 board


Mega2560Piano_B4R:
' Mega2560_Piano_B4R
#Region Project Attributes
    #AutoFlushLogs: True
    #CheckArrayBounds: True
    #StackBufferSize: 300
#End Region

Sub Process_Globals
    Public Serial1 As Serial
    Private Btn1, Btn2, Btn3, Btn4, Btn5, Btn6, Btn7, Btn8, Btn9, Btn10, Btn11, Btn12, Btn13, Btn14, Btn15 As Pin
    Private Piano As Tone
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    Btn1.Initialize(53, Btn1.MODE_INPUT_PULLUP)
    Btn1.AddListener("Btn1_StateChanged")
    Btn2.Initialize(51, Btn2.MODE_INPUT_PULLUP)
    Btn2.AddListener("Btn2_StateChanged")
    Btn3.Initialize(49, Btn3.MODE_INPUT_PULLUP)
    Btn3.AddListener("Btn3_StateChanged")
    Btn4.Initialize(47, Btn4.MODE_INPUT_PULLUP)
    Btn4.AddListener("Btn4_StateChanged")
    Btn5.Initialize(45, Btn5.MODE_INPUT_PULLUP)
    Btn5.AddListener("Btn5_StateChanged")
    Btn6.Initialize(43, Btn6.MODE_INPUT_PULLUP)
    Btn6.AddListener("Btn6_StateChanged")
    Btn7.Initialize(41, Btn7.MODE_INPUT_PULLUP)
    Btn7.AddListener("Btn7_StateChanged")
    Btn8.Initialize(39, Btn8.MODE_INPUT_PULLUP)
    Btn8.AddListener("Btn8_StateChanged")
    Btn9.Initialize(37, Btn9.MODE_INPUT_PULLUP)
    Btn9.AddListener("Btn9_StateChanged")
    Btn10.Initialize(35, Btn10.MODE_INPUT_PULLUP)
    Btn10.AddListener("Btn10_StateChanged")
    Btn11.Initialize(33, Btn11.MODE_INPUT_PULLUP)
    Btn11.AddListener("Btn11_StateChanged")
    Btn12.Initialize(31, Btn12.MODE_INPUT_PULLUP)
    Btn12.AddListener("Btn12_StateChanged")
    Btn13.Initialize(29, Btn13.MODE_INPUT_PULLUP)
    Btn13.AddListener("Btn13_StateChanged")
    Btn14.Initialize(27, Btn14.MODE_INPUT_PULLUP)
    Btn14.AddListener("Btn14_StateChanged")
    Btn15.Initialize(25, Btn15.MODE_INPUT_PULLUP)
    Btn15.AddListener("Btn15_StateChanged")
 
 
 
    Piano.Initialize(13)
End Sub

Sub Btn1_StateChanged 'DO - C
    Piano.play(130,1000)
    Delay(10)
End Sub

Sub Btn2_StateChanged 'RÉ - D
    Piano.play(146,1000)
    Delay(10)
End Sub
 
Sub Btn3_StateChanged 'MI - E
    Piano.play(164,1000)
    Delay(10)
End Sub

Sub Btn4_StateChanged 'FA - F
    Piano.play(174,1000)
    Delay(10)
End Sub

Sub Btn5_StateChanged 'SOL - G
    Piano.play(196,1000)
    Delay(10)
End Sub

Sub Btn6_StateChanged 'LA - A
    Piano.play(220,1000)
    Delay(10)
End Sub

Sub Btn7_StateChanged 'SI - B
    Piano.play(246,1000)
    Delay(10)
End Sub

Sub Btn8_StateChanged 'DO - C
    Piano.play(261,1000)
    Delay(10)
End Sub

Sub Btn9_StateChanged 'RÉ - D
    Piano.play(293,1000)
    Delay(10)
End Sub
 
Sub Btn10_StateChanged 'MI - E
    Piano.play(329,1000)
    Delay(10)
End Sub

Sub Btn11_StateChanged 'FA - F
    Piano.play(349,1000)
    Delay(10)
End Sub

Sub Btn12_StateChanged 'SOL - G
    Piano.play(392,1000)
    Delay(10)
End Sub

Sub Btn13_StateChanged 'LA - A
    Piano.play(440,1000)
    Delay(10)
End Sub

Sub Btn14_StateChanged 'SI - B
    Piano.play(493,1000)
    Delay(10)
End Sub

Sub Btn15_StateChanged 'DO - C
    Piano.play(523,1000)
    Delay(10)
End Sub

Clavier1.jpg







Clavier2.jpg

Fritzing.jpg
 

Attachments

  • Mega2560piano_B4R.zip
    1.3 KB · Views: 10
  • Fritzing.zip
    16.4 KB · Views: 9
Last edited:

Marc DANIEL

Well-Known Member
Licensed User
Buttons.jpg


And here's what it looks like: VIDEO

Mega2560Piano_B4R:
' Mega2560_Piano_B4R
#Region Project Attributes
    #AutoFlushLogs: True
    #CheckArrayBounds: True
    #StackBufferSize: 300
#End Region

Sub Process_Globals
    Public Serial1 As Serial
    Private Btn1, Btn2, Btn3, Btn4, Btn5, Btn6, Btn7, Btn8, Btn9, Btn10, Btn11, Btn12, Btn13, Btn14, Btn15 As Pin
    Private Piano As Tone
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    Btn1.Initialize(53, Btn1.MODE_INPUT_PULLUP)
    Btn1.AddListener("Btn1_StateChanged")
    Btn2.Initialize(51, Btn2.MODE_INPUT_PULLUP)
    Btn2.AddListener("Btn2_StateChanged")
    Btn3.Initialize(49, Btn3.MODE_INPUT_PULLUP)
    Btn3.AddListener("Btn3_StateChanged")
    Btn4.Initialize(47, Btn4.MODE_INPUT_PULLUP)
    Btn4.AddListener("Btn4_StateChanged")
    Btn5.Initialize(45, Btn5.MODE_INPUT_PULLUP)
    Btn5.AddListener("Btn5_StateChanged")
    Btn6.Initialize(43, Btn6.MODE_INPUT_PULLUP)
    Btn6.AddListener("Btn6_StateChanged")
    Btn7.Initialize(41, Btn7.MODE_INPUT_PULLUP)
    Btn7.AddListener("Btn7_StateChanged")
    Btn8.Initialize(39, Btn8.MODE_INPUT_PULLUP)
    Btn8.AddListener("Btn8_StateChanged")
    Btn9.Initialize(37, Btn9.MODE_INPUT_PULLUP)
    Btn9.AddListener("Btn9_StateChanged")
    Btn10.Initialize(35, Btn10.MODE_INPUT_PULLUP)
    Btn10.AddListener("Btn10_StateChanged")
    Btn11.Initialize(33, Btn11.MODE_INPUT_PULLUP)
    Btn11.AddListener("Btn11_StateChanged")
    Btn12.Initialize(31, Btn12.MODE_INPUT_PULLUP)
    Btn12.AddListener("Btn12_StateChanged")
    Btn13.Initialize(29, Btn13.MODE_INPUT_PULLUP)
    Btn13.AddListener("Btn13_StateChanged")
    Btn14.Initialize(27, Btn14.MODE_INPUT_PULLUP)
    Btn14.AddListener("Btn14_StateChanged")
    Btn15.Initialize(25, Btn15.MODE_INPUT_PULLUP)
    Btn15.AddListener("Btn15_StateChanged")
         
    Piano.Initialize(10)
End Sub

Sub Btn1_StateChanged 'DO - C
    Piano.play(130,1000)
    Delay(10)
End Sub

Sub Btn2_StateChanged 'RÉ - D
    Piano.play(146,1000)
    Delay(10)
End Sub
 
Sub Btn3_StateChanged 'MI - E
    Piano.play(164,1000)
    Delay(10)
End Sub

Sub Btn4_StateChanged 'FA - F
    Piano.play(174,1000)
    Delay(10)
End Sub

Sub Btn5_StateChanged 'SOL - G
    Piano.play(196,1000)
    Delay(10)
End Sub

Sub Btn6_StateChanged 'LA - A
    Piano.play(220,1000)
    Delay(10)
End Sub

Sub Btn7_StateChanged 'SI - B
    Piano.play(246,1000)
    Delay(10)
End Sub

Sub Btn8_StateChanged 'DO - C
    Piano.play(261,1000)
    Delay(10)
End Sub

Sub Btn9_StateChanged 'RÉ - D
    Piano.play(293,1000)
    Delay(10)
End Sub
 
Sub Btn10_StateChanged 'MI - E
    Piano.play(329,1000)
    Delay(10)
End Sub

Sub Btn11_StateChanged 'FA - F
    Piano.play(349,1000)
    Delay(10)
End Sub

Sub Btn12_StateChanged 'SOL - G
    Piano.play(392,1000)
    Delay(10)
End Sub

Sub Btn13_StateChanged 'LA - A
    Piano.play(440,1000)
    Delay(10)
End Sub

Sub Btn14_StateChanged 'SI - B
    Piano.play(493,1000)
    Delay(10)
End Sub

Sub Btn15_StateChanged 'DO - C
    Piano.play(523,1000)
    Delay(10)
End Sub

It is preferable to modify line 48 and connect the buzzer, for example, to pin 10 instead of pin 13, which is already used for the Arduino board's LED.
 

Attachments

  • Mega2560piano_B4R.zip
    1.3 KB · Views: 0
Last edited:
Top