QC

Banana Piano

An octave of bananas makes a piano!

Devices and components

Arduino Uno Rev3

Speaker, 8 ohms

Resistance 220 ohms

Breadboard (generic)

Alligator clips

Resistor 2.2M Ohm, 1/4 Watt

Connection wire for flat cable, 30 cm

Software and tools

Arduino IDE

Project description

pitches.h

pitches.h from Arduino IDE code examples

1/*************************************************
2 * Public Constants
3 *************************************************/
4
5#define NOTE_B0 31
6#define NOTE_C1 33
7#define NOTE_CS1 35
8#define NOTE_D1 37
9#define NOTE_DS1 39
10#define NOTE_E1 41
11#define NOTE_F1 44
12#define NOTE_FS1 46
13#define NOTE_G1 49
14#define NOTE_GS1 52
15#define NOTE_A1 55
16#define NOTE_AS1 58
17#define NOTE_B1 62
18#define NOTE_C2 65
19#define NOTE_CS2 69
20#define NOTE_D2 73
21#define NOTE_DS2 78
22#define NOTE_E2 82
23#define NOTE_F2 87
24#define NOTE_FS2 93
25#define NOTE_G2 98
26#define NOTE_GS2 104
27#define NOTE_A2 110
28#define NOTE_AS2 117
29#define NOTE_B2 123
30#define NOTE_C3 131
31#define NOTE_CS3 139
32#define NOTE_D3 147
33#define NOTE_DS3 156
34#define NOTE_E3 165
35#define NOTE_F3 175
36#define NOTE_FS3 185
37#define NOTE_G3 196
38#define NOTE_GS3 208
39#define NOTE_A3 220
40#define NOTE_AS3 233
41#define NOTE_B3 247
42#define NOTE_C4 262
43#define NOTE_CS4 277
44#define NOTE_D4 294
45#define NOTE_DS4 311
46#define NOTE_E4 330
47#define NOTE_F4 349
48#define NOTE_FS4 370
49#define NOTE_G4 392
50#define NOTE_GS4 415
51#define NOTE_A4 440
52#define NOTE_AS4 466
53#define NOTE_B4 494
54#define NOTE_C5 523
55#define NOTE_CS5 554
56#define NOTE_D5 587
57#define NOTE_DS5 622
58#define NOTE_E5 659
59#define NOTE_F5 698
60#define NOTE_FS5 740
61#define NOTE_G5 784
62#define NOTE_GS5 831
63#define NOTE_A5 880
64#define NOTE_AS5 932
65#define NOTE_B5 988
66#define NOTE_C6 1047
67#define NOTE_CS6 1109
68#define NOTE_D6 1175
69#define NOTE_DS6 1245
70#define NOTE_E6 1319
71#define NOTE_F6 1397
72#define NOTE_FS6 1480
73#define NOTE_G6 1568
74#define NOTE_GS6 1661
75#define NOTE_A6 1760
76#define NOTE_AS6 1865
77#define NOTE_B6 1976
78#define NOTE_C7 2093
79#define NOTE_CS7 2217
80#define NOTE_D7 2349
81#define NOTE_DS7 2489
82#define NOTE_E7 2637
83#define NOTE_F7 2794
84#define NOTE_FS7 2960
85#define NOTE_G7 3136
86#define NOTE_GS7 3322
87#define NOTE_A7 3520
88#define NOTE_AS7 3729
89#define NOTE_B7 3951
90#define NOTE_C8 4186
91#define NOTE_CS8 4435
92#define NOTE_D8 4699
93#define NOTE_DS8 4978
94
95
96

pitches.h

pitches.h from Arduino IDE code examples

