Skip to content

Atividade

Cronômetro touch

Intermediário | MakeCode, Python | Botões, Logotipo sensível ao toque, Visor LED | Entrada/saída, Lógica booleana, Medição, Operadores aritméticos, Variáveis

Primeiro passo: o projeto

O que é?

Crie um cronômetro de verdade utilizando o sensor do logo sensível ao toque do novo micro:bit como botão extra.

Introdução

Código

O que você aprenderá:

  • Como usar o sensor do logo sensível ao toque do novo micro:bit como um botão extra em projeto prático;
  • Como usar variáveis e operadores matemáticos para medir o tempo;
  • Como usar operadores matemáticos para converter unidades (milissegundos para segundos);
  • O que é uma variável booleana e como ela pode ser usada para controlar o fluxo de um programa.

Como usá-lo:

  • Baixe o programa e copie-o para o seu novo micro:bit com alto-falante integrado;
  • Pressione o botão A para iniciar o cronômetro. Uma animação de um coração batendo é exibida no visor LED enquanto ele está cronometrando;
  • Pressione o botão B para pará-lo. É possível começar e parar a contagem quantas vezes quiser que o tempo continuará sendo somado, como em um cronômetro de verdade;
  • Pressione o logo dourado, localizado na parte da frente do micro:bit, para mostrar a contagem do tempo em segundos;
  • Pressione o botão reset, que fica na parte traseira do micro:bit, para zerar a contagem.

Como funciona:

  • O micro:bit regista há quanto tempo está ligado em milissegundos (milésimos de segundo). Isto é chamado de tempo de execução;
  • Ao pressionar o botão A, a variável start (início) passa a registrar o tempo de execução atual;
  • Ao pressionar o botão B, o tempo inicial é subtraído do novo tempo de execução atual, calculando o tempo que passou desde que o cronômetro foi ativado. A diferença é adicionada ao tempo total, que é gravada numa variável chamada time;
  • Ao pressionar o logo touch, o programa mostra no visor LED o tempo total decorrido. O tempo é dividido por 1000 para ser convertido de milissegundos (milésimos de segundo) em segundos. O programa utiliza o operador de divisão de números inteiros, para dar um resultado em números naturais;
  • O programa também usa uma variável booleana chamada running (em funcionamento) para controlar o programa. Variáveis booleanas só podem ter dois valores: verdadeiro ou falso. Se o resultado de running for verdadeiro, então o cronômetro foi iniciado; porém, se o resultado de running for falso, o cronômetro não foi iniciado ou foi parado;
  • Enquanto o resultado de running for verdadeiro, um laço de repetição (loop) manterá a sequência animada do coração aparecendo no visor LED;
  • O tempo só aparecerá quando você pressionar o logo se o cronômetro tiver sido parado, caso o resultado de runningnão seja verdadeiro;
  • O código evita leituras incorretas certificando-se de que a variável time só é alterada ao pressionar o botão B, que é quando já se deu início ao cronômetro caso o resultado de running seja verdadeiro.

Itens necessários:

  • Novo micro:bit com alto-falante (ou o simulador MakeCode);
  • Editor MakeCode ou Python;
  • Conjunto de baterias (opcional).

Segundo passo: é hora de programar

1from microbit import *
2time = 0
3start = 0
4running = False
5
6while True:
7    if running:
8        display.show(Image.HEART)
9        sleep(300)
10        display.show(Image.HEART_SMALL)
11        sleep(300)
12    else:
13        display.show(Image.ASLEEP)
14    if button_a.was_pressed():
15        running = True
16        start = running_time()
17    if button_b.was_pressed():
18        if running:
19            time += running_time() - start
20        running = False
21    if pin_logo.is_touched():
22        if not running:
23            display.scroll(int(time/1000))

Terceiro passo: vamos deixar o código ainda melhor

  • Modifique o programa para ser possível redefinir o tempo ao agitar o micro:bit;
  • Faça com que o temporizador seja mais preciso por meio de números fracionários em vez de inteiros;
  • Adicione uma função de tempo de volta, para que, enquanto o cronômetro estiver funcionando, ao pressionar o logo touch, o tempo seja exibido naquele instante. Certifique-se de que esse valor não é adicionado ao total da variável tempo.