Skip to content

활동

촛불

중급 | MakeCode, Python | LED, 마이크 | 불 논리, 선택 실행, 센서

1단계: 만들어 보세요.

프로젝트 소개

입으로 불어서 끌 수 있는 전자 촛불을 만들어 보세요! 신형 micro:bit 의 마이크는 입으로 불어내는 바람 소리를 인식할 수 있기 때문에, 입으로 바람을 불어서 촛불 애니메이션을 켜고 끌 수 있습니다.

소개

프로그래밍 가이드

학습 내용

  • 랜덤을 사용해서 랜덤 개수의 LED 에 불을 켜는 방법
  • 센서로 입력되는 값에 따라 출력되는 값을 변화시키는 방법
  • 같은 이벤트 동작에 대해 참/거짓 불 논리를 사용해서, 켜지고 꺼지는 토글되는 스위치를 만드는 방법

설명

  • 1 ~ 3 범위의 정수 랜덤 값을 flicker 변수에 저장합니다.
  • 이렇게 랜덤으로 선택된 정수 값은 촛불이 랜덤으로 깜박이며 흔들리는 것과 같은 LED 효과를 만들어 내는데 사용됩니다.
  • 가로 세로 방향으로 배치되어있는 micro:bit LED의 좌표는 0 부터 4 까지 사용됩니다. 프로그램에서는 flicker 변수에 랜덤으로 저장된 값에 따라서 가장 윗 부분에 있는 LED 를 그리거나(켜거나) 지웁니다(끕니다.).
  • LED 를 켜고 끄기 위해 필요한 좌표는, 왼쪽에서 오른쪽 방향(x축 방향, 열 번호)과 위에서 아래 방향(-y축 방향, 행 번호) 순서로 사용됩니다. 따라서 촛불의 가운데 좌표는 2, 0 가 됩니다. 왼쪽에서 오른쪽으로 세 번째(0, 1, 2) 이고 위에서 아래로 첫 번째(0) 위치 입니다.
micro:bit 의 LED 좌표를 설명하는 그림
  • 무한반복 실행 구조를 사용해서 애니메이션을 계속 반복 실행시킵니다.
  • 이 프로그램에서는 lit 변수를 사용해서 촛불의 불을 켤 것인지 끌 것인지를 결정합니다. 이 변수는 참/거짓 값이 저장될 수 있는 불(Boolean) 변수 입니다. 불(boolean) 변수에는 2가지 값 중 하나만 저장할 수 있습니다.: true(참) 또는 false(거짓) 값만 저장할 수 있습니다. true 이면 켜고, false 이면 끈 것입니다.
  • 입으로 마이크로비트에 바람을 불어 넣는 것과 같이, 마이크가 시끄러운 소리를 감지하면, lit 변수에 저장되어 있는 불 값을 반대로(not) 바꿉니다. 저장되어있는 값이 true 인 경우에는 false 로 바뀌고, false 인 경우에는 true로 바뀝니다. 그렇기 때문에, 다시 한 번 더 마이크로비트에 바람을 불어 보내면, lit 변수에 저장되어있던 불 값이 true(참) 었다면, 그 값이 false(거짓)으로 바뀌어 저장됩니다. 그렇게 되면 LED 화면을 지우고, 촛불 LED 를 끄게 됩니다.
  • 만약, lit 변수에 저장되어 있는 값이 거짓(false)이었다면 애니메이션을 다시 실행시킵니다.

준비물

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

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

1from microbit import *
2import random
3
4lit = True
5
6while True:
7    if microphone.was_event(SoundEvent.LOUD):
8        lit = not lit
9        sleep(500)
10    if lit:
11        display.show(Image(
12        "00900:"
13        "09990:"
14        "09990:"
15        "09990:"
16        "09990"))
17        sleep(150)
18        flicker = random.randint(1, 3)
19        if flicker != 2:
20            display.set_pixel(2,0,0)
21            display.set_pixel(flicker,0,9)
22        sleep(150)
23    else:
24        display.clear()

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

  • 소리에 따라 다르게 반응해서 출력되는 애니메이션을 자유롭게 만들어보세요.
  • '소리 시끄러우면 실행' 블록을 실행시키는 민감도를 바꿀 수 있습니다. '시작하면 실행' 블록 안에 '소리 시끄러우면 기준값을 ... ' 블록으로 설정해 넣으면 됩니다. 블록 메뉴에서 입력 '... 더 보기' 에서 찾아 볼 수 있습니다. 더 조용한 소리를 위해 더 작은 값을, 더 시끄러운 소리를 위해 더 큰 값을 사용해 보세요.
  • 파이썬 프로그래밍언어에서는, 시끄러운 소리로 구분하는 기준값을 microphone.set_threshold(SoundEvent.LOUD, 128) 명령어를 사용해서 바꿀 수 있습니다. while True: 반복 실행 구조를 실행시키기 전에 먼저 실행시키면 되고, 128 원하는 적당한 값으로 바꾸면 됩니다. 0 부터 255 까지의 범위의 정수 값을 사용하면 되고, 255가 가장 시끄러운 소리를 의미합니다.