Lesson 2. 조종기로 음악을 연주해보아요!




[들어가기]


이번 강의에서는 조종기의 Buzzer를 사용하여 음악을 연주해보려고 합니다.

페트론 V2의 조종기에는 소리를 재생할 수 있는 Buzzer가 있는데, 주파수별로 소리가 달라서 음계 연주가 가능합니다.

그리고 빛의 3원색인 RGB(Red, Green, Blue)를 이용하여 다양한 색상으로 조종기의 LED를 빛나게 할 수 있습니다.

LED 색상을 Buzzer에 맞춰 바꿔보면서 아름답게 음악을 연주해보아요.


< Buzzer 재생 가능한 음계>

① 옥타브 : 4~8

② 음계 : (각 옥타브별) 도 / 도# / 레 / 레# / 미 / 파 / 파# / 솔 / 솔# / 라 / 라# / 시

빛의 3원색

빛의 3원색

코딩에서 빛의 3원색 표시 방법

① 컴퓨터는 기계어 2진수로 이해하므로 색상도 2진수로 표시합니다.

② RGB칼라는 8비트를 이용하여 표시하므로 0과 1로 표시할 수 있는 1비트 8개를 이용합니다.

1 1 0 0 1 0 0 0

③ 28 = 256 이므로, 8비트를 10진수로 표시하면 범위는 0~255 입니다.

④ 빛을 혼합할 때 혼합한 색이 원래의 색보다 명도가 높아짐으로 가산혼합이라고 합니다. 조명, 컴퓨터 모니터 등에서 사용합니다.



[코드 생각하기]


1. 조종기로 음악 연주하기

다음 “곰 세 마리” 동요를 조종기로 연주해봐요. (저작권 문제로 음계만 표시합니다.)

가사 곰 세 마리가 한 집에 있어 아빠곰 엄마곰 애기곰
음계 도 도 도도도 미 솔솔 미도 솔솔미 솔솔미 도도도

조종기 Buzzer를 재생할 수 있는 블록은 다음과 같이 2가지 종류의 블록이 있는데, 여기서는 음계를 지정할 수 있는 ①번 블록을 사용합니다.

1


Q, "연주"와 "예약" 블록의 차이점은?

연주 블록 선택한 음을 지정한 시간 동안 연주한 후 다음 블록이 실행됩니다.
연주를 마친 후 다른 동작을 할 때 사용합니다.
예약 블록 선택한 음을 지정한 시간 동안 연주하되 연주를 시작하면서 바로 다음 블록이 실행됩니다.
연주를 하면서 동시에 다른 동작을 할 때 사용합니다.

2. 조종기 LED 색상 변경하기

조종기의 LED 색상을 음계에 맞춰 다음과 같이 변하도록 해보아요

빨강 초록 파랑 노랑 핑크 하늘색 흰색


Q, LED 관련 블록들의 차이점은?

색상(7가지)과 밝기(켜기/끄기 포함)를 설정할 수 있습니다.
RGB(Red, Green, Blue) 색상을 2진수(비트)로 나타내고 서로 색상을 혼합할 수 있습니다. 그리고 설정한 색상의 밝기 조절도 가능합니다.
① 0b10000000 : Red
② 0b01000000 : Green
③ 0b00100000 : Blue
RGB 색상의 밝기를(0~255) 각각 조절하여 다양한 색상으로 혼합할 수 있습니다.
RGB 색상을 혼합하여 만든 6가지 색상을 설정할 수 있습니다.




[코딩 및 실행하기]


다음과 같이 블록을 조립하여 코드를 만들어봅시다.

코드1
코드2
코드3
코드4


다음은 블록에 대한 설명입니다.


시작 블록
엔트리의 시작하기 버튼을 클릭하면 코드를 실행합니다. 시작 블록의 바로 다음 블록부터 순차적으로 실행됩니다.
※ 코드 처음에 시작 블록이 없으면 코드는 실행되지 않습니다.

조종기 LED 끄기 블록
조종기의 LED가 꺼집니다.
※ 조종기의 LED를 끄지 않은 상태에서 색상을 변경시키면 색상이 혼합됩니다.

