반응형

 

아두이노, 피에조 부저(스피커) 다루기 

글.  오상문 sualchi@daum.net 

 

피에조 부저(피에조 스피커)는 소리를 내는 장치입니다. 

단순하지만 멜로디를 흉내내는 것도 가능합니다. 

 

 

 

아래에 핀이 둘 달려있는데 한쪽은 +이고 반대쪽은 -입니다. 

 

+쪽은 아두이노에서 신호를 보내는 점퍼선을 연결하고 

-쪽은 아두이노 접지(GND) 구멍에 연결합니다. 

 

[참고] 어떤 부저 장치는 + 표시만 있는데 + 표시가 없는 쪽이 -가 됩니다. 

 

 

피에조 부저와 아두이노를 아래 설계도처럼 연결합니다. 

 

부저 + 쪽을 디지털 8번에 연결하고 

반대쪽은 접지(GND)에 연결합니다. 

 

 

 

 

 

 

이미 제공되는 피에조 부저를 이용한 멜로디 소리 예제를 읽어와서 실행하겠습니다. 

 

아두이노 IDE를 실행하고 '파일' > '예제' > 'Digital' > 'toneMelody'를 선택합니다. 

이 예제 소스는 다음과 비슷합니다. 

 

이 중에서 가장 중요한 부분은 tone 함수를 사용하는 부분입니다. 

 

 tone(출력핀번호, 음높이, 시간); 

 

부저가 연결된 핀 번호에 음 높이(주파수)와 소리 시간을 보내는 함수입니다. 

 

다른 부분은 멜로리 연주를 위해 데이터를 다루는 부분이니 살펴보시기 바랍니다.

 

이 코드를 컴파일하고 아두이노에 업로드 하면 삐리릴리... 멜로디가 한번 들립니다.

(예제를 보면, setup() 함수에 소리 내는 부분을 넣었기에 한번만 동작합니다.)

 

-------------------------------------------------------------------------

/*

  Melody

*/

#include "pitches.h"

 

// notes in the melody:

int melody[] = {

  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4

};

 

// note durations: 4 = quarter note, 8 = eighth note, etc.:

int noteDurations[] = {

  4, 8, 8, 4, 4, 4, 4, 4

};

 

void setup() {

  // iterate over the notes of the melody:

  for (int thisNote = 0; thisNote < 8; thisNote++) {

 

    // to calculate the note duration, take one second divided by the note type.

    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.

    int noteDuration = 1000 / noteDurations[thisNote];

    tone(8, melody[thisNote], noteDuration);

 

    // to distinguish the notes, set a minimum time between them.

    // the note's duration + 30% seems to work well:

    int pauseBetweenNotes = noteDuration * 1.30;

    delay(pauseBetweenNotes);

    // stop the tone playing:

    noTone(8);

  }

}

 

void loop() {

  // no need to repeat the melody.

}

 

----------------------------------------------------------------------------

<이상>

 

 

반응형

+ Recent posts