Introduction: 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

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

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

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.