Skip to content

Atividade

Temporizador de energia luminosa

Avançado | MakeCode, Python | Botões, Ecrã LED, Sensor de luz | 13 Clima, Entrada/Saída, Lógica Booleana, Sensores, Variáveis

Passo 1: Faz tu mesmo

O que é isto?

Calcula quanto tempo as tuas luzes ficam acesas para fazeres a monitorização do teu consumo de energia. Também podes usar este projeto para calcular as horas de exposição solar numa estação meteorológica.

Este projeto é parte de uma série que oferece atividades que procuram solucionar problemas e criar protótipos para explorar a tecnologia enquanto solução para os desafios dos Objetivos de Desenvolvimento Sustentável.

O que vais aprender

  • como usar sensores e código para monitorizar eventos do mundo real
  • colocar um registador de dados para gravar dados fiáveis
  • Recolhe e compara dados ao longo de um período de tempo para identificar padrões de consumo energético
  • interpreta e analiza os dados de maneira a criar mudanças de comportamento
  • como é que as variáveis podem ser alteradas por um utilizador para configurar um sistema antes de este ser usado

Como usá-lo

  • Primeiro usa o projeto medidor de energía luminosa para descobrir quando é que as luzes estão ligadas ou desligadas . Assegura-te de fazer isto no mesmo local, com as mesmas condições de luz onde vais colocar o micro:bit; e certifica-te de que a luz do dia não desencadeia uma leitura falsa como se as lâmpadas estivessem ligadas.
  • Coloca a tua leitura de luz no código onde a variável LIGHT está definida. Definimos o número 100, mas é provavel que tenhas de alterar isso antes de descarregares o código no teu micro:bit.
  • Liga as pilhas ao micro:bit e depois coloca-o debaixo da luz que queres monitorizar. Devias ver um ponto de luz no ecrã de LEDs quando as luzes estão apagadas e quando as luzes estão acesas, todo o ecrã devia acender. Se não estiver a funcionar, considera usar o projeto medidor de luz novamente para encontrar o nível da luz quando esta estiver acesa, ou muda o micro:bit de sítio.
  • O micro:bit vai guardar o tempo de espera; e quando carregares no botão B vai aparecer escrito o tempo (em minutos) que a luz esteve acesa.

Como é que funciona

  • O programa usa uma variável booleana chamada timing (temporizador) para controlar o programa. Variáveis booleanas só podem ter dois valores: true (verdadeiro) ou false (falso).
  • Se a leitura do sensor de luz estiver acima do valor que tu definiste, a contagem de tempo vai iniciar e o LED acende. Se a leitura for abaixo do valor definido, o temporizador pára e aparece um ponto no ecrã.
  • Este projeto usa a histerese para assegurar-se que o temporizador não se desliga e liga com muita frequência quando o nivel de luz muda ligeiramente perto do valor estabelecido para iniciar o temporizador. Assim é criada àrea maior perto do nivel que terá de ser ultrapassada antes do o temporizador se ligar ou desligar.
  • A histerese é uma característica comum dos sistemas de controle que usam sensores; por exemplo, em sistemas de aquecimento que têm termostato. Se definires o teu termostato para uma certa temperatura, não vais querer que o aquecimento esteja sempre a ligar-se e a desligar-se repetidamente quando a temperatura está perto do número que definiste. A histeresse impede que isso aconteça.

Do que é que precisas

  • micro:bit
  • Editor MakeCode ou Python
  • suporte de pilhas (recomendado)

Passo 2: Cria o teu código

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        

Passo 3: Melhora-o

  • Altera os padrões mostrados no ecrã de LEDs para fazer com que as pilhas durem mais tempo, ou então diminui o brilho do ecrã LED.
  • Usa o tempo registado para descobrir quanta eletricidade usaste e quanto é que pode custar. Os detalhes estão no nosso projeto de calculadora de custo energético
  • Usa o mesmo código para medir as horas da luz solar. Usa o projeto medidor de luz para calcular o valor da luz quando o sol bate no micro:bit ou quando o tempo está na nublado. Talvez seja necessário fazer uma caixa para o teu micro:bit com uma tampa translúcida para dissipar a luz e proteger o micro:bit da chuva. Uma caixa plástica reciclada, por exemplo.