Capacitación Arduino · Circuito 13
Módulo micrófono electret con comparador LM393 (tipo KY-038 / FC-04), simulado en Tinkercad Circuits.
El componente
Cómo funciona
digitalRead(2).Truco de simulación
El módulo compara el sonido con el umbral del trimmer y entrega el resultado por DO.
| Parte del módulo | La reemplazamos con | Arduino |
|---|---|---|
| Micrófono | Pulsador + 2 resistencias de 10 kΩ sin presionar = 0 · aplauso = 512 | A0 |
| Trimmer azul | Potenciómetro umbral de 0 a 1023 | A1 |
| Comparador LM393 | El código:if (sonido > umbral) | — |
| LED DO | LED amarillo + 220 Ω | D12 |
Paso 1 · Componentes
Buscar: Arduino
Buscar: Placa de pruebas
Hace de micrófono: presionar = aplauso.
Hace de trimmer azul: fija el umbral.
2 × 10 kΩ (micrófono) y 2 × 220 Ω (LEDs).
Hace de LED DO del módulo.
Se enciende y apaga con cada aplauso.
Paso 2 · Circuito
Mantén presionado el pulsador y gira la perilla del potenciómetro (o usa la barra).
Presiona el pulsador: 512 > umbral → se detecta el aplauso.
Rojo 5V → riel +
Negro GND → riel −
Naranja micrófono → A0
Azul trimmer → A1
Amarillo D12 → LED DO
Verde D13 → LED rojo
Paso 2 · Conexiones
| Alimentación | ||
| Arduino 5V | Riel + inferior | |
| Arduino GND | Riel − inferior | |
| Micrófono (pulsador) | ||
| — | Pulsador sobre la ranura | Columnas 2 y 4 |
| Columna 2 (abajo) | Riel + | |
| — | 10 kΩ | Columna 4 → 8 (fila c) |
| — | 10 kΩ | Columna 8 → 12 (fila b) |
| Columna 12 | Riel − | |
| Columna 8 | Arduino A0 | |
| Trimmer (potenciómetro) | ||
| — | Potenciómetro (fila e) | Columnas 14, 15, 16 |
| Columna 14 | Riel − | |
| Columna 16 | Riel + | |
| Columna 15 (cursor) | Arduino A1 | |
| LED DO (amarillo) | ||
| — | LED cátodo / ánodo (fila e) | Columna 18 / 19 |
| — | 220 Ω | Columna 19 → 23 (fila c) |
| Arduino D12 | Columna 23 | |
| Columna 18 | Riel − | |
| LED del aplauso (rojo) | ||
| — | LED cátodo / ánodo (fila e) | Columna 25 / 26 |
| — | 220 Ω | Columna 26 → 30 (fila c) |
| Arduino D13 | Columna 30 | |
| Columna 25 | Riel − | |
Paso 3 · Código en bloques
sonido umbral estado estadoAnterior ledEncendido · No pongas nada en «al iniciar».
Control
Entrada
Matemáticas
Variables
Salida
Paso 3 · Código C++
// Módulo de sonido virtual: // pulsador = micrófono, potenciómetro = trimmer const int PIN_MICROFONO = A0; const int PIN_TRIMMER = A1; const int PIN_LED_DO = 12; const int PIN_LED = 13; int sonido = 0; int umbral = 0; int estado = 0; int estadoAnterior = 0; int ledEncendido = 0; void setup() { pinMode(PIN_LED_DO, OUTPUT); pinMode(PIN_LED, OUTPUT); }
void loop() { sonido = analogRead(PIN_MICROFONO); umbral = analogRead(PIN_TRIMMER); // Esto es lo que hace el comparador LM393 if (sonido > umbral) { estado = 1; digitalWrite(PIN_LED_DO, HIGH); } else { estado = 0; digitalWrite(PIN_LED_DO, LOW); } if (estado == 1 && estadoAnterior == 0) { // empieza un aplauso if (ledEncendido == 0) { ledEncendido = 1; digitalWrite(PIN_LED, HIGH); } else { ledEncendido = 0; digitalWrite(PIN_LED, LOW); } delay(200); // ignora el eco del mismo aplauso } estadoAnterior = estado; }
Paso 4 · Simular
| Ningún LED enciende | Revisa la orientación (pata doblada = ánodo, hacia la resistencia). |
| El LED rojo cambia solo | Falta la 10 kΩ de la columna 8 a la 12: A0 queda "flotando". |
| Nunca detecta el aplauso | Baja el umbral: con el pulsador, A0 llega a 512. |
| Detecta sin presionar | El umbral está en 0: súbelo un poco. |
Paso 5 · Kit real
| Sensor | Arduino |
|---|---|
| DO | D2 |
| + | 5V |
| G | GND |
| AO | sin conectar |
Quita el pulsador, las dos 10 kΩ, el potenciómetro y el LED amarillo: el módulo real ya trae todo eso. El LED rojo y su 220 Ω se quedan.
El comparador ahora está en el módulo. Borra las dos lecturas analogRead y el if (sonido > umbral), y escribe en su lugar:
estado = digitalRead(2);
Si tu módulo tiene la salida invertida (LOW con sonido), usa estado = !digitalRead(2);
Alternativa · OpenCircuits
if (sonido > umbral). Variables: estado estadoAnterior ledEncendido.
Sonido
Control
Matemáticas
Variables
Salida
// C++ code // int estado = 0; int estadoAnterior = 0; int ledEncendido = 0; void setup() { pinMode(2, INPUT); pinMode(13, OUTPUT); }
void loop() { if (digitalRead(2) == HIGH) { estado = 1; } else { estado = 0; } if (estado == 1 && estadoAnterior == 0) { if (ledEncendido == 0) { ledEncendido = 1; digitalWrite(13, HIGH); } else { ledEncendido = 0; digitalWrite(13, LOW); } delay(200); // Wait for 200 millisecond(s) } estadoAnterior = estado; }
digitalRead(2).Para seguir
Muestra en el Monitor serie cuántos aplausos van. Pista: Serial.println() y una variable que sume 1.
Que el LED cambie solo con dos aplausos seguidos en menos de 1 segundo. Pista: millis().
Agrega el buzzer en D8 y haz que suene un pitido corto cada vez que detecte un aplauso.
Con 3 LEDs (verde, amarillo, rojo): cada aplauso avanza al siguiente color.