# Arduino project: use an active buzzer

> Learn how to make a sound with an Arduino and an active buzzer, wiring it to a digital pin and toggling it HIGH and LOW with digitalWrite() and delays.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-03-25 | Topics: [Arduino](https://flaviocopes.com/tags/electronics/) | Canonical: https://flaviocopes.com/arduino-project-active-buzzer/

In this project we're going to use the Arduino to generate a sound using an active buzzer.

First connect the buzzer to a wire:

![Active buzzer component with red and black wires attached to positive and negative terminals](https://flaviocopes.com/images/arduino-project-active-buzzer/IMG_3638.jpg)

![Buzzer connected to longer wire with red positive and black negative leads for Arduino connection](https://flaviocopes.com/images/arduino-project-active-buzzer/IMG_3637.jpg)

The buzzer has a `+` pole, I used the red wire for that (a good habit).

Then connect the `-` wire to GND on the Arduino, and the `+` wire to a digital output pin, in this case I picked pin #9:

![Arduino Uno board with buzzer wired - black wire to GND and red wire to digital pin 9](https://flaviocopes.com/images/arduino-project-active-buzzer/IMG_3642.jpg)

Now we switch to the Arduino program. To generate a sound we need to write a HIGH value to the buzzer `+` pin, delay for a tiny amount of time, for example a millisecond, then write a LOW value on the same pin:

```c
int delay_ms = 5;
int buzzer_pin = 9;

void setup() {
    pinMode(buzzer_pin, OUTPUT);
}

void loop() {
    digitalWrite(buzzer_pin, HIGH);
    delay(delay_ms);

    digitalWrite(buzzer_pin, LOW);
    delay(delay_ms);
}
```

Load the program on the Arduino and the buzzer will emit a low sound.

Try changing the delay_ms variable value to change the sound.

You can then go fancy by making it play different sounds, with a program like this:

```c
int buzzer_pin = 9;

void setup() {
    pinMode(buzzer_pin, OUTPUT);
}

void play(int ms, int delay1, int delay2) {
    for (int i = 1; i <= ms; i++) {
        digitalWrite(buzzer_pin, HIGH);
        delay(delay1);
        digitalWrite(buzzer_pin, LOW);
        delay(delay2);
    }
}

void loop() {
    play(100, 1, 1);
    play(100, 2, 2);
    play(100, 1, 1);
    play(100, 2, 2);
    play(100, 1, 1);
    play(50, 2, 1);
    play(100, 3, 2);
    play(100, 4, 4);

}
```
