Datasheet

NOT WORKING? (3 things to try)
MAKING IT BETTER
MORE, MORE, MORE:
19
CIRC-06
Can't Think While the
Melody is Playing?
Just pull up the piezo element
whilst you think, upload your
program then plug it back in.
More details, where to buy more parts, where to ask more questions:
http://ardx.org/CIRC06
No Sound
Given the size and shape of
the piezo element it is easy to
miss the right holes on the
breadboard. Try double
checking its placement.
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b',
Playing with the speed:
'C' };
The timing for each note is calculated based on
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136,
variables, as such we can tweak the sound of each note
1014, 956 };
or the timing. To change the speed of the melody you
Composing your own melodies:
need to change only one line.
The program is pre-set to play 'Twinkle Twinkle Little Star'
int tempo = 300; ---> int tempo = (new #)
however the way it is programmed makes changing the song
Change it to a larger number to slow the melody down,
easy. Each song is defined in one int and two arrays, the int
or a smaller number to speed it up.
length defines the number of notes, the first array
Tuning the notes:
notes[] defines each note, and the second beats[]
If you are worried about the notes being a little out of
defines how long each note is played. Some Examples:
tune this can be fixed as well. The notes have been
Twinkle Twinkle Little Star
calculated based on a formula in the comment block at
int length = 15;
char notes[] = {"ccggaagffeeddc "};
the top of the program. But to tune individual notes just
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
adjust their values in the tones[] array up or down
1, 1, 2, 4 };
Happy Birthday (first line)
until they sound right. (each note is matched by its
int length = 13;
name in the names[] (array ie. c = 1915 )
char notes[] = {"ccdcfeccdcgf "};
int beats[] = {1,1,1,1,1,2,1,1,1,1,1,2,4};
Tired of Twinkle Twinkle
Little Star?
The code is written so you can
easily add your own songs,
check out the code below to
get started.
/* Melody
* (cleft) 2005 D. Cuartielles for K3
* digitalWrite(speakerPin,
* This example uses a piezo speaker to play melodies. It sends
LOW);
* a square wave of the appropriate frequency to the piezo,
delayMicroseconds(tone);
* generating the corresponding tone.
}
*
}
* The calculation of the tones is made following the
* mathematical operation:
void playNote(char note, int duration) {
*
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
* timeHigh = period / 2 = 1 / (2 * toneFrequency)
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956
*
};
* where the different tones are described as in the table:
// play the tone corresponding to the note name
*
for (int i = 0; i < 8; i++) {
* note frequency period timeHigh
if (names[i] == note) {
* c 261 Hz 3830 1915
playTone(tones[i], duration);
* d 294 Hz 3400 1700
}
* e 329 Hz 3038 1519
}
* f 349 Hz 2864 1432
}
* g 392 Hz 2550 1275
* a 440 Hz 2272 1136
void setup() {
* b 493 Hz 2028 1014
pinMode(speakerPin, OUTPUT);
* C 523 Hz 1912 956
}
*
* http://www.arduino.cc/en/Tutorial/Melody
void loop() {
*/
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
int speakerPin = 9;
delay(beats[i] * tempo); // rest
int length = 15; // the number of notes
} else {
char notes[] = "ccggaagffeeddc "; // a space represents a rest
playNote(notes[i], beats[i] * tempo);
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
}
int tempo = 300;
// pause between notes
delay(tempo / 2); }
void playTone(int tone, int duration) {
}
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
Download the Code from ( http://ardx.org/CODE06 )
(copy the text and paste it into an empty Arduino Sketch)
CODE (no need to type everything in just click)