Arduino - Sensor de Sonido - LED

En este tutorial, exploraremos cómo utilizar el sensor de sonido para el control de LEDs. Específicamente, nos adentraremos en dos aplicaciones emocionantes:

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Sensor de Sonido
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
1×Protoboard
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.

Acerca de LED y sensor de sonido

Si no conoces el LED y el sensor de sonido (asignación de pines, cómo funciona, cómo programarlo, ...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado del LED y del sensor de sonido de Arduino

This image is created using Fritzing. Click to enlarge image

Código de Arduino - El interruptor de sonido alterna el LED

El código que se muestra abajo alterna el estado del LED cada vez que se detecta el sonido.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-sound-sensor-led */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define LED_PIN 7 // Arduino pin connected to LED's pin int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor int ledState = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // toggle state of LED ledState = !ledState; // control LED arccoding to the toggled state digitalWrite(LED_PIN, ledState); } }

Pasos R\u00e1pidos

  • Conectar Arduino al PC mediante un cable USB
  • Abrir Arduino IDE, seleccionar la placa y el puerto correctos
  • Copiar el código anterior y abrirlo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
Subir código al IDE de Arduino
  • Aplaude frente al sensor de sonido
  • Observa el cambio en el estado del LED

Explicación del código

¡Lee la explicación línea por línea en los comentarios del código fuente!

Código de Arduino - LED activado por sonido durante un período de tiempo

El código a continuación enciende el LED durante un período de tiempo cuando se detecta el sonido. Después de ese período, el LED se apaga.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-sound-sensor-led */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define LED_PIN 7 // Arduino pin connected to LED's pin #define TIME_PERIOD 5000 // in milliseconds int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // turn on LED digitalWrite(LED_PIN, HIGH); delay(TIME_PERIOD); // turn off LED digitalWrite(LED_PIN, LOW); } }

Por favor, tenga en cuenta que el código anterior utiliza la función delay(), la cual es fácil de entender. Sin embargo, cuando se agrega código adicional, la función delay() puede causar problemas de bloqueo durante el periodo de demora. Para superar esto, el siguiente código implementa un enfoque no bloqueante mediante el uso de la biblioteca ezLED. La biblioteca ezLED, trabajando tras bastidores, utiliza la función millis() en lugar de delay para evitar el bloqueo.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-sound-sensor-led */ #include <ezLED.h> // ezLED library #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define LED_PIN 7 // Arduino pin connected to LED's pin #define TIME_PERIOD 5000 // in milliseconds ezLED led(LED_PIN); // create a LED object that attach to pin LED_PIN int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { led.loop(); // MUST call the led.loop() function in loop() lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); led.turnON(); // turn on immediately led.turnOFF(TIME_PERIOD); // turn off after TIME_PERIOD } }

Pasos R\u00e1pidos

  • Conecta Arduino al PC mediante un cable USB
  • Abre el IDE de Arduino, selecciona la placa y el puerto correctos
  • Navega hasta el icono Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “ezLED”, luego encuentra la biblioteca LED de ArduinoGetStarted
  • Haz clic en el botón Instalar para instalar la biblioteca ezLED.
Biblioteca de LED para Arduino
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
Subir código al IDE de Arduino
  • Aplaude con las manos frente al sensor de sonido
  • Observa el cambio en el estado de los LEDs

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!