조종기 LED(선택) 블록
조종기의 LED가 빨간색으로 켜집니다.

조종기 음계(지정시간) 블록
조종기의 Buzzer에서 5옥타브의 도 음이 0.5초 동안 재생됩니다.

기다리기 블록
0.1초 동안 기다린 후 다음 블록이 실행됩니다. (같은 음이 연속으로 연주될 경우)


이제 코드를 실행해볼까요? 엔트리의 시작하기 버튼을 눌러보아요. 조종기에서 “곰 세 마리” 음악이 잘 연주되나요?
그런데 만든 코드가 너무 길어서 보기 어려운가요? 그럼 반복문을 사용해서 코드를 줄이고 좀 더 효율적으로 코딩해보도록 해요. 먼저 반복문이 무엇인지 알아볼까요?

알기 쉬운 코딩
반복문
반복문이란 코딩의 주요 문법 중 하나로서 동일하거나 비슷한 명령을 반복할 때 사용합니다.
반복문을 사용하면 코드의 길이를 줄여줘서 코드를 이해하기 쉽게 해줄 뿐만 아니라, 좀 더 다양하고 효율적인 코딩 구현이 가능합니다. 반복문에는 지정한 횟수만큼 반복하기, 무한 반복하기, 특정 조건이 만족할 때까지 반복하기, 이렇게 3가지 종류가 있는데, 각 상황에 맞게 선택하여 사용합니다.

지정한 횟수만큼 반복하기

무한 반복하기

특정 조건이 만족할 때까지 반복하기


그럼 반복문을 사용하여 다음과 같이 코드를 수정해보아요.

반복문을 사용하여 수정한 코드

처음 시작하는 부분의 2번째와 3번째 음계 연주하는 코드가 동일하기 때문에 2번 반복하기 블록을 사용하여 위와 같이 코드를 수정할 수 있습니다.
반복문을 코딩하는 방법은 반복문 블록 안에 반복되는 코드를 삽입하고 반복 횟수를 설정해주면 됩니다.

처음 5개 음계 연주하는 코드 부분을 다음과 같이 줄일 수 있습니다.


기존 코드


수정 코드

이제 나머지 코드도 반복문을 사용하여 수정하고 전체 코드를 완성해보아요.

코드1
코드2
코드3
※ 처음 반복문을 사용하지 않은 코드보다 길이가 많이 줄어든 것을 확인할 수 있습니다.

코드를 모두 만들었다면 다시 실행시켜서 연주가 잘 되는지 확인합니다. 연주가 잘 된다면 “곰 세 마리”의 나머지 뒷부분도 코딩하여 곡을 완성해보고 다른 노래 연주도 도전해보아요!



[정리하기]


눈과 귀가 즐거운 강의였나요? 이번 강의에서 배운 것을 활용하여 자신만의 음악을 만들어서 조종기로 연주해보고, 드론의 LED를 좀 더 화려하게 꾸며봐요.

  1. 조종기의 Buzzer를 이용하여 음을 재생할 수 있습니다. (음계 선택 or 주파수)

  2. 드론에는 눈과 팔 부분에 LED가 장착되어 있는데, 코딩으로 색상을 변경할 수 있습니다.

  3. 드론의 LED 색상을 변경할 때, 이미 LED가 다른 색상으로 설정되어 있다면 색상이 겹쳐지기 때문에 꼭 LED를 먼저 끈 후 변경합니다.

※ 색상 겹침을 이용하여 특정 색상을 만들고 싶다면 LED를 끄지 않고 사용합니다.
  1. 반복문은 동일하거나 비슷한 코드를 반복적으로 수행할 때 사용하고, 코드를 좀 더 간단하고 효율적으로 만들 수 있습니다.



엔트리로 코딩해요

  1. 페트론 V2와 엔트리가 만났어요
  2. 페트론 V2와 인사해요
  3. 조종기 화면에 그림을 그려보아요
  4. 조종기로 로봇청소기를 돌려보아요
  5. 엔트리로 드론을 날려보아요
  6. 드론으로 센서 놀이를 해보아요
  7. 센서를 활용한 패턴 비행을 해보아요
  8. 조종기 버튼으로 드론을 날려보아요

Modified : 2019.1.10