아두이노, 피에조 부저(스피커) 다루기
글. 오상문 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.
}
----------------------------------------------------------------------------
<이상>
'아두이노, 라즈베리파이' 카테고리의 다른 글
아두이노, 브레드 쉴드와 미니 브레드보드 이용하기 (0) | 2018.06.28 |
---|---|
아두이노 회로 배치 디자인 프로그램 Fritzing(프리칭) 다운로드 (0) | 2018.06.28 |
아두이노, 초음파 센서, 피에조 부저(스피커) 예제 (0) | 2018.06.27 |
아두이노, 초음파 센서 예제 (0) | 2018.06.27 |
아두이노, 빨강 노랑 파랑 LED를 이용한 신호등 예제 (0) | 2018.06.26 |