Make a Sound with a Piezo Buzzer
We can make simple tones with a buzzer.
Written By: Cherie Tan
Difficulty
Easy
Steps
5
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.
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
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.