Início›Módulos›Sensor de Som (Grande)
⬤ Intermédio · Grupo 2 — Som e Áudio

🎙️ Sensor de Som (Grande)

⏱️ 30 min 🧩 Sensor de som grande · Analógico 📦 Módulo #13

Nesta página

🔬 Sobre o Sensor de Som Grande

O sensor de som grande (#13) usa um microfone electret de maior sensibilidade com saída analógica. Produz um valor proporcional ao volume instantâneo — ideal para medir amplitude sonora, construir visualizadores de áudio ou sistemas de controlo por volume.

Saída
Analógica
AO: 0–1023 proporcional
Pino Arduino
A0
analogRead()
Alimentação
5V
VCC do Arduino
Valor em silêncio
~512
Centro da escala (DC offset)
Resposta
~100 Hz–8 kHz
Gama de frequências
ℹ️
Em silêncio o sensor lê aproximadamente 512 (metade de 1023) — o sinal de áudio oscila em torno deste valor DC. Para medir volume, calcula o desvio em relação a 512: abs(leitura - 512).

🔌 Pinagem

VCCAlimentação → 5V do Arduino
GNDMassa → GND do Arduino
AOSaída analógica → A0 do Arduino

💻 Leitura Analógica de Volume

ex_som_gra.ino
#define MIC_PIN A0
#define AMOSTRAS 50    // Médias de 50 leituras

int lerVolume() {{
  long soma = 0;
  for (int i = 0; i < AMOSTRAS; i++) {{
    int val = analogRead(MIC_PIN);
    soma += abs(val - 512);   // Desvio do centro
    delay(1);
  }}
  return soma / AMOSTRAS;    // Amplitude média
}}

void setup() {{ Serial.begin(9600); }}

void loop() {{
  int vol = lerVolume();
  Serial.print("Volume: "); Serial.println(vol);
}}

📊 Medidor de dB Simplificado com Barra de LEDs

ex_som_vumeter.ino
#define MIC_PIN  A0
#define AMOSTRAS 30

// 4 LEDs como barra de nível (pinos D9–D12)
int leds[] = {{9, 10, 11, 12}};
#define N_LEDS 4

int lerVolume() {{
  long soma = 0;
  for (int i = 0; i < AMOSTRAS; i++) {{
    soma += abs(analogRead(MIC_PIN) - 512);
    delay(1);
  }}
  return soma / AMOSTRAS;
}}

void setup() {{
  for (int i = 0; i < N_LEDS; i++) pinMode(leds[i], OUTPUT);
  Serial.begin(9600);
}}

void loop() {{
  int v = lerVolume();
  int nivel = map(v, 0, 80, 0, N_LEDS);
  nivel = constrain(nivel, 0, N_LEDS);
  for (int i = 0; i < N_LEDS; i++)
    digitalWrite(leds[i], i < nivel ? HIGH : LOW);
  Serial.println(v);  // Para Serial Plotter
}}

📈 Visualizar Forma de Onda no Serial Plotter

ex_som_onda.ino
#define MIC_PIN A0

void setup() {{ Serial.begin(115200); }}  // Baud alto para mais resolução temporal

void loop() {{
  // Envia o valor bruto — abre Serial Plotter para ver a onda
  Serial.println(analogRead(MIC_PIN));
  // Sem delay — máxima taxa de amostragem
}}
💡
Abre Ferramentas → Plotter Série com baud 115200. Fala, assobia ou bate palmas perto do microfone — verás a forma de onda em tempo real. Podes ver visualmente a diferença entre sons graves e agudos.

🏆 Para ir mais longe

Kit B 37 · PR.FT6_15 · Arduino UNO · Raspberry Pi · Início · led.dge.medu.pt