Skip to content

Atividade

Medidor de aplausos

Intermédio | MakeCode, Python | Ecrã LED, Microfone | Medições, Operações aritméticas, Seleção, Sensores, Variáveis

Passo 1: Faz tu mesmo

O que é isto?

Mede quanto tempo dura o som dos aplausos - ou de qualquer som alto - com este temporizador que usa o microfone do novo micro:bit.

Introdução

Guia do código

O que é que vais aprender

  • Como lançar eventos quando o microfone capta sons baixos e altos
  • Como usar o temporizador integrado do micro:bit
  • Como definir o limite para eventos altos e silenciosos

Como é que funciona

  • No início do programa, é definido o limite para acionar um evento sonoro alto. Usa números maiores para registar sons mais altos, e números menores para sons mais baixos. Podes usar qualquer número entre 0 e 255.
  • Uma variável chamada start (início) está definida como 0. Isto é usado para registar quando o som alto começa.
  • 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 ecrã de LEDs para que saibas que o temporizador começou.
  • Tempo de execução é a medida do tempo em milissegundos (milésimos de um segundo) que o teu micro:bit correu o programa.
  • Quando o som alto pára, é lançado um evento sonoro silencioso.
  • Se já houve um evento alto e o temporizador iniciou, a variável start vai ter um valor maior (>) 0. Neste caso, a variável time (tempo) é definida com o tempo atual menos o tempo de início. Isto diz-nos quanto tempo o som alto durou.
  • Como o tempo é medido em milissegundos, o programa divide-o em 1000 para convertê-lo em segundos, mostrando-o em seguida no ecrã de LEDs.

Do que é que precisas

  • Um micro:bit
  • Editor MakeCode ou Python
  • Suporte de pilhas (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)

Passo 3: Melhora-o

  • De maneira a encontrares os valores que se adequam melhor às tuas necessidades, experimenta diferentes valores para definir os limites para eventos sonoros altos e baixos.
  • Acrescente o código do Projeto Registador de Som de maneira a conseguires também medir quão alto foi o aplauso.