Início › Componentes › Buzzer
⬤ Iniciante

🔊 Buzzer Ativo e Passivo

Gerar sons, tons e melodias. Diferenças entre buzzer ativo e passivo.

⏱️ Duração: 45 min
🧩 Componentes: Buzzer Ativo + Passivo

Ativo vs Passivo

🔴

Buzzer Ativo

Tem oscilador interno. Emite som fixo quando alimentado. Basta escrever HIGH/LOW. Mais simples, menos flexível.

digitalWrite()
🔵

Buzzer Passivo

Sem oscilador. Precisa de sinal de frequência variável. A função tone() do Arduino gera a frequência desejada.

tone() / noTone()
🔍 Para distingui-los: o buzzer ativo tem normalmente uma etiqueta no topo ou um pino mais longo (+). O passivo parece um altifalante em miniatura por baixo.

Exercício 1 — Buzzer Ativo: Alerta

🔌 Ligações (Buzzer Ativo)

Arduino→Buzzer
Pino 8→Pino + (longo / marcado)
GND→Pino − (curto)
ex1_buzzer_ativo.ino
const int BUZZER = 8;

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

void loop() {
  // 3 bipes curtos
  for (int i = 0; i < 3; i++) {
    digitalWrite(BUZZER, HIGH);
    delay(100);
    digitalWrite(BUZZER, LOW);
    delay(100);
  }
  delay(1000);  // Pausa 1 segundo
}

Exercício 2 — Buzzer Passivo: Tons

A função tone(pino, frequencia, duracao) gera um sinal quadrado na frequência indicada (Hz).

ex2_tons.ino
const int BUZZER = 9;

// Frequências das notas musicais (Hz)
#define NOTE_C4  262
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_G4  392
#define NOTE_A4  440
#define NOTE_B4  494
#define NOTE_C5  523

void setup() { }

void loop() {
  tone(BUZZER, NOTE_C4, 300);  delay(350);
  tone(BUZZER, NOTE_E4, 300);  delay(350);
  tone(BUZZER, NOTE_G4, 300);  delay(350);
  tone(BUZZER, NOTE_C5, 600);  delay(700);
  noTone(BUZZER);
  delay(1000);
}

Exercício 3 — Melodia: Ode à Alegria

ex3_melodia.ino
const int BUZZER = 9;

// Notas e durações
int notas[]    = {330,330,349,392,392,349,330,294,262,262,294,330,330,294,294};
int duracoes[] = {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  8,  8};

void setup() { }

void loop() {
  for (int i = 0; i < 15; i++) {
    int duracao = 1000 / duracoes[i];
    tone(BUZZER, notas[i], duracao);
    delay(duracao * 1.3);
    noTone(BUZZER);
  }
  delay(3000);  // Pausa antes de repetir
}
Próximo: LDR →