Skip to content

Aktivnost

Tajmer za osvjetljenje

Napredni | MakeCode, Python | LED zaslon, Senzor osvjetljenja, Tipke | 13 Klima, Booleova logika, Senzori, Ulaz (Input)/izlaz (Output), Varijable

1. korak: Napravi

Što je to?

Odredi koliko dugo gori svjetlo i na taj način prati potrošnju energije. Ovim projektom možeš koristiti u meteorološkoj postaji za mjerenje trajanja sunčanog vremena.

Ovaj projekt spada u seriju projekata koji potiču aktivnosti za rješavanje problema i izradu prototipova u korištenja tehnologije pri izradi rješenja za izazove Globalnih ciljeva održivog razvoja.

Što ćeš naučiti

  • kako pratiti zbivanja u okolini koristeći senzore i kôd
  • smjestiti zapisivač podataka tako da može bilježiti pouzdane podatke
  • prikupljati i uspoređivati podatke kroz neko vrijeme kako bi uočio obrasce u potrošnji energije
  • protumačiti i analizirati podatke ne bi li potaknuo promjene ponašanja
  • kako korisnik može izmijeniti varijable i namjestiti sustav prije korištenja

Kako koristiti

  • Prvo na temelju projekta Mjerač osvjetljenja utvrdi vrijednosti kod upaljenog i ugašenog svjetla. Pazi da to radiš na istom mjestu i pri istim svjetlosnim uvjetima u kojima će se nalaziti micro:bit za mjerenje i pazi da dnevno svjetlo ne stvori lažnu informaciju paljenja svjetla.
  • Vrijednost očitanu za upaljeno svjetlo unesi u kôd tamo gdje se postavlja vrijednost varijable LIGHT (svjetlo). Mi smo stavili brojku 100, no vjerojatno ćeš to promijeniti prije flashanja kôda na micro:bit.
  • Prikopčaj komplet baterija i smjesti micro:bit pod svjetiljku koju ćeš mjeriti. Dok je svjetiljka ugašena, na zaslonu bi trebala biti točka, a kada se svjetiljka upali, upali se i zaslon. Ako to ne radi, možda bi trebalo projektom Mjerač osvjetljenja ponovo pronaći razinu svjetlosti upaljene svjetiljke ili treba pomaknuti micro:bit
  • Micro:bit će nastaviti mjeriti vrijeme, a pritiskom tipke B pokazat će koliko je minuta svjetlo gorjelo.

Kako to radi

  • Program koristi Booleovu varijablu vrijeme kojom se upravlja izvođenjem. Booleove varijable mogu imati samo dvije vrijednosti: točno ili netočno.
  • Ako je očitanje svjetlosti iznad postavljene razine, tajmer se pokreće i uključuje LED zaslon. Ako je ispod te razine, tajmer se zaustavlja, a na zaslonu se pojavljuje točka.
  • Ovaj se projekt koristi histerezom za sprečavanje prečestog uključivanja/isključivanja uslijed variranja razine svjetlosti oko granične vrijednosti. Ona stvara širi pojas oko granične vrijednosti, a cijeli taj prag treba prijeći prije nego što se tajmer uključi/isključi.
  • Histereza je česta značajka kontrolnih sustava koji se služe senzorima, primjerice u sustavima grijanja s termostatom. Kada postaviš termostat na željenu temperaturu, ne želiš da se sustav stalno uključuje i isključuje čim se temperatura neznatno promijeni. Histereza to sprečava.

Što ti treba

  • micro:bit
  • Uređivač MakeCode ili Python
  • komplet baterija (preporučeno)

2. korak: Kodiraj

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        

3. korak: Unaprijedi

  • Promijeni prikaz na LED zaslonu kako bi baterije dulje trajale ili smanji osvjetljenje na zaslonu.
  • Izmjereno vrijeme upotrijebi za izračun potrošnje električne energije i koliko bi to iznosilo. Detalji su navedeni u projektu Kalkulator troškova za energiju
  • Isti kôd iskoristi za mjerenje sati sunčanog vremena. Iskoristi projekt Mjerač svjetla za izračun razine svjetla kada sunce sja na micro:bit i kada je oblačno. Bilo bi dobro micro:bit smjestiti u neku kutiju s prozirnim poklopcem koji raspršuje svjetlo, a kutija štiti micro:bit od kiše, to može biti i plastična kutija za hranu.