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


