To make a buzzer play a melody with an Arduino, you can use the tone()
function to generate specific frequencies that correspond to musical notes. A simple way to do this is by using an array of note frequencies and durations, then iterating through them to play the melody.
Wire Connection:
- Connect one end of the buzzer to a digital pin on your Arduino (e.g., pin 8).
- Connect the other end to the ground (GND).
Arduino Code:
// Pin where the buzzer is connected
int buzzerPin = 8;
// Frequencies for notes (in Hz)
int melody[] = {
262, 294, 330, 349, 392, 440, 494, 523 // Notes C4, D4, E4, F4, G4, A4, B4, C5
};
// Durations for each note (in milliseconds)
int noteDurations[] = {
500, 500, 500, 500, 500, 500, 500, 500 // 500ms for each note
};
void setup() {
// The melody plays in loop, so nothing is needed in setup
}
void loop() {
// Play the melody
for (int i = 0; i < 8; i++) {
int noteDuration = noteDurations[i];
tone(buzzerPin, melody[i], noteDuration);
// Wait for the note to finish playing before moving to the next one
delay(noteDuration + 50); // Adding a short pause between notes
}
delay(2000);
}
Explanation:
- Pin Setup: The buzzer is connected to pin 8. You can change this pin if needed.
- Melody Array: The
melody[]
array contains the frequencies of the notes (C4, D4, E4, etc.). You can expand this array with more notes for a longer melody. - Note Duration: The
noteDurations[]
array corresponds to the duration for each note. In this example, each note lasts for 500 milliseconds. - Tone and Delay: The
tone()
function plays the note, anddelay()
ensures that there’s a small gap between notes.
This method will allow you to play simple melodies using your Arduino and a buzzer!