Introduction: Arduino | Pushbutton Piano With Piezo Speaker

Picture of Arduino | Pushbutton Piano With Piezo Speaker

Met alleen maar een Arduino Uno, een paar resistors, een breadboard, een paar PCB Pushbuttons, een piezo speaker en wat jumper wires, is het mogelijk om een draagbare piano te maken. Handig voor als je buitenshuis wilt oefenen, of gewoon wilt gebruiken voor de lol. Met een draagbare piano op zak zal je je nooit vervelen.

Step 1: Verzamel Al Het Materiaal

Picture of Verzamel Al Het Materiaal

Voor deze piano heb ik gebruikt:
- 1 Arduino Uno
- 8 ‘330 ohm’ resistors
- 1 breadboard
Ik heb zelf een grotere gebruikt (zie foto) omdat een kleinere onhandig is om op te spelen, maar het is wel mogelijk om een kleine te gebruiken.
- 8 pushbuttons
- 1 piezo speaker
- 23 jumper wires

Het is ook mogelijk om de piano groter te maken, dan zijn meer pushbuttons, jumper wires en risistors nodig. Al deze dingen zijn te verkrijgen in:

www.radiocentrum.com
hackerstore.nl
floris.cc
martoparts.nl
bitsandparts.eu
kiwi-electronics.nl
banggood.com
miniinthebox.com
Of in de electronica speciaalzaak bij jou in de buurt.

Step 2: Het Design

Picture of Het Design

Nu is het de bedoeling dat alles op zijn plek word gezet. Het gele draadje gaat in de 5V op het Arduino board. De zwarte jumper wire (- van de piezo speaker) gaat in de GND daarnaast.
Dan worden alle pushbuttons apart gekoppeld aan de Arduino, vanaf poort 2 tot en met 9. Het is het makkelijkst om dit van links naar rechts te doen, zo blijft het overzichtelijk. De plus van de piezo speaker gaat in poort 13.

Let goed op!De felroze en de lichtblauwe jumper wires in het schema zorgen ervoor dat de stroom aan de rechterkant van het breadboard worden doorgevoerd naar de linkerkant van het breadbord. Indien deze draadjes niet worden verbonden, dan zullen knopjes 1-7 het niet doen op het breadboard. Dit kan verschillen per breadboard, bij mij was dit wel van toepassing.

Step 3: De Code

! Om deze code te laten werken, heb je het arduino programma nodig. Dit kan gratis worden gedownload op http://www.arduino.cc.

De code die ik heb gebruikt voor dit project:


// Arduino Piano met Push Buttons | Kayleigh van der Veen
// De speaker zit verbonden aan poort Digital 13
int speaker = 13;

// De push buttons zijn verbonden aan poort 2 tot en met 9 (8 in totaal)
int button_1 = 2;
int button_2 = 3;
int button_3 = 4;
int button_4 = 5;
int button_5 = 6;
int button_6 = 7;
int button_7 = 8;
int button_8 = 9;

// Buttons set to 0
int pushbutton_1 = 0;
int pushbutton_2 = 0;
int pushbutton_3 = 0;
int pushbutton_4 = 0;
int pushbutton_5 = 0;
int pushbutton_6 = 0;
int pushbutton_7 = 0;
int pushbutton_8 = 0;

// Huidige toon set to 0
int current_tone = 0;

//Toonhoogtes van button < 1 tot 8 >
int tones[] = { 1810, 1600, 1415, 1320, 1160, 1020, 900, 840 };

void setup()
{
// speaker is een output - geluid komt hieruit

pinMode(speaker, OUTPUT);

// de push buttons zijn input

pinMode(button_1, INPUT);

pinMode(button_2, INPUT);

pinMode(button_3, INPUT)

pinMode(button_4, INPUT);

pinMode(button_5, INPUT);

pinMode(button_6, INPUT);

pinMode(button_7, INPUT);

pinMode(button_8, INPUT);

}

// De loop herhaalt deze acties

void loop()

{

pushbutton_1 = digitalRead(button_1);
pushbutton_2 = digitalRead(button_2);
pushbutton_3 = digitalRead(button_3);
pushbutton_4 = digitalRead(button_4);
pushbutton_5 = digitalRead(button_5);
pushbutton_6 = digitalRead(button_6);
pushbutton_7 = digitalRead(button_7);
pushbutton_8 = digitalRead(button_8);

// Als het knopje wordt ingedrukt én het knopje is 1-8, dan is de output een bepaalde toonhoogte (uit list van 0 tot 7)
if((pushbutton_1 == HIGH) || (pushbutton_2 == HIGH) || (pushbutton_3 == HIGH) || (pushbutton_4 == HIGH) || (pushbutton_5 == HIGH) || (pushbutton_6 == HIGH) || (pushbutton_7 == HIGH) || (pushbutton_8 == HIGH) )

{

if (pushbutton_1 == HIGH)

{

current_tone = tones[0];

}

else if (pushbutton_2 == HIGH)

{

current_tone = tones[1];

}

else if (pushbutton_3 == HIGH)

{

current_tone = tones[2];

}

else if (pushbutton_4 == HIGH)

{

current_tone = tones[3];

}

else if (pushbutton_5 == HIGH)

{

current_tone = tones[4];

}

else if (pushbutton_6 == HIGH)

{

current_tone = tones[5];

}

else if (pushbutton_7 == HIGH)

{

current_tone = tones[6];

}

else if (pushbutton_8 == HIGH)

{

current_tone = tones[7];

}

// Bepaalde delay zodat de toonhoogte word bepaald. Kortere tijd tussen de toon maakt de toon hoger

digitalWrite(speaker, HIGH);

delayMicroseconds(current_tone);

digitalWrite(speaker, LOW);

delayMicroseconds(current_tone);

}

// Geen button ingedrukt dus ook geen output.

else

{

digitalWrite(speaker, LOW);

}

}

Step 4: Experimenteer En Voltooi

Picture of Experimenteer En Voltooi

Nu zou de piano het moeten doen.
Experimenteer met de toonhoogtes om verschillende muziekjes te kunnen spelen. Hoe lager het getal, hoe hoger de toon wordt. Of voeg meer knopjes toe om je piano groter te maken en meer tonen te kunnen spelen.

Er is een afbeelding bijgevoegd met een lijst als voorbeeld van hoe het werkt met de frequentiecodes.

Comments

BrettGirod made it! (author)2017-08-07

I set this all up, uploaded the code and... My buzzer just buzzes. No thing happens when I press any of the buttons. Maybe something is lost in translation? Do I need a library for the notes? Should I be using a speaker rather than a piezo buzzer? I also recieve this message when done uploading: Sketch uses 1310 bytes (4%) of program storage space. Maximum is 32256 bytes.

Global variables use 27 bytes (1%) of dynamic memory, leaving 2021 bytes for local variables. Maximum is 2048 bytes.

Invalid library found in Arduino/libraries/Piano_Push_Buttons: Arduino/libraries/Piano_Push_Buttons

Invalid library found in Arduino/libraries/Piano_Push_Buttons: Arduino/libraries/Piano_Push_Buttons

tomatoskins (author)2017-01-27

Super fun project! Thanks for sharing!

About This Instructable

1,346views

13favorites

License:

More by Kayleighv3:Arduino | Pushbutton Piano With Piezo Speaker
Add instructable to: