Skip to content

Atividade

Medidor de aplausos

Intermediário | MakeCode, Python | Microfone, Visor LED | Medição, Operadores aritméticos, Seleção, Sensores, Variáveis

Primeiro passo: o projeto

O que é?

Meça o tempo de duração dos aplausos — ou de qualquer som alto — com este temporizador que usa o microfone do novo micro:bit.

Introdução

Código

O que você aprenderá:

  • Como acionar eventos quando o microfone captar sons baixos e altos;
  • Como usar o temporizador integrado do micro:bit;
  • Como definir o limite para eventos altos e silenciosos.

Como funciona:

  • O limite (limiar) para que um evento sonoro alto seja ativado é definido no início do programa. Use números maiores para registar sons mais altos e números menores para sons mais baixos. É possível usar qualquer número entre 0 e 255;
  • Uma variável chamada start (início) é definida com o valor 0. Isto é usado para registar quando o som alto começar;
  • Quando o microfone detecta um som alto, a variável start é definida com o tempo atual de execução do micro:bit e um ícone é mostrado no visor LED, para indicar que o temporizador foi iniciado;
  • O tempo de execução é a medida, em milissegundos (milésimos de um segundo), de quanto tempo seu micro:bit está rodando o programa;
  • Quando o som alto parar, um evento sonoro silencioso será acionado;
  • Se já ocorreu um evento alto e o temporizador já iniciou, a variável start vai ter um valor maior (>) que 0. Neste caso, a variável time (tempo) é definida com o tempo atual menos o tempo de início. Isto nos diz o tempo de duração som alto;
  • Como o tempo é medido em milissegundos, o programa divide-o por 1000 para convertê-lo em segundos, mostrando-o em seguida no visor LED.

Itens necessários:

  • Um micro:bit;
  • Editor MakeCode ou Python;
  • Conjunto de baterias (opcional).

Passo 2: Cria o teu código

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)

Terceiro passo: vamos deixar o código ainda melhor

  • A fim de encontrar valores que se adéquem melhor às suas necessidades, teste valores de limiar diferentes para eventos sonoros altos e baixos;
  • Implemente o código do Projeto Registador de Som para medir também a altura do aplauso.