본문 바로가기

스크래치/라인트랙자동차

스크래치 아두이노 라인 센서와 부저

라인센서와 피에조 부조

이제 라인 센서 2개를 이용하여 다양한 소리를 내는 프로그램을 만들겠습니다.

그림 1-14 라인 센서 2개 연결 회로

 

첫 번째 라인 센서는 디지털 3번 핀과 연결했습니다. 두 번째 라인 센서는 디지털 4번 핀과 연결합니다.

 

소리를 내기 위해서는 피에조 부저가 필요합니다. 피에조 부저는 1편에 있는 부품입니다. 피에조 부저는 안에 얇은 막이 있어서 전기를 주면 떨리면서 소리가 납니다. 피에조 부저를 디지털 13핀과 연결합니다. 만약 피에조 부조에서 소리가 잘 나지 않는다면 피에조 부조의 다리 위치를 서로 바꿔서 회로에 연결합니다.

 

라인 센서 2개로 총 몇 가지 경우의 소리를 만들 수 있을까요? 정답은 4가지입니다. 라인 센서 하나가 각각 2가지 값을 보낼 수 있기 때문입니다. 다음 표를 보면 이해가 잘 될 것입니다.

 

이 4가지 경우를 이용하여 다양한 소리를 내도록 코딩을 해보겠습니다. 피에조 부저에서 소리가 나오게 하려면 <톤> 블록을 사용해야 합니다.

그림 1-15 <톤> 블록

 

삼각형 표시가 있는 것을 보니 고를 수 있는 것이 여러 개 있다는 것을 알 수 있습니다. 주파수를 바꿔서 소리를 다양하게 낼 수 있습니다. 가운데 C4가 있는 곳에 주파수 값을 넣으면 됩니다. 1번부터 4번까지 어떤 소리를 낼지 표로 정리했습니다.

 

우선 1번 경우를 코딩하겠습니다. 한 번에 한 가지 문제만 해결한다는 것! 반드시 기억하세요. 1편에서 배웠던 <또는>과 <그리고> 블록을 사용하겠습니다.

 

첫 번째 라인 센서와 두 번째 라인 센서 모두 검은색 값을 읽을 때 C3(도) 소리가 납니다. 따라서 <그리고> 블록을 사용해야 합니다. 2가지 조건을 모두 만족해야 하기 때문입니다.

 

그리고 변수를 사용해서 어떤 라인 센서값인지 알기 쉽게 합니다 . 변수는 2개 만드는데 하나는 [첫번째 라인 센서]이고 다른 하나는 [두번째 라인 센서]입니다. 디지털 3번 핀에서 읽은 값은 [첫번째 라인 센서] 변수에 저장 합니다. 디지털 4번 핀에서 읽은 값은 [두번째 라인 센서] 변수에 저장합니다.


[첫번째 라인 센서] 변수가 1이고(검은색) [두번째 라인 센서 변수 값도 1이면(검은색) 피에조 부저에서 C3(도)소리가 나도록 코딩을 합니다. <그림 1-16>

그림 1-16 라인센서 둘 다 검정색을 읽었을 때 소리내기

 

프로그램을 만들고 잘 되는지 확인합니다. 어때요? 참 쉽죠? 그럼 두 번째 경우도 코딩해보겠습니다.<그림 1-17> 처음 만들었던 프로그램에서 조금만 바꾸면 되지 않을까요? 2번 경우에는 D3(레) 소리를 냅니다.

그림 1-17 왼쪽 라인센서만 검정색을 읽었을 때 소리내기

 

나머지 경우도 쉽게 만들 수 있습니다. 그리고 만들었던 프로그램을 잘 연결하면 우리가 원하는 프로그램을 만들 수 있습니다. <그림 1-18>

그림 1-18 2개의 라인센서로 서로 다른 소리내기

 

나머지 경우도 쉽게 만들 수 있습니다. 그리고 만들었던 프로그램을 잘 연결하면 우리가 원하는 프로그램을 만들 수 있습니다. <그림 1-18>

그림 1-19 1번 경우를 함수로 만들기

 

<1번 경우>라는 함수를 만들어서 1번 경우일 때 C3(도) 음이 나도록 코딩을 합니다. 다른 경우도 마찬가지입니다. 그러면 그림 1-20과 같이 깔끔하게 코딩을 할 수 있습니다.

그림 1-20 함수로 소리내는 프로그램 만들기

 

만약 4번인 경우에 G3(솔) 음이 나게 하려면 그림 1-21처럼 <4번 경우> 함수만 바꾸면 됩니다.

그림 1-21 함수로 쉽게 프로그램 바꾸기

함수를 잘 쓰면 아주 편하게 코딩을 할 수 있습니다. 우리를 도와주는 멋진 함수! 머릿속에 꼭 기억해주세요. 그림 1-22와 같이 검은색 선을 가운데 둡니다. 그리고 라인센서 2개를 움직이면서 멋진 음악을 만들어 보세요.

그림 1-22 라인센서 2개로 음악 만들기