ezBuzzer Library - Melody Example

This example uses a piezo buzzer:

Hardware Required

1×Arduino UNO or Genuino UNO
1×USB 2.0 cable type A/B
1×Piezo Buzzer
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno
Please note: These are Amazon affiliate links. If you buy the components through these links, We will get a commission at no extra cost to you. We appreciate it.

About Piezo Buzzer and Button

If you do not know about piezo buzzer and button (pinout, how it works, how to program ...), learn about them in the following tutorials:

About ezBuzzer Library

Wiring Diagram

Arduino Button Piezo Buzzer Wiring Diagram

Arduino Code

Quick Steps

  • Install ezBuzzer library. See How To
  • Connect Arduino to PC via USB cable
  • Open Arduino IDE, select the right board and port
  • On Arduino IDE, Go to File Examples ezBuzzer Melody example
/* Created by ArduinoGetStarted.com This example code is in the public domain Tutorial page: https://arduinogetstarted.com/library/arduino-melody-example Library References: https://arduinogetstarted.com/tutorials/arduino-buzzer-library This example uses a piezo buzzer: + plays a melody once on background each time a button is pressed + stops playing a melody when another button is pressed + without using delay() function, this is a non-blocking example */ #include <ezBuzzer.h> // ezBuzzer library const int START_BUTTON_PIN = 7; const int STOP_BUTTON_PIN = 8; const int BUZZER_PIN = 3; int lastStartButtonState = HIGH; // the previous state from the input pin int lastStopButtonState = HIGH; // the previous state from the input pin ezBuzzer buzzer(BUZZER_PIN); // create ezBuzzer object that attach to a pin; // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { Serial.begin(9600); pinMode(START_BUTTON_PIN, INPUT_PULLUP); pinMode(STOP_BUTTON_PIN, INPUT_PULLUP); } void loop() { buzzer.loop(); // MUST call the buzzer.loop() function in loop() int startButtonState = digitalRead(START_BUTTON_PIN); int stopButtonState = digitalRead(STOP_BUTTON_PIN); if (lastStartButtonState == HIGH && startButtonState == LOW) { Serial.println("The START button is pressed"); if (buzzer.getState() == BUZZER_IDLE) { int length = sizeof(noteDurations) / sizeof(int); buzzer.playMelody(melody, noteDurations, length); // playing } } if (lastStopButtonState == HIGH && stopButtonState == LOW) { Serial.println("The STOP button is pressed"); if (buzzer.getState() != BUZZER_IDLE) { buzzer.stop() ; // stop } } lastStartButtonState = startButtonState; lastStopButtonState = stopButtonState; }
  • Click Upload button on Arduino IDE to upload code to Arduino
Arduino IDE Upload Code
  • Press and release the START button, You will hear "Jingle Bells" song
  • Press and release the STOP button, The song is stopped immediately

If you do not press STOP button, the song will be played to the end of song.

Code Explanation

Read the line-by-line explanation in comment lines of source code!


The above example code demonstrates how to use the ezBuzzer library to make a beep on Piezo Buzzer each time button is pressed. In practice, You may need to debounce for the button. Debouncing for the button is not easy for beginners. Fortunately, thanks to the ezButton library, We can do it easily.

The Best Arduino Starter Kit