Skip to content

활동

소리 크기 측정기

초급 | MakeCode, Python | LED, 마이크 | 데이터 처리, 입력/출력

1단계: 만들어 보세요.

프로젝트 소개

신형 micro:bit 의 마이크 센서와 간단한 LED 차트 기능을 사용해서, 주변 소리가 얼마나 크게 나는지 측정해보세요.

소개

프로그래밍 가이드

학습 내용

  • 신형 micro:bit 의 마이크를 센서로 사용해서 주변 소리 크기를 측정하는 방법
  • 센서로 읽어들인 수 데이터들을 LED 화면에 막대 그래프 차트처럼 그래픽으로 출력하는 방법

설명

  • 신형 micro:bit 의 마이크를 사용하면 0 부터 255 까지의 범위로 소리의 세기(크기)를 측정할 수 있습니다. 0 은 측정할 수 있는 가장 작은 값이고, 255 는 가장 시끄러운 값입니다.
  • 프로그램에서는 무한 반복실행 구조를 사용해서, 마이크로 입력되는 소리 크기 값을 LED 화면에 막대 그래프 모양의 차트로 계속 출력합니다.
  • 주변에서 큰 소리가 나면 날 수록, 더 큰 막대 차트가 나타나게 될 것입니다.

준비물

  • 소리 기능이 있는 신형 micro:bit (또는 MakeCode 시뮬레이터)
  • MakeCode 또는 Python 편집기
  • AAA 배터리 팩 (옵션)

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

1from microbit import *
2
3# function to map any range of numbers to another range
4def map(value, fromMin, fromMax, toMin, toMax):
5    fromRange = fromMax - fromMin
6    toRange = toMax - toMin
7    valueScaled = float(value - fromMin) / float(fromRange)
8    return toMin + (valueScaled * toRange)
9
10# set of images for simple bar chart
11graph5 = Image("99999:"
12               "99999:"
13               "99999:"
14               "99999:"
15               "99999")
16
17graph4 = Image("00000:"
18               "99999:"
19               "99999:"
20               "99999:"
21               "99999")
22
23graph3 = Image("00000:"
24               "00000:"
25               "99999:"
26               "99999:"
27               "99999")
28
29graph2 = Image("00000:"
30               "00000:"
31               "00000:"
32               "99999:"
33               "99999")
34
35graph1 = Image("00000:"
36               "00000:"
37               "00000:"
38               "00000:"
39               "99999")
40               
41graph0 = Image("00000:"
42               "00000:"
43               "00000:"
44               "00000:"
45               "00000")
46
47allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
48               
49# ignore first sound level reading
50soundLevel = microphone.sound_level()
51sleep(200)
52
53while True:
54    # map sound levels from range 0-255 to range 0-5 for choosing graph image
55    soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
56    display.show(allGraphs[soundLevel])
57            

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

  • 주변 소리 크기가 시끄러운 정도에 따라서 다르게 표현하는 방법을 만들어보세요. 예를 들어, 소리 크기에 따라 서로 다른 아이콘을 출력할 수도 있습니다.
  • 소리 크기 값이 일정 값보다 크게 되면, 시각적인 소음 경보를 보여 줄 수 있도록 개선해보세요. - 교실이 너무 시끄러워지지 않도록 하는데 사용할 수도 있습니다.