스피커 제어

발행일 : 2019-01-16 00:28  

  • 선생님들~ 안녕하세요~ 
    오랜만에 글을 올립니다. 방학은 잘 보내고 계신지요? 
    육아로 인해 학기 중보다 방학이 더 바쁜것 같습니다^^;;
    학습 진도가 너무 늦어진 점에 대해서는 죄송하다는 말씀을 드립니다. 
    지난 시간 예고에 따라 오늘은 '스피커'에 대해 알아보도록 하겠습니다. 


    아두이노에서 스피커로 소리를 내기 위해서는 tone, noTone 함수를 적절하게 사용해주시면 됩니다. 
    먼저 tone 함수는 3개의 매개변수를 사용합니다.  tone(핀 번호, 음계 주파수, 재생 시간)
    핀 번호는 스피커의 +에 연결된 아두이노의 핀 번호를 작성하면 됩니다. 음계 주파수는 음계마다 주파수가 할당되어 있습니다. 원하는 음계의 주파수를 입력하면 되고 재생 시간은 ms 단위이기 때문에 1초 동안 재생 시 1000을 입력하시면 됩니다. 
    예를들어 8번 핀을 사용하여 4옥타브 도를 1초 동안 소리를 내기 위해서는 다음과 같이 코드를 작성하면 tone(8, 261, 1000); 가 됩니다. 
    아래는 음계와 옥타브 별 주파수를 나타내는 표입니다. 코드 작성 시 활용하시면 됩니다
  • noTone 함수는 소리를 끄는 기능을 수행합니다. 매개변수로 핀 번호를 작성하시면 됩니다. 위의 예로 8번 핀을 사용했기 때문에 해당 소리를 끄기 위해서는 noTone(8); 으로 작성하면 됩니다. 
    추가적으로 서로 다른 음계가 연속적으로 연주될 때 자연스럽게 다음 음계가 출력되도록 하기 위해 delay 함수를 적절하게 사용하면 됩니다. 
    다음은 아두이노와 스피커 연결한 회로도,  5옥타브 '도'와 4옥타브 '솔'을 반복적으로 출력하는 프로그램입니다. 
  • void setup() {
      // put your setup code here, to run once:

    }

    void loop() {
      // put your main code here, to run repeatedly:
      tone(8, 523, 250);  //5옥타브 도를 0.25초 소리로 출력
      delay(400);          //0.4초 지연
      noTone(8);          //해당 소리 끔
      tone(8, 391, 250);
      delay(400);
      noTone(8);
    }
  • 위와 같이 회로도를 구현하시고 아두이노 IDE에 코드를 입력하시면 아래와 같이 결과가 나옵니다. 
  • 음계 주파수, 재생 시간을 변경해서 반복적으로 학습해보시면 소리 제어에 대해 이해가 될 것입니다. 

    예전에 학습한 컨베이어 벨트 시스템은 경고 버튼을 눌렀을 떄 빨간색 LED가 점등, 소등을 반복하였습니다. 
    다음 시간에는 오늘 학습한 스피커를 이용하여 비상 상황일 때 경고음이 발생할 수 있도록 제어를 해보도록 하겠습니다. 
    선생님들께서도 예전 컨베이어 벨트 시스템과 오늘 학습한 내용을 연계하여 미리 구현을 해보시면 많은 도움이 될 것 같습니다. 

    요즘 계속되는 미세먼지로 밖으로 나가기가 두려워 집에서 무료해지기가 쉬운데 바쁜 업무로 미뤘던 독서와 제가 지금까지 올렸던 글을 참고하시면서 아두이노 공부를 해보는 것도 의미있는 시간을 보내는 것 같습니다. 
    저 또한 아두이노에 대해 부지런히 연구하고 꾸준히 글을 게시하도록 하겠습니다. 
    다음 시간에 뵙도록 하겠습니다^^

댓글(0)

이모티콘