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.
 
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.


