Skip to content

Actividad

Medidor de aplausos

Intermedio | MakeCode, Python | Micrófono, Pantalla LED | Medición, Operadores aritméticos, Selección, Sensores, Variables

Paso 1: Hazlo

¿Qué es?

Mide cuánto tiempo duran los aplausos - o cualquier sonido fuerte - con este temporizador que utiliza el micrófono en el nuevo micro:bit.

Introducción

Guía de programación

Qué aprenderás

  • Cómo desencadenar eventos cuando el micrófono realiza mediciones de sonido fuertes y silenciosas
  • Cómo utilizar el temporizador incorporado del micro:bit
  • Cómo establecer el umbral para eventos fuertes y silenciosos

Cómo funciona

  • Al comienzo del programa se establece el umbral para activar un evento de sonido alto. Utiliza números más grandes para que se necesiten sonidos más fuertes, números más pequeños para sonidos más pequeños. Puedes utilizar cualquier número de 0 a 255.
  • Una variable llamada start está establecida en 0. Esto se utiliza para supervisar cuándo se inició el sonido en voz alta.
  • Cuando el micrófono detecta un sonido alto, la variable start se establece en el tiempo de ejecución actual del micro:bit y se muestra un icono en la pantalla LED para que sepa que el temporizador ha comenzado.
  • El tiempo de ejecución es una medida del tiempo que tu micro:bit ha estado ejecutando tu programa en milisegundos (milésimas de segundo).
  • Cuando el sonido fuerte se detiene, se activa un evento de sonido silencioso.
  • Si ya ha habido un evento ruidoso, y el temporizador ha comenzado, la variable start tendrá un valor mayor (>) 0. En este caso, una variable llamada time se establece en el nuevo tiempo de ejecución actual menos la hora de inicio. Esto nos indica cuánto tiempo duró el sonido alto.
  • Debido a que el tiempo se mide en milisegundos, el programa lo divide entre 1000 para convertirlo a segundos y lo muestra en la pantalla LED.

Qué necesitas

  • Un micro:bit
  • Editor de MakeCode o de Python
  • pilas (opcionales)

Paso 2: Prográmalo

1from microbit import *
2microphone.set_threshold(SoundEvent.LOUD, 150)
3start = 0
4
5while True:
6    if microphone.was_event(SoundEvent.LOUD):
7        start = running_time()
8        display.show(Image.TARGET)
9
10    if microphone.was_event(SoundEvent.QUIET):
11        if start > 0:
12            time = running_time() - start
13            start = 0
14            display.clear()
15            sleep(100)
16            display.scroll(time / 1000)

Paso 3: Mejóralo

  • Experimenta con diferentes umbrales para eventos sonoros fuertes y silenciosos para encontrar los valores que mejor funcionan para ti.
  • Añade código del Proyecto de registro de sonidos para que también puedas medir la intensidad de los aplausos.