카테고리 없음

아두이노 가변저항 피에조 부저 소리 제어 예제

abc0123 2017. 11. 30. 14:38
반응형

 

피에조 부저는 안에 들어있는 작은 판을 떨리게 해서 간단한 소리를 출력하는 스피커이며 거의 경고음으로 사용될 만큼 듣기에 썩 좋지 않은 날카로운 소리를 내는데 이번에는 이 녀석과 아두이노 가변저항을 이용해서 소리를 제어하는 과정을 정리해보려고 한다.

 

정리라고 할 것도 없고 그냥 가변저항의 변화에 따라서 피에조 부저의 소리를 달라지게 제어하는 내용이며 저항을 일정 수준 올려서 소리가 커지게 되면 LED도 함께 켜지도록 해서 효과를 살짝 줘볼 텐데 대충 영상과 같다. (영상에서 출력되는 소리가 조금 날카롭고 시끄러울 수 있으니 볼륨은 적당히 줄이고 보는 게 좋을 것이다.)

 

 

 

여하튼 이렇게 가변저항의 변화에 따라서 피에조 부저의 소리가 달라지게 되며 일정 수준 이상 올라가면 LED를 켜지도록 하는 예제를 만들어보자.

 

저항 및 부저

 

준비해야 할 건 아두이노, 가변저항, 피에조 부저, LED와 그것들에 맞는 저항 등이며 회로는 다음과 같다.

 

회도로

 

예제에서는 D8번에 LED를 D9번에 피에조 부저를 연결했으며 가변저항의 값은 A0에서 받고 있다. 이제 코딩을 해보자.

 

D8번과 9번

 

코딩에서는 아날로그 A0로 들어오는 가변저항의 값 0~1023을 map() 함수를 이용해서 디지털 신호로 매핑한 후& 피에조 부저로 보내줄 텐데 피에조 부저가 낼 수 있는 소리의 범위는 31부터~ 4978 사이지만 조금 여유를 두기 위해서 0~3000 사이의 값으로 매핑을 할 것이다.

 

 

31~4978 사이의 값도 넣어서 해봤는데 가변저항을 완전히 줄여도 소리가 조금씩 계속 나고 조금만 키워도 너무 시끄러워서 적당한 값을 매핑 시킨 것이니 참고하고 소스 코드의 내용을 들여다보자.

 

소스 코드

 

예제에서는 D8번과 D9번 핀을 사용했기 때문에 그것들을 ① int형 변수 led과 buz에 각각 저장을 했다. 그리고 초기화 함수에서는 ② 두 개의 핀 모드를 모두 출력을 위한 OUTPUT으로 설정하고 있으며 ③ loop() 함수에서는 tone() 함수의 첫 번째 인자로 피에조 부저가 연결된 핀 번호(buz=9)를 전달하고 있으며 소리의 크기에 해당하는 두 번째 인자 값은 A0로 들어오는 가변저항의 아날로그 값(0~1023)을 0부터 3000까지 매핑해서 전달하도록 했고 세 번째 인자인 소리의 출력 시간은 1로 설정해서 최대한 짧게해 계속해서 소리가 나도록 했다. 그리고 만약 아날로그 값이 300이 넘어가면 LED를 켜지게 했으며 그렇지 않으면 꺼지도록 하고 있다.

 

업로드 및 실행

 

이렇게 작성한 코드를 아두이노에 업로드 한 후 실행을 해보면 앞에서 봤던 결과 값을 얻을 수 있다.

 

그동안 아두이노 가변저항도 몇 사용해봤고 LED는 물론 피에조 부저도 사용하면서 이 블로그에 정리했었지만 오늘은 그것들을 모두 모아 복습하면서 살짝 응용을 해본 예제였다.

반응형