Ativo vs Passivo
🔴
Buzzer Ativo
Tem oscilador interno. Emite som fixo quando alimentado. Basta escrever HIGH/LOW. Mais simples, menos flexível.
🔵
Buzzer Passivo
Sem oscilador. Precisa de sinal de frequência variável. A função tone() do Arduino gera a frequência desejada.
🔍
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
}