
Using a Piezo Buzzer — SIK Circuit 11
Play a song with a piezo buzzer! Learn about the tone() function, musical frequencies, arrays for storing melodies, and how to create your own tunes.
说明
Parts & Introduction
Parts & Introduction
A piezo buzzer converts electrical signals into sound. Using Arduino's built-in tone() function, you can play specific musical frequencies. This sketch plays a simple melody using character arrays for notes and integer arrays for timing.
Parts Needed
- 1x Arduino Uno + USB cable
- 1x Breadboard
- 1x Piezo Buzzer
- 3x Jumper Wires
Note Frequency Reference
| Note | Freq |
|---|---|
| c | 262 Hz |
| d | 294 Hz |
| e | 330 Hz |
| f | 349 Hz |
| g | 392 Hz |
| a | 440 Hz |
| b | 494 Hz |
| C | 523 Hz |
此步骤所需材料:
SparkFun Inventors Kit - V3.21 套件
Arduino Uno R31 个
Breadboard1 个
Jumper Wires2 个所需工具:
Hardware Hookup
Hardware Hookup
Wiring Instructions
- Place the piezo buzzer in the breadboard. It has two pins — one marked with "+".
- Connect the positive pin (+) to Arduino Digital Pin 9 (PWM).
- Connect the negative pin to GND.
Tip: If the buzzer doesn't fit easily, try rotating it slightly to align with diagonal breadboard holes.
此步骤所需材料:
Breadboard1 个
Jumper Wires2 个Arduino Code
Arduino Code
Open the Arduino IDE and upload the following sketch to your Arduino board.
/*
SparkFun Inventor's Kit
Example sketch 11 — BUZZER
Use the buzzer to play a song!
Hardware connections:
Buzzer positive pin (+) to digital pin 9 (PWM)
Buzzer negative pin to GND
This code is completely free for any use.
*/
const int buzzerPin = 9;
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // space = rest
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
int tempo = 113;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
int i, duration;
for (i = 0; i < songLength; i++)
{
duration = beats[i] * tempo;
if (notes[i] == ' ')
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo/10);
}
while(true){} // Play once, then stop. Remove this line to loop.
}
int frequency(char note)
{
int i;
const int numNotes = 8;
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0);
}此步骤所需材料:
Arduino Uno R31 个所需工具:
Test & Experiment
Test & Experiment
What You Should See
You won't see anything — but you'll hear a melody playing from the buzzer! The song plays once and stops.
Troubleshooting
- No sound: The buzzer pins are easy to misplace on the breadboard. Double-check placement and make sure both pins have good contact.
- Want it to stop: Pull the buzzer out while working on other things, plug it back in to test.
Experiments to Try
- Remove the
while(true){}line to make the song loop continuously. - Write your own melody by changing the
notes[]andbeats[]arrays. - Add more notes by expanding the
frequency()function with sharps and flats. - Use a button (from Circuit 5) to trigger the melody on demand.
材料
5- $105.00
- 占位符
- 1 个占位符
- Piezo Buzzer1 个
CC0 公共领域
此蓝图以 CC0 协议发布。你可以自由复制、修改、分发和使用此作品,无需征得许可。
通过购买蓝图中的产品支持创客,他们将获得 创客佣金 (由供应商设定),或创建此蓝图的新版本并将其作为连接包含在你自己的蓝图中以分享收入。