안녕하세요. 디바이스마트 대짜이찐입니다.
오랜만에 아두이노 관련 포스팅을 하겠습니다.
아두이노를 사용할 때 자주 쓰이는 피에조 부저입니다.
피에조 부저는 전기적 신호를 주었을 때 수축하거나 확장하는 피에조 효과를
오랜만에 아두이노 관련 포스팅을 하겠습니다.
아두이노를 사용할 때 자주 쓰이는 피에조 부저입니다.
피에조 부저는 전기적 신호를 주었을 때 수축하거나 확장하는 피에조 효과를
이용해서 공기를 진동 시켜 소리를 만들어 냅니다.
아두이노에서 사용하는 피에조 부저는 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이 연주하고 있으면, 주파수가 새로 설정됩니다.
문법은 tone(pin, frequency) 혹은 tone(pin, frequency,duration)입니다.
이 함수는 한번에 1개의 핀만 제어할 수 있으며, 다른 핀에서 tone 이 연주하고 있다면,
tone 함수를 불러도 아무일도 일어나지 않습니다. 같은 핀에서 tone이 연주하고 있으면, 주파수가 새로 설정됩니다.


0 댓글