본문 바로가기

메이킹/아두이노

부저 활용하기(버튼으로 제어-버튼 피아노)

반응형

오늘은 부저를 제어하는 방법에 대해 알아보겠습니다.

피에조 부저(Piezo Buzzer)손톱 사이즈만 한 작은 스피커로  'Piezo'란 단어는 그리스어의 "누른다"라는 뜻을 가진 'Piezein'에서 유래된 말로 압력이 가해지면 전기가 발생한다는 뜻입니다. 이것을 우리말로 바꾼 것이 바로 '압전효과'입니다. 이 압전효과를 이용하여 모듈 안쪽에 얇은 판을 사용하여 미세한 떨림을 만들어내 소리를 발생시킬 수 있는 것입니다. 그렇기 때문에 아두이노의 피에조 부저는 디지털 핀의 전압을 매우 짧은 시간 안에 바꾸어가며 주파수에 맞는 소리를 낼 수 있도록  PWM 방식으로 작동됩니다.

출처 : https://wikidocs.net/30897

 

부저는 능동형 부저와 수동형 부저로 나누어져 있는데 차이점은 능동형 부저는 전원이 들어오면 그냥 소리가 나는 것이고 수동형 부저는 신호입력을 통해 작동하는 것입니다.

능동형 부저는 소리가 크지만 음질은 다소 떨어지며 수동형 부저는 소리가 작지만 음질은 더 우수합니다.

능동형 부저 수동형 부저

 

준비물

- 아두이노 우노

- 수동형 부저

- 브레드 보드

- 점퍼선

 

1) 피에조 부저( 수동형 부저)로 소리내기

회로도

소스코드

int piezo = 5;

void setup() {  
  pinMode(piezo, OUTPUT);  
}

void loop() {  
  tone(piezo, 262); // 4옥타브 도
  delay(200);
  tone(piezo, 294); // 4옥타브 레
  delay(200);
  tone(piezo, 330); // 4옥타브 미
  delay(200);  
  tone(piezo, 349); // 4옥타브 파
  delay(200);  
  tone(piezo, 392); // 4옥타브 솔
  delay(200);  
}

 

- tone함수 : tone(핀번호, 주파수, 시간), PWM으로 작동

- noTone() : 부저 소리출력 끄기

출처: https://kwanulee.github.io/iot/docs/sound_control/sound_control.html

 

2) 버튼으로 피아노 만들기

회로도

아두이노 버튼 피아노 회로

소스코드

 

int pin_switch[] =  {13, 12, 11, 10, 9, 8, 7, 6} ;
int buzzer = 5; // 부저 핀 번호
int tones[] = {261, 293, 329, 349, 391, 440, 493, 523}; // 도,레,미,파,솔,라,시,도

void setup(){
  for(int i = 0; i < 8; ++i){
    pinMode(pin_switch[i], INPUT);
  }
  pinMode(buzzer, OUTPUT);
}

void loop(){
  for(int i = 0; i < 8; ++i){
    if(digitalRead(pin_switch[i])==HIGH){
      tone(buzzer, tones[i], 100);
    }
  }
}

 

회로가 복잡한 것 같지만 같은 모양의 반복이니 서두르지 말고 차근차근 만들어보세요.

반응형