[아두이노] 피에조 부저 사용해보기




안녕하세요. 디바이스마트 대짜이찐입니다.
오랜만에 아두이노 관련 포스팅을 하겠습니다.
아두이노를 사용할 때 자주 쓰이는 피에조 부저입니다.

피에조 부저는 전기적 신호를 주었을 때 수축하거나 확장하는 피에조 효과를
이용해서 공기를 진동 시켜 소리를 만들어 냅니다.

아두이노에서 사용하는 피에조 부저는 2종류가 있습니다.
능동부저(active buzzer)와 수동부저(passive buzzer)입니다.
능동부저에는 내부에 내장된 회로가 있어서, 외부에서 전원을 연결해주면 ‘삐~’하는 소리가 출력되지만,
수동부저에는 내장된 회로가 없어서, 따로 주파수 명령을 주어야 소리가 출력됩니다.

능동 부저와 수동부저의 차이점은 다리 길이가 같다면 수동부저, 다리길이가 다르다면 능동부저입니다.
또 단순히 전원을 주었을 때 소리의 유무로 확인 할 수 있습니다.
 
피에조 수동 부저는 소리의 음량을 제어할 수 없습니다.
하지만 아래 표와 같이 주파수를 사용하여 음계를 출력할 수 있습니다.
옥타브
C(도)
C#
D(레)
D#
E(미)
F(파)
F#
G(솔)
G#
A(라)
A#
B(시)
1
33
35
37
39
41
44
46
49
52
55
58
62
2
65
69
73
78
82
87
93
98
104
110
117
123
3
131
139
147
156
165
175
185
196
208
220
233
247
4
262
277
294
311
330
349
370
392
415
440
466
494
5
523
554
587
622
659
698
740
784
831
880
932
988
6
1047
1109
1175
1245
1319
1397
1480
1568
1661
1760
1865
1976
7
2093
2217
2349
2489
2637
2794
2960
3136
3322
3520
3729
3951
8
4186
4435
4699
4978










아래 예제는 스위치를 누르면, 부저에서 ‘도레미파솔라시도’의 음계를 출력하는 예제입니다.



준비물: 아두이노, 피에조 수동부저, 택트스위치, 점퍼선, 브레드보드


/*
스위치-부저 테스트
http://www.devicemart.co.kr/
*/


int buzzer =5; // 부저를 핀 5번에 연결
int sw =4; // 스위치를 핀 4번에 연결


// '도레미파솔라시도' 음계 주파수 배열로 선언
int melody[]={262, 294, 330, 349, 392, 440, 494, 523};


void setup ()
{
pinMode(buzzer,OUTPUT); //  핀 5번을 출력 설정
pinMode(sw,INPUT_PULLUP); // 핀 4번을 내부풀업으로 입력 설정
}
void loop()
{
if(digitalRead(sw)==0)
{
 for(int a=0; a<8; a++)
 {
 tone(5,melody[a],500); // 0.5초동안 음계 출력
 }
}
else
{
 noTone(5);   // 피에조 부저 OFF
}
}

소스 코드중에
-tone()함수는 입력받은 주파수의 소리를 내는 함수로,
문법은 tone(pin, frequency) 혹은 tone(pin, frequency,duration)입니다.
이 함수는 한번에 1개의 핀만 제어할 수 있으며, 다른 핀에서 tone 이 연주하고 있다면,
tone 함수를 불러도 아무일도 일어나지 않습니다. 같은 핀에서 tone이 연주하고 있으면, 주파수가 새로 설정됩니다.

댓글 쓰기

0 댓글