1/*************************************************
2 * Public Constants
3
4 *************************************************/
5
6#define NOTE_B0 31
7#define
8 NOTE_C1 33
9#define NOTE_CS1 35
10#define NOTE_D1 37
11#define NOTE_DS1 39
12#define
13 NOTE_E1 41
14#define NOTE_F1 44
15#define NOTE_FS1 46
16#define NOTE_G1 49
17#define
18 NOTE_GS1 52
19#define NOTE_A1 55
20#define NOTE_AS1 58
21#define NOTE_B1 62
22#define
23 NOTE_C2 65
24#define NOTE_CS2 69
25#define NOTE_D2 73
26#define NOTE_DS2 78
27#define
28 NOTE_E2 82
29#define NOTE_F2 87
30#define NOTE_FS2 93
31#define NOTE_G2 98
32#define
33 NOTE_GS2 104
34#define NOTE_A2 110
35#define NOTE_AS2 117
36#define NOTE_B2
37 123
38#define NOTE_C3 131
39#define NOTE_CS3 139
40#define NOTE_D3 147
41#define
42 NOTE_DS3 156
43#define NOTE_E3 165
44#define NOTE_F3 175
45#define NOTE_FS3
46 185
47#define NOTE_G3 196
48#define NOTE_GS3 208
49#define NOTE_A3 220
50#define
51 NOTE_AS3 233
52#define NOTE_B3 247
53#define NOTE_C4 262
54#define NOTE_CS4
55 277
56#define NOTE_D4 294
57#define NOTE_DS4 311
58#define NOTE_E4 330
59#define
60 NOTE_F4 349
61#define NOTE_FS4 370
62#define NOTE_G4 392
63#define NOTE_GS4
64 415
65#define NOTE_A4 440
66#define NOTE_AS4 466
67#define NOTE_B4 494
68#define
69 NOTE_C5 523
70#define NOTE_CS5 554
71#define NOTE_D5 587
72#define NOTE_DS5
73 622
74#define NOTE_E5 659
75#define NOTE_F5 698
76#define NOTE_FS5 740
77#define
78 NOTE_G5 784
79#define NOTE_GS5 831
80#define NOTE_A5 880
81#define NOTE_AS5
82 932
83#define NOTE_B5 988
84#define NOTE_C6 1047
85#define NOTE_CS6 1109
86#define
87 NOTE_D6 1175
88#define NOTE_DS6 1245
89#define NOTE_E6 1319
90#define NOTE_F6
91 1397
92#define NOTE_FS6 1480
93#define NOTE_G6 1568
94#define NOTE_GS6 1661
95#define
96 NOTE_A6 1760
97#define NOTE_AS6 1865
98#define NOTE_B6 1976
99#define NOTE_C7
100 2093
101#define NOTE_CS7 2217
102#define NOTE_D7 2349
103#define NOTE_DS7 2489
104#define
105 NOTE_E7 2637
106#define NOTE_F7 2794
107#define NOTE_FS7 2960
108#define NOTE_G7
109 3136
110#define NOTE_GS7 3322
111#define NOTE_A7 3520
112#define NOTE_AS7 3729
113#define
114 NOTE_B7 3951
115#define NOTE_C8 4186
116#define NOTE_CS8 4435
117#define NOTE_D8
118 4699
119#define NOTE_DS8 4978
120
121
122

BananaPiano.ino

This is the main program to control the banana piano. It uses pitches.h.

1/*
2 Banana Piano
3
4 This code implements a single octave of a simple piano. It borrows from Tom Igoe's tone
5 example ( http://arduino.cc/en/Tutorial/Tone ) and uses his pitches.h include file for
6 the note frequencies. The digital input pins and their corresponding notes are defined
7 in arrays. Serial monitor output is provided to test key logic levels.
8
9 The digital inputs use 2.2 Meg Ohm pull-up resistors. The digital inputs are brought to
10 logic level LOW by grounding the banana connected to each digital input.
11
12 Circuit:
13 8 - 2.2 Meg Ohm pull-up resistors, connected to +5 V and each of the digital input pins
14 1 - 220 Ohm resistor, connected from pin 12 to an 8 Ohm speaker
15
16 R. Ballew, 31-Jan-2018
17
18*/
19#include "pitches.h"
20
21int numKeys = 8;
22int digInput[] = { 2, 3, 4, 5, 6, 7, 8, 9 };
23int myNote[] = { NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5 };
24int toneOut = 12;
25
26void setup() {
27 // Start serial connection
28 Serial.begin(9600);
29 // Configure digital input pins
30 for (int i = 0; i < numKeys; i++) {
31 pinMode(digInput[i], INPUT);
32 }
33 pinMode(toneOut, OUTPUT);
34}
35
36void loop() {
37 //
38 int keypressed = 0;
39 for (int j = 0; j < numKeys; j++) {
40 int sensorVal = digitalRead(digInput[j]);
41 String outStr = String("K");
42 outStr = String(outStr + j);
43 outStr = String(outStr + ": ");
44 outStr = String(outStr + sensorVal);
45 if (sensorVal == LOW) {
46 ++keypressed; // increment keypressed
47 digitalWrite(13, HIGH);
48 tone(toneOut, myNote[j]);
49 }
50 //outStr = String(outStr + ":");
51 //outStr = String(outStr + keypressed);
52 Serial.print(outStr);
53 Serial.print("\ ");
54 }
55 Serial.println("");
56 if (keypressed == 0) {
57 noTone(toneOut);
58 }
59 delay(250);
60}
61

Downloadable files

Schematic

Banana Piano Circuit Diagram

Schematic

Schematic

Banana Piano Circuit Diagram

Schematic




Note: Content and images are from: https://projecthub.arduino.cc/, with some modifications.
If you want it removed due to copyright reasons, please leave a comment. Thank you.
I want to share this article more widely so that everyone knows about Arduino and your project.

Easy remote control

Remotely control an LED with ease. Devices and components Arduino Nano 33 BLE with headers Box 525 Resistors precision 1% - 17 values Breadb...