카테고리 없음

아두이노 소리센서 예제

abc0123 2017. 11. 18. 23:29
반응형

 

이번에 아두이노 센서 몇 개를 구입했는데 아무 생각 없이 클릭해서 선택한 녀석들 중에 소리센서도 포함되어 있더라. 그런데 아쉽게도 소리의 크기를 측정할 수 있는 건 아니고 그저 소리가 있는지 없는지만 구분할 수 있는 단순한 센서이다. 물론 가변저항이 붙어 있어서 어느 크기의소리에 반응할지 조절할 수는 있지만 섬세하게 그 크기를 측정할 수 없는 아쉬움은 남는다.

 

여하튼 이 단순한 소리 센서를 이용해서 다음 영상과 같은 예제를 만들어보고자 한다. (실제로는 소리가 이렇게까지 크지 않은데...;; 녹화만 하면 시끄럽다. ㅎㅎ 영상을 실행하기 전에 혹시 컴퓨터 볼륨이 조금 크게 설정되어 있다면 살짝만 줄이고 실행하는 게 좋을 것 같다.)

 

 

1. 예제

 

 

▲ 예제처럼 일정 크기의 소리가 있을 때만 소리센서가 값을 읽어 들여서 LED를 켜도록 하는 예제를 만들어보고자 하는데 준비해야 할 것들은 아두이노, 소리센서, LED 등이다.

 

아두이노 센서

 

▲ 이게 이번에 구입한 소리센서인데 사진에서 보는 것처럼 가변저항이 붙어 있어서 어느 정도 소리에 반응할지 조절해줄 수 있으며 핀은 VCC와 GND 그리고 소리의 유무에 따라서 0과 1의 디지털 신호를보내는 녀석까지 세 개가있다.

 

2. 회로

 

회로

 

▲ 회로는 다음과 같이 만들어봤는데 소리센서에서 출력되는 0또는 1의 값을 아두이노 디지털 2번 핀에서 받도록 했으며 3번 핀에서는 LED에 신호를 보내도록 연결했다.

 

회로 그리기

▲ 이제 소리센서에서 ON 값이 들어오면 LED가 켜지도록 아두이노 스케치 코딩을 해보자.

 

 

3. 코딩

 

소리센서 코딩

 

▲ 간단한 예제라서 소스 코드의 내용도 간단하다. 먼저 ① 디지털 2번 핀에서 들오는 0또는 1의 값을 저장하기 위해서 sound라는 int형 변수를 선언했으며 ② setup()에서는 값을 받아들일 핀(2)과 출력할 핀(3)을 각각 INPUT과 OUTPUT으로 초기화했다. 그리고 데이터가 들어오면 아두이노 시리얼 모니터에서 그 값을 확인하기 위해서 시리얼 통신을 준비했다.

 

③ loop() 함수에서는 sound 함수에 2번 핀의 디지털 신호를 저장하도록 했으며 만약 그 값이 1이면즉, 소리센서가 어떤 소리를 읽었다면 시리얼 모니터에 SOUND_ON이라는 문자열을 출력하도록 했으며 LED를 0.1초 동안 켰다가 끄도록 하고 있다.

 

이렇게 작성한 소스 코드를 아두이노에 업로드하고 테스트를 해보면서 앞에서 봤던 영상과 같은 단순한 결과를 얻을 수 있는데 좀 더 섬세하게 데이터를 읽어들일 수 있는 소리센서라면 다양하게 응용해서 사용할 수 있을 것 같다.

반응형