Skip to content

활동

에너지 빛 타이머

고급 | MakeCode, Python | LED, 버튼, 빛 센서 | 13 날씨, 변수, 불 논리, 센서, 입력/출력

1단계: 만들어 보세요.

프로젝트 소개

에너지를 얼마나 사용하는지 추적해보기 위해서 불 빛들이 얼마나 오래 켜져있나 측정해보세요. 이 프로젝트는 기상 관측소 만들기에서 낮의 길이를 측정하는데 사용할 수도 있습니다.

이 프로젝트는 전세계 지속가능발전 문제들에 대한 해결 방법 중 하나로서, 컴퓨터과학기술을 탐색하고 활용해서 새로운 물건들을 만들어 내는 문제해결 과정을 경험할 수 있도록 만들어진 프로젝트들 중 하나 입니다.

학습 내용

  • 실제 세상의 이벤트들을 모니터링하기 위해서 여러 가지 센서들을 사용하고 프로그래밍하는 방법
  • 안정적으로 데이터를 기록하고, 믿을 수 있는 데이터를 만들어 낼 수 있도록, 데이터 로그 기록 장치의 위치를 선택하는 방법
  • 시간 흐름에 따라 에너지 사용 데이터를 수집하고, 최대 에너지 사용 패턴을 찾아내는 방법
  • 행동에 변화를 주기 위해 데이터를 해석하고 분석하는 방법
  • 어떤 시스템에 필요한 값들을 사용하기 위해서 변수들에 저장되어있는 값을 바꾸는 방법

사용방법

  • 이 에너지 빛 측정기 프로젝트는 불 빛들이 켜져있거나 꺼져있을 때의 밝기를 측정할 수 있습니다. 같은 장소에서 똑같은 조명 상태에서, 외부의 빛이 영향을 주지 않는 상태로 micro:bit 를 사용해서 빛의 밝기를 측정해야합니다.
  • 측정한 빛의 밝기를 LIGHT 변수가 설정되어 있는 코드 부분에 넣습니다. 그 값을 100 으로 설정했지만, 프로그램을 micro:bit 에 업로드하기 전에 바꿀 필요가 있을 수 있습니다.
  • 배터리 팩을 연결한 후, 빛의 밝기를 측정하고 싶은 곳에 micro:bit 를 가져다 놓습니다. 불이 꺼지면 micro:bit 화면에 점 하나만 나타나고, 불이 켜지면 micro:bit 화면이 밝게 켜질 것입니다. 제대로 작동하지 않으면, 빛 측정기 프로젝트에서 micro:bit 화면이 켜져야 하는 기준값을 다시 설정하거나, micro:bit 를 다른 곳으로 옮겨보세요.
  • micro:bit 는 계속해서 시간을 측정하게 되고, B 버튼을 누르면, 그 때까지 불 빛이 켜져있던 시간을 분 단위 시간으로 화면에 표시해 줄 것입니다.

설명

  • 이 프로그램에서는 timing 이라는 불 변수 값을 사용해서 프로그램의 실행을 제어합니다. 불 변수는 2가지 값 중 하나만 저장할 수 있습니다.: true(참), false(거짓).
  • 빛 센서로 측정한 값이 설정한 기준값보다 크다면, 타이머를 작동시키고 LED 화면에 불을 켜게 됩니다. 빛 센서로 측정한 값이 설정한 기준값보다 낮게 떨어지면, 타이머를 정지시키고, 화면에 점을 1개만 출력합니다.
  • 이 프로젝트에서는 hysteresis 변수를 사용해서, 너무 많이 타이머 상태가 바뀌지 않도록 방지합니다. 왜냐하면, 설정한 기준값과 비슷한 빛 센서 값이 되면, 매우 작은 빛 센서 값의 변화에 따라서도 매우 많은 타이머 상태 변화가 만들어 질 수 있기 때문입니다. 이런 방법을 사용하면, 타이머가 켜지고 켜지는 기준값 근처에 조금 더 넓게 보호 대역을 만들 수 있습니다.
  • 이러한 히스테리시스(hysteresis) 제어 방법은, 온도 조절기가 있는 자동 냉난방 시스템과 같은, 센서를 사용하는 제어 시스템에서 일반적으로 자주 사용되는 제어 방법 중 하나입니다. 온도 조절기를 어떤 온도에 설정해서 맞추어 놓았는데, 설정한 온도 근처에서 계속 꺼졌다가 켜졌다가를 반복하는 것은 원하지 않을 수 있습니다. 히스테리시스 제어 방법은 그런 일이 발생하는 것을 막아줍니다.

준비물

  • micro:bit
  • MakeCode 또는 Python 편집기
  • 배터리 팩 (권장)

2단계: 프로그래밍 해보세요.

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단계: 더 좋게 만들어 보세요.

  • 배터리를 더 오래 사용할 수 있도록, LED 화면에 출력되는 패턴을 바꾸거나 화면에 출력되는 빛의 밝기를 점점 더 밝게하거나 줄여보세요.
  • 기록된 시간 정보를 사용해서, 사용한 전기량과 요금을 계산해보세요. 더 자세한 것은 에너지 비용 계산기 프로젝트를 통해 살펴볼 수 있습니다.
  • 같은 프로그램을 사용해서 낮의 길이를 측정해보세요. 빛 측정기 프로젝트를 사용해서 맑은 날과 흐린 날의 micro:bit 에 비춰지는 빛의 밝기를 측정하고 계산해보세요. 비나 물로 부터 micro:bit 를 보호하고 빛은 통과시키기 위해서, micro:bit 를 넣을 투명한 통이 필요할 수 있습니다. 오래된 음식물 보관 통 같은 것도 가능합니다.