⬤ Iniciante · Grupo 2 — Som e Áudio
🔔 Buzzer Ativo
⏱️ 20 min
🧩 Módulo buzzer ativo · Digital
📦 Módulo #20
🔔 Buzzer Ativo vs. Passivo — Diferenças Fundamentais
🔔 Buzzer Ativo (#20)
- Oscilador interno — frequência fixa
- Controlo:
digitalWrite(HIGH/LOW)
- Sem controlo de tom ou melodia
- Mais simples — perfeito para alertas
- Identificação: etiqueta "+" marcada
🎵 Buzzer Passivo (#21)
- Sem oscilador — precisa de sinal externo
- Controlo:
tone(pino, frequência)
- Melodias e tons variados
- Mais complexo — mais expressivo
- Identificação: PCB sem marcação de polaridade
💡Dica de identificação: Liga VCC e GND ao buzzer sem ligar o pino de sinal. Se emitir som constante é o ativo. Se ficar em silêncio é o passivo (precisa de sinal PWM).
🔌 Pinagem — Buzzer Ativo
VCCAlimentação → 5V do Arduino
GNDMassa → GND do Arduino
SSinal → pino D8 (HIGH = som activo)
⚠️O buzzer ativo do Kit B 37 usa lógica normal: HIGH activa o som, LOW desactiva. Alguns módulos usam lógica invertida — se o teu buzzer soa ao contrário, troca HIGH por LOW no código.
💻 Alerta Sonoro Básico
ex_buzzer_ativo.ino
#define BUZZER_PIN 8
void bip(int duracao_ms) {{
digitalWrite(BUZZER_PIN, HIGH);
delay(duracao_ms);
digitalWrite(BUZZER_PIN, LOW);
}}
void setup() {{
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW); // Garantir silêncio ao início
Serial.begin(9600);
}}
void loop() {{
Serial.println("BIP simples");
bip(200);
delay(1000);
}}
🚨 Padrões de Alarme
ex_buzzer_padroes.ino
#define BUZZER_PIN 8
void bip(int ms) {{
digitalWrite(BUZZER_PIN, HIGH); delay(ms);
digitalWrite(BUZZER_PIN, LOW);
}}
// Padrão: 3 bips curtos (confirmação)
void confirmacao() {{
for (int i = 0; i < 3; i++) {{ bip(80); delay(80); }}
}}
// Padrão: 1 bip longo (alerta)
void alerta() {{
bip(800); delay(200);
}}
// Padrão: SOS morse (... --- ...)
void sos() {{
int s = 100, l = 300, p = 100;
for (int i=0;i<3;i++) {{ bip(s); delay(p); }}
delay(200);
for (int i=0;i<3;i++) {{ bip(l); delay(p); }}
delay(200);
for (int i=0;i<3;i++) {{ bip(s); delay(p); }}
}}
void setup() {{ pinMode(BUZZER_PIN, OUTPUT); }}
void loop() {{
confirmacao(); delay(2000);
alerta(); delay(2000);
sos(); delay(3000);
}}
🌡️ Alerta de Temperatura com DHT + Buzzer
ex_buzzer_temp.ino
#include <DHT.h>
#define BUZZER_PIN 8
#define DHT_PIN 2
#define TEMP_MAX 28.0
DHT dht(DHT_PIN, DHT11);
void setup() {{
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
dht.begin(); Serial.begin(9600);
}}
void loop() {{
delay(2000);
float t = dht.readTemperature();
if (isnan(t)) return;
Serial.print("T: "); Serial.println(t);
if (t > TEMP_MAX) {{
// Alarme de temperatura alta
digitalWrite(BUZZER_PIN, HIGH); delay(500);
digitalWrite(BUZZER_PIN, LOW); delay(500);
}}
}}
🏆 Para ir mais longe
- Cria um padrão morse para a letra do teu nome — programa o buzzer para o reproduzir
- Usa millis() em vez de delay() no padrão de alarme — assim outros sensores são lidos sem bloqueio
- Combina buzzer ativo + LED 2 cores: bip + vermelho no alerta, silêncio + verde no normal
- Compara o volume do buzzer ativo com o passivo — a que distância cada um é audível?