Arduino Uno R4 Buzzer Simulator: Wiring, Code and a Live Circuit
This is a passive piezo buzzer wired to an Arduino Uno R4 Minima, playing a four-note arpeggio with tone() live in your browser. The simulated piezo measures the frequency on its legs, so a wrong note is a wrong number.
Two wires: pin 9 to the buzzer’s plus side and GND to the other. No library is needed.
- 5 V logic
- No library: tone()
- Signal on pin 9
- Passive piezo
Wiring the Buzzer to the Arduino Uno R4
Every connection in the circuit above, with the board’s own pin names.
| Buzzer pin | Arduino Uno R4 pin | Why |
|---|---|---|
| Pin 1 | pin 9 | tone() puts a square wave at the note’s frequency on this pin. |
| Pin 2 | GND | Ground. A passive piezo has no polarity. |
A small passive piezo runs straight from a 5 V pin. On the Uno R4, tone() plays on the PWM pins, and the RA4M1’s pins source less current than an Uno’s, which a piezo does not mind but a magnetic buzzer does: switch that one through a transistor.
Pins to leave alone on the Arduino Uno R4
An Uno sketch’s source builds for the R4, but a compiled Uno program will not run on it: different chip. The R4’s pins source less current than an Uno’s, about 8 mA each, so do not drive a relay coil or a motor straight from one.
On a real bench
The Uno R4 Minima fits every Uno shield and every Uno breadboard layout, so wire the Buzzer exactly as you would on an Uno R3. It has a USB-C socket, and its VIN accepts up to 24 V where an Uno R3 stops at 12.
The code
The sketch the circuit above runs. Open it in the editor, change a line and press Run: it compiles in your browser.
const int BUZZER_PIN = 9; // pin 9
// C, E, G, C: an arpeggio, a quarter second a note.
const int NOTES[] = {523, 659, 784, 1047};
void setup() {
Serial.begin(9600);
Serial.println("Playing");
}
void loop() {
for (int i = 0; i < 4; i++) {
tone(BUZZER_PIN, NOTES[i], 200); // returns at once; the note plays on
delay(250);
}
noTone(BUZZER_PIN);
Serial.println("Again");
delay(500);
}
tone(pin, frequency, duration) starts a square wave and returns at once; the note stops on its own after duration milliseconds. That is why the loop still needs delay(250): without it all four notes would start within microseconds of each other.
The frequencies are the notes of a C major arpeggio, from 523 Hz (C5) to 1047 Hz (C6). #include "pitches.h" gives names like NOTE_C5 for the same numbers.
Serial.begin(9600) opens the serial monitor. Serial is the USB port; Serial1 is on pins 0 and 1, which on the R4 are free for other serial devices.
Common mistakes with the Buzzer on the Arduino Uno R4
An active buzzer
An active buzzer has its own oscillator and beeps at one pitch whenever it has power, so tone() cannot change its note. For melodies you need a passive one; the two look the same, but the active kind usually has a sticker on top.
No delay between notes
tone() does not wait for the note to finish. Call it twice in a row and only the second note plays. Wait at least as long as the note, as the sketch does.
Expecting an Uno’s pin current
The R4’s pins are 5 V like an Uno’s, but each one sources only about 8 mA where an Uno’s gives 20. A signal line to the buzzer is fine; an LED or a coil hung straight off the pin is not.
Questions and answers
Can I simulate a buzzer with an Arduino Uno R4 Minima?
Yes. The circuit at the top of this page is an Arduino Uno R4 Minima with a piezo buzzer, running in your browser on a simulated Renesas RA4M1 (Cortex-M4). The simulated piezo reports the frequency it is driven at, and the editor’s scope can show the square wave on the pin. Press Run it in the editor to change the wiring or the code; it is free and needs no account.
Can I play two notes at once?
Not with tone(): it drives one pin at a time. Two buzzers on two pins with your own timing can, or a DFPlayer module for recorded sound.
How do I make it louder?
Drive the piezo from two pins in opposite phase, or through a transistor from a higher voltage. A magnetic buzzer is louder but needs the transistor.
Where do I find the note frequencies?
#include "pitches.h" in the editor gives NOTE_ names from NOTE_B0 (31 Hz) to NOTE_DS8 (4978 Hz), the same list the Arduino toneMelody example uses.
Build your own Buzzer project
Open this circuit in the editor, change the wiring or the code, and keep your version in a free account.