부저 (Buzzer)
일반적으로 사용하는 피에조 부저는 피에조 현상을 사용한 부저입니다. 여기에는 능동 부저와 수동 부저, 두 가지 종류가 있습니다. 피에조 부저에는 2개의 전극단자가 있는데 각 단자는 극성을 가지고 있습니다.
능동 부저는 회로의 연결 설정에서 전류만 흐른다면 소리를 출력하고, 전류가 흐르지 않게 된다면 소리가 출력되지 않는 부저 입니다. 능동 부저의 2개 다리 길이는 서로 다릅니다. 능동 부저는 단일음을 출력하기 때문에, 경보음과 같이 단순한 음이 필요할 때 적합합니다.
수동 부저는 회로에 전류가 흐르더라도 소리를 자동적으로 출력하지 않습니다. 수동 부저의 2개 다리의 길이는 서로 같습니다. 수동 부저는 음계를 사용하여 멜로디를 출력하기 때문에, 다양한 음을 이용하는 상황에 적합합니다.
피에조 현상?
피에조 효과는 1880년 프랑스 물리학자인 자크 큐리(Paul-Jacgues Curie)와 그의 동생 피에르 큐리(Pierre Curie)가 함께 발견한 효과 입니다. 석영, 규소, 생체의 뼈, 단백질 등의 물질에 압력을 주면 그 에너지가 전기 에너지로 변환되며 전기를 발생시킵니다. 물체에 압력을 주면 전기가 발생하는 물리적 현상이기 때문에 압전 효과라고도 합니다.
수동 부저로 멜로디를 연주하기 위해선 tone() 함수를 사용합니다.
tone(Pin_Number, Frequency, Duration);
// Pin_Number : 부저의 핀 번호
// Frequency : 음의 주파수
// Duration : 음의 지속시간
옥타브 및 음계별 표준 주파수는 다음과 같습니다.
코드는 코딩어레이의 예제를 그대로 이용하었습다.
#include "pitches.h"
int buzzer=6; //피에조 부저를 6번에 연결
//연주할 음계
int melody[] ={NOTE_G7,NOTE_G7,NOTE_A7,NOTE_A7,NOTE_G7,
NOTE_G7,NOTE_E7,NOTE_G7,NOTE_G7,NOTE_E7,
NOTE_E7,NOTE_D7,0,NOTE_G7,NOTE_G7,NOTE_A7,
NOTE_A7,NOTE_G7,NOTE_G7,NOTE_E7,NOTE_G7,
NOTE_E7,NOTE_D7,NOTE_E7,NOTE_C7,0
};
//음의길이, 4 = 4분음표, 2 = 2분음표
int noteDurations[] ={4,4,4,4,4,4,2,4,4,4,4,3,1,4,4,4,4,4,4,2,4,4,4,4,3,1};
void setup() {
for(int thisNote =0; thisNote <26; thisNote++)
{
int noteDuration =1000 /noteDurations[thisNote];
tone(buzzer, melody[thisNote], noteDuration); //6번핀에 피에조 부저 연결
int pauseBetweenNotes =noteDuration *1.30; //음표 구분 시간
delay(pauseBetweenNotes); //delay
noTone(buzzer); //음악 재생을 멈춤
}
}
void loop() {
}