Esta característica de la Librería Circuit Playground está solo disponible en la Circuit Playground Bluefruit.

La Circuit Playground Bluefruit tiene un sensor de sonido situado al lado derecho de la tarjeta, encima de un símbolo de oreja impreso en la tarjeta, y debajo del botón B. Este sensor puede ser utilizado para detectar niveles de sonido.

Mientras que la Circuit Playground Express tiene un sensor de sonido, esta característica de la Librería Circuit Playground no está disponible en la Express. La Express y la Bluefruit tienen chips de microcontroladora diferentes. En la SAM21 de la Express no es capaz de manejar las funcionalidades de sonido de la Librería Circuit Playground.

Agregue el siguiente código a su code.py. Recuerde que si necesita ayuda, puede revisar aquí.

"""
This example prints out sound levels using the sound sensor on a Circuit Playground Bluefruit.
Try making sounds towards the board to see the values change.

NOTE: This example does NOT support Circuit Playground Express.
"""
import time
from adafruit_circuitplayground import cp

while True:
    print("Sound level:", cp.sound_level)
    time.sleep(0.1)

Abra la consola serial para ver como se imprimen los niveles de sonido. ¡Trate de hacerle sonidos a su Circuit Playground para ver los valores cambiar!

Vamos a observar el código. Primero, vamos a importa a time y a cp.

Dentro de nuestro ciclo, imprimimos hacia la consola serial Sound level: seguido del valor del nivel de sonido, cp.sound_level. Luego tenemos un time.sleep(0.1) para dar una pausa a la velocidad con que se imprime en la consola serial. Si va muy rápido, ¡es difícil de leer!

Grafiando el Nivel de Sonido

¡Vamos a observar estos valores en el trazador gráfico de Mu! Agregue el siguiente código en su code.py:

"""
This example prints out sound levels using the sound sensor on a Circuit Playground Bluefruit. If
you are using Mu, open the plotter to see the sound level plotted. Try making sounds towards the
board to see the values change.

NOTE: This example does NOT support Circuit Playground Express.
"""
import time
from adafruit_circuitplayground import cp

while True:
    print("Sound level:", cp.sound_level)
    print((cp.sound_level,))
    time.sleep(0.1)

Este código es casi idéntico, pero hemos agregado otra línea print((cp.sound_level,)).

Nótese que el trazador gráfico de Mu espera valores de tipo tupla para graficar. Las tuplas en Python vienen en paréntesis () y separados por coma. Si tienes dos valores en una tupla se vería así (1.0, 3.14). Ya que solo tenemos un valor, lo vamos a imprimir como  (1.0,) - note los paréntesis alrededor del número, así como una coma luego del número. Por eso los paréntesis extra y la coma en print((cp.sound_level,)).

Haga click en el botón de Plotter en la parte superior de Mu para ver el trazador gráfico. Ahora trate de hacer sonidos hacia la tarjeta para ver como la línea del trazador sube. Trate de quedarse muy cayado para ver como la línea baja. ¡Diviértase!

Sonidos Fuertes

¿Y que pasa si quieres usar el sonido como una entrada? ¡Con la característica de loud_sound() puedes lograrlo! Puedes usarlo para detectar aplausos, chasquitos o cualquier otro sonido lo suficientemente fuente, como una entrada.

El siguiente ejemplo prende los LEDs tipo NeoPixel cuando un sonido bastante fuerte ocurre. Agregue el siguiente código a su code.py:

"""
This example lights up the NeoPixels on a Circuit Playground Bluefruit in response to a loud sound.
Try snapping or clapping near the board to trigger the LEDs.

NOTE: This example does NOT support Circuit Playground Express.
"""
import time
from adafruit_circuitplayground import cp

while True:
    if cp.loud_sound():
        cp.pixels.fill((50, 0, 50))
        time.sleep(0.2)
    else:
        cp.pixels.fill((0, 0, 0))

Trata de aplaudirle, hacerle charquidos o gritarle a tu tarjeta. ¡NeoPixeles morados!

Vamos a ver el código. Lo primero es importar a time y a cp.

Dentro de nuestro ciclo, comenzamos preguntando si un sonido fuerte ocurre con if cp.loud_sound(), prenda los NeoPixeles con un morado muy ténue con cp.pixels.fill((50, 0, 50)). Luego le agregamos un time.sleep(0.2) para que los LEDs se puedan quedar prendidos lo suficiente para poderlos verlos. Sin eso, solamente estarían prendidos por un instante.

Luego decimos que de otro modo, apague los pixeles al configurarlos con el color (0, 0, 0). Sin esto, los pixeles se prenden y se quedan prendidos.

Umbral de Sonidos Fuertes

Si encuentras muy fácil o muy difícil que se dispare un sonido fuerte, puedes bajar o aumentar el umbral. loud_sound() tiene una configuración por omisión de sound_threshold=200. Para hacerlo más difícil de disparar, puedes aumentar el umbral. Agrega el siguiente código a tu code.py:

"""
This example lights up the NeoPixels on a Circuit Playground Bluefruit in response to a loud sound.
Try snapping or clapping near the board to trigger the LEDs.

NOTE: This example does NOT support Circuit Playground Express.
"""
import time
from adafruit_circuitplayground import cp

while True:
    if cp.loud_sound(sound_threshold=250):
        cp.pixels.fill((50, 0, 50))
        time.sleep(0.2)
    else:
        cp.pixels.fill((0, 0, 0))

El código es exáctamente el mismo, excepto que hemos aumentado el umbral al configurar sound_threshold=250, haciendo que sea requerido un sonido un poco más fuerte para lograr dispararlo.

Si encuentras que es muy difícil de disparar, puedes bajar el umbral, haciendo que un sonido más delicado lo pueda disparar. Trata de configurarlo ensound_threshold=150 para ver la diferencia.

Ahora puedes usar sonido como una entrada en la Circuit Playground Bluefruit. ¡Trata de combinarlo con otros conceptos que hemos aprendido en esta guía par probar que otras cosas puedes hacer!

This guide was first published on Jul 28, 2020. It was last updated on Jul 28, 2020.

This page (Sonido) was last updated on Nov 04, 2020.