Skip to content

Atividade

Cronômetro de uso da luz

Avançado | MakeCode, Python | Botões, Sensor de luz, Visor LED | 13 Clima, Entrada/saída, Lógica booleana, Sensores, Variáveis

Primeiro passo: o projeto

O que é?

Este projeto calcula quanto tempo suas as luzes ficam acesas, no intuito de monitorar seu consumo de energia. Também é possível usar este projeto para acompanhar o período de incidência de luz solar em um projeto de estação meteorológica.

Este projeto é parte de uma série que oferece atividades voltadas para a solução de problemas e criação de protótipos, cujo objetivo é explorar a tecnologia enquanto solução para atingir os Objetivos Globais de Desenvolvimento Sustentável da ONU.

O que você aprenderá:

  • Como programar usando sensores para monitorar eventos do mundo real;
  • Como colocar um registrador de dados para gravar informações confiáveis;
  • Coletar e organizar dados ao longo do tempo, a fim de identificar padrões de uso de energia;
  • Analisar dados e interpretá-los para provocar mudanças de comportamento;
  • Como um usuário pode alterar variáveis para configurar um sistema antes de usá-lo.

Como usá-lo:

  • Antes de tudo, use o Medidor de luminosidade para descobrir por quanto tempo sua lâmpada fica ligada e desligada. Certifique-se de alocar o micro:bit responsável pelo monitoramento no mesmo local e com as mesmas condições de iluminação, garantindo que a luz do sol não gere uma leitura falsa de que suas lâmpadas estão ligadas;
  • Coloque o leitor de luz no código, na qual a variável LIGHT (LUZ) está definida. O valor que atribuímos a ela é 100, mas provavelmente será necessário alterá-lo antes de baixar o código em seu micro:bit;
  • Conecte o conjunto de baterias ao seu micro:bit e coloque-o abaixo da luz que você deseja monitorar. Quando a luz estiver apagada, você verá um ponto aceso no meio do painel, que acende todos os pontos quando a luz está ligada. Se o todos os pontos não acenderem, mude a posição do micro:bit (conforme mostrado no vídeo) ou considere usar o projeto Medidor de luminosidade novamente para encontrar o nível de luz;
  • O micro:bit irá cronometrar o tempo, e quando você pressionar o botão B será mostrado, em minutos, por quanto tempo a luz ficou ligada.

Como funciona:

  • O programa usa uma variável booleana chamada timing para controlar o programa. Variáveis booleanas só podem ter dois valores: verdadeiro ou falso;
  • Se a leitura do sensor de luz estiver acima do nível que você definiu, o temporizador é iniciado e todas as luzes do visor LED serão acesas. Se a leitura estiver abaixo do nível definido, o cronômetro é parado, acendendo apenas uma luz no visor;
  • Este projeto usa histerese para garantir que o temporizador não ligue e desligue com muita frequência quando o nível de luz estiver mudando ligeiramente e próximo do limite (limiar). Ele cria uma faixa maior perto do limite, que deve ser ultrapassado antes de o temporizador ser ligado ou desligado;
  • A histerese é uma característica comum nos sistemas de controle que usam sensores, como em sistemas de aquecimento que possuem um termostato, por exemplo. Se você definir seu termostato para uma certa temperatura, você não vai querer que o aquecimento fique ligando e desligando repetidamente quando a temperatura se aproximar do número que você definiu. A histerese impede que isso aconteça.

Itens necessários:

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

Segundo passo: é hora de programar

1from microbit import *
2display.show('L')
3
4LIGHT = 100  # <<< Enter your 'measured' reading here
5
6HYSTERESIS = 8
7LIGHT -= (HYSTERESIS/2)
8DARK = LIGHT - HYSTERESIS
9ON_IMAGE = Image('99999:99999:99999:99999:99999')
10OFF_IMAGE = Image('00000:00000:00900:00000:00000')
11timing = False
12start_time = 0
13total_time = 0
14reading = display.read_light_level()
15sleep(1000)
16
17def show_number(n):
18    # Make number display the same as MakeCode
19    if len(str(n)) == 1:
20        display.show(n)
21    else:
22        display.scroll(n)
23
24while True:
25    reading = display.read_light_level()
26    if reading < DARK:
27        if timing:
28            # it has just gone dark, update timer for 'on' time
29            end_time = running_time()
30            total_time += (end_time - start_time)
31            timing = False
32        
33    elif reading >= LIGHT:
34        if not timing:
35            # it has just gone light, start the timer
36            start_time = running_time()
37            timing = True
38        
39    if button_b.was_pressed():
40        # calculate and display cumulative time in minutes
41        minutes = total_time / 60000
42        if timing:
43            # adjust live for current ON time
44            minutes += (running_time() - start_time) / 60000
45        display.clear()
46        show_number(round(minutes))  # whole numbers only
47        sleep(500)
48
49    # update the display with the ON/OFF state
50    if timing:
51        display.show(ON_IMAGE)
52    else:
53        display.show(OFF_IMAGE)
54    sleep(1000)
55
56        

Terceiro passo: vamos deixar o código ainda melhor

  • Altere os padrões mostrados no visor LED ou reduza seu brilho, permitindo que as baterias durem mais;
  • Use o tempo registrado para calcular seu consumo de eletricidade e estimar quanto irá custar. Os detalhes estão em nosso projeto Calculadora de custo de energia;
  • Use o mesmo código para medir as horas de luz solar. Use o projeto Medidor de luz não só para obter as medições da luz solar que incidem no micro:bit, mas também para registrar quando estiver nublado. Talvez seja necessário fazer uma capa para seu micro:bit, usando um recipiente de alimentos de plástico com uma tampa translúcida, no intuito de difundir a luz e proteger o micro:bit da chuva.