Skip to content

활동

소리 지속 시간 측정기

중급 | MakeCode, Python | LED, 마이크 | 변수, 산술 연산자, 선택 실행, 센서, 측정

1단계: 만들어 보세요.

프로젝트 소개

신형 micro:bit 의 마이크를 사용해서, 박수 소리 - 또는 시끄러운 소리가 얼마나 오래 지속되었는지를 타이머로 측정해보세요.

소개

프로그래밍 가이드

학습 내용

  • 마이크를 사용해서 조용했을 때와 시끄러웠을 때를 측정하도록 하는 방법
  • micro:bit 에 내장되어있는 타이머를 사용하는 방법
  • 조용하고 시끄러운 소리의 기준값을 설정하는 방법

설명

  • 프로그램을 시작하면, 시끄러운 소리를 감지하는 기준값을 설정합니다. 값이 크면 클 수록 더 큰 소리를 의미합니다. 그 기준이 되는 값은 0 부터 255 까지 사용할 수 있습니다.
  • 변수 start 을 0 으로 초기화합니다. 시끄러운 소리가 나면, 그 때의 시간을 저장할 것입니다.
  • 마이크 센서로 시끄러운 소리를 감지하면, start 변수에 그 때의 작동시간을 저장하고, 타이머가 시간 측정을 시작했다는 것을 LED 화면에 아이콘으로 출력해서 보여줍니다.
  • 작동시간은 micro:bit 가 작동된 시간을 밀리초(1/1000초 단위)로 측정한 것입니다.
  • 시끄러운 소리가 작아지면, 다른 이벤트가 실행됩니다.
  • 시끄러운 소리 이벤트가 실행된 적이 있고, 타이머가 시작되었다면, start 변수에는 0 보다 큰(>) 값이 저장되어 있을 것입니다. 그런 경우에는 time 변수에는 start 시간에서 현재 작동시간을 뺀 시간 만큼의 시간이 추가되어 저장됩니다. 그렇게 하면 시끄러운 소리가 지속된 시간을 기록할 수 있습니다.
  • time 변수에 기록되어있는 시간은 밀리초 단위이기 때문에, 1000으로 나누어 초단위로 LED 화면에 출력합니다.

준비물

  • micro:bit 1대
  • MakeCode 또는 Python 편집기
  • AAA 배터리 팩 (옵션)

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

1from microbit import *
2microphone.set_threshold(SoundEvent.LOUD, 150)
3start = 0
4
5while True:
6    if microphone.was_event(SoundEvent.LOUD):
7        start = running_time()
8        display.show(Image.TARGET)
9
10    if microphone.was_event(SoundEvent.QUIET):
11        if start > 0:
12            time = running_time() - start
13            start = 0
14            display.clear()
15            sleep(100)
16            display.scroll(time / 1000)

3단계: 더 좋게 만들어 보세요.

  • 시끄러운 소리와 조용한 소리로 구분하는 기준값을 다른 값으로 바꿔가면서 어떤 값이 가장 적당한지 실험해보세요.
  • 소리 데이터 기록 및 수집 프로젝트 의 코드를 참고하면, 그 시간 동안에 가장 소리가 컸을 때를 알아낼 수도 있습니다.