Sponsor Link:

UTSource.net Reviews

It is a trustworthy website for ordering electronic components with cheap price and excellent quality.

Mounting the circuit

To start making the circuit, first, connect the power (positive/negative) wires of your piezo buzzer to separate rows of your breadboard, as shown in the circuit diagram above.  Then, attach one end of your 220Ω resistor to the same row as the positive (+/red) wire of your piezo buzzer and connect the other end of the resistor to the row next to it. Insert one of your jumper wires to the same row as the ending pin of your resistor (the pin connected to its own row) and connect it to D1 (digital pin 1) of your Arduino. Now, insert another jumper wire to the same row as your negative (-/black) wire on your breadboard and connect that wire to GND (-) on your Arduino. If everything is done correctly, it should look similar to the circuit diagram above. Now, onto the code as tagged to the left!

Arduino Christmas Piezo Buzzer Project Code

int buzzerPin = 8;
int tempo = 200;
char notes[] = "eeeeeeegcde fffffeeeeddedg";
int duration[] = {1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};

void playTheTone(char note, int duration) {
  char notesName[] = { 'c', 'd', 'e', 'f', 'g' };
  int tones[] = { 261, 293, 329, 349, 392 };

  for (int i = 0; i <= sizeof(tones); i++) {
    if (note == notesName[i]) {
      tone(buzzerPin, tones[i], duration);
    }
  }
}

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  for (int i = 0; i <= sizeof(notes)-1; i++) {
    if (notes[i] == ' ') {
      delay(duration[i] * tempo);
    } else {
      playTheTone(notes[i], duration[i] * tempo);
    }
    delay((tempo*2)*duration[i]);
  }
}

Arduino Christmas Piezo Buzzer Project Audio

About the code

Firstly, the code starts off with declaring that variable buzzerPin, for the buzzer, is connected to D8 (digital pin 8). We also declare the variable tempo, the speed of the melody, is 200 beats per minutes. These two variables act as integer variables. In the third line, we have a char datatype,  notes, that include the consecutive order of each musical note being played. There is another variable after that,  duration, which just states the seconds played for each note in datatype notes. In the next section, we have a void statement,  playTheTone, and this section is in charge of combining the variables and datatypes we have set in the start, to create the melody for the buzzer. We start off with making a char datatype,  notesName, which just declares the different notes we will be using and we make another variable,  tones, stating the specific tone values for the variety of notes as stated by datatype char. You can refer to this page, here, for a list of musical notes and each specific tone in the Arduino programming language.  Next up, we have a for loop, where if variable (starts with 0 value) is less than the size (bytes) of datatype notes,  the value of will increase by 1, and an if statement will be ran. The if statement states that when a note equals to the specific note name in datatype notesName, which is pointed out by variable I's value,  function tone() will be activated. This function indicates the variable of pin hooked up to the buzzer,  buzzerPin, the different frequencies of notes being played, specified in datatype tones, and the duration, indicated by variable duration. Further down,  a void setup statement appears where it just states that buzzerPin (D8) is an output pin, where information is being sent from the Arduino and to the buzzer. For the void loop, we start with an for statement, stating when variable I (starts with 0 value) is less than the size (bytes) datatype notes minus 1,  I's value increase by 1 and proceeds into an if else statement. The if else statement states that if datatype notes's current position (indicated by the variable I's value) is equal to a space within the datatype notes, there will be a pause. The pause is made out of variable I's value within variable duration, multiplied by variable tempo (200), to get the pause time in milliseconds, or else the sequence in the void playTheTone statement will run. We will run that void statement and then,  we end off with setting a delay in the current sequence with variable tempo (200) multiplied by 2, then multiplied by variable I's placement in variable duration's set of values, and that creates a pause in milliseconds between the start and end of the code. We are now done!

Amazing opportunities

Also, be sure to check out PCBWay, a leading manufacturer and distributor in PCB design and manufacturing. They have amazing prices and excellent quality in their services, so don't miss out on them! Plus, PCBWay has an amazing website, online Gerber viewer function and a gift shop so make sure to check out their links below:

PCBWay Free Online Gerber Viewer Function: https://www.pcbway.com/project/OnlineGerberViewer.html

PCBWay Gift Shop: https://www.pcbway.com/projects/gifts.html

Seeed Fusion PCB Assembly Service offers one-stop prototyping for PCB manufacture, PCB assembly and as a result, they produce superior quality PCBs and Fast Turnkey PCBA from 7 working days.  When you prototype with Seeed Fusion, they can definitely provide Free DFA and Free functional tests for you! Check out their website to know about their manufacturing capabilities and service.

Enjoy! Contact us for any inquiries!