Introduction

Piezo buzzers are simple audio-signalling devices that can generate sounds.

In this guide, we will learn how to create basic beeps and tones with the piezo buzzer and an Arduino. 

Complete this guide to understand the basics involved in using a buzzer. Then you can utilise it for more advanced projects!
    • Plug your Buzzer in so that the positive pin is on the right hand side.

    • There are markings on the buzzer which indicate the positive and negative pins.

    • Connect the Digital Pin 9 to the Buzzer's positive pin.

    • Connect the Ground to the Buzzer's negative pin.

  1. const int buzzer = 9; //buzzer to arduino pin 9
    
    
    void setup(){
    
      pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
    
    }
    
    void loop(){
    
      tone(buzzer, 1000);
      delay(1000);        // on for 1 sec
      noTone(buzzer);     // Stop sound
      delay(1000);        // on for 1sec
    
    }
    • Copy this code to the Arduino IDE

    • Upload the code and your buzzer should start to beep on and off

  2. int speakerPin = 5;
    int length = 26;
    char notes[] = "eeeeeeegcde fffffeeeeddedg";
    int beats[] = { 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2};
    
    int tempo = 300;
    void playTone(int tone, int duration) {
      for (long i = 0; i < duration * 1000L; i += tone * 2) {
        digitalWrite(speakerPin, HIGH);
        delayMicroseconds(tone);
        digitalWrite(speakerPin, LOW);
        delayMicroseconds(tone);
      }
    }
    void playNote(char note, int duration) {
      char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
      int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
    
      // play the tone corresponding to the note name
      for (int i = 0; i < 8; i++) {
        if (names[i] == note) {
          playTone(tones[i], duration);
        }
      }
    }
    void setup() {
      pinMode(speakerPin, OUTPUT);
    }
    void loop() {
      for (int i = 0; i < length; i++) {
        if (notes[i] == ' ') {
          delay(beats[i] * tempo); // rest
        } else {
          playNote(notes[i], beats[i] * tempo);
        }
    
        // pause between notes
        delay(tempo / 2);
      }
    }
    • A quick search for "Arduino Buzzer Jingle Bells" turned up this code by elubow

    • Give it a try!

    • Note - look at the code and see you need to change buzzer jumper wire to Pin 5 or you could change the code to utilise pin 9.