본문 바로가기

Arduino/[2] Arduino Module

[Arduino Module] #3. 아두이노 부저

728x90
반응형

부저

능동 부저 내장된 회로 인해 전원만 인가하면 약 2.5kHz의 음이 발생하는 부저.
한 가지 소리만 내기 때문에 알림 역할을 하는 곳에 자주 사용된다.

수동 부저보단 소리가 크지만 음질은 떨어지는게 특징이다.
수동 부저 미리 설계된 회로가 없어 주파수를 입력해야 소리를 내는 부저이다.
여러 음을 낼 수 있기 때문에 음악 악기와 같은 멜로디가 필요한 제품 등에 사용된다.

능동 부저와 수동 부저 모두 피에조 결정체를 이용하여 소리를 낸다. 전형적인 피에로 부저는 철한 위에 놓은 세라믹 웨이퍼로 구성되며 이 결정체에 전기적 신호를 주면 결정체가 늘었다 줄었다하며 진동을 형성하고 형성된 진동은 음파를 생성한다.

소리의 주파수

피에조 주파수 표

부저함수

tone

tone 이란 정해진 핀을 통해 특정한 주파수의 사각 파형을 생성한다.

tone(pin,frq);
pin 음을 생성하고자하는 핀 번호
frq(frequency) 생성하고자하는 음의 주파수

notone

noTone(pin);
pin 음 생성을 멈추고자하는 핀

회로/코드 구성

회로 구성

부저 회로

부저 예제: 시리얼 모니터로 입력한 음계를 실행해보자.

const int b = 8;
const int d[9] = {-1,262,294,330,349,393,440,494,523};

void setup() {
   Serial.begin(115200);
}

void loop() {
if(Serial.available()){
  int k = Serial.read(); 
  if( '1' <= k && k <= '9'){
    int n = k - '0' ;
    tone(b,d[n]);
    delay(250);
  }  
}
 noTone(b);
}

setup() 

const int b = 8;
const int d[9] = {-1,262,294,330,349,393,440,494,523};

void setup() {
   Serial.begin(115200);
}
  • 정수형 상수 변수로 b에 8을 할당한다. 이때 b는 부저를 의미한다.
  • 정수형 상수 배열 d를 초기화한다. 이때 배열의 값은 피애조 음계를 반올림 한것이다. 주파수 표의 4옥타브를 일반적으로 사용한다.
  • setup 함수에서 시리얼 모니티의 속도를 115200으로 설정한다.

loop()

void loop() {
if(Serial.available()){
  int k = Serial.read(); 
  if( '1' <= k && k <= '9'){
    int n = k - '0' ;
    tone(b,d[n]);
    delay(250);
  }  
}
 noTone(b);
}
  • Serial.availabe 함수를 이용하여 시리얼 모니터의 입력을 확인한다. (아래 메서드 참조)

https://udangtangtang-cording-oldcast1e.tistory.com/37?category=1019061 

 

[Arduino] #6. ⭐️아두이노 시리얼 입출력하기 ⭐️

아두이노 데이터 속도 설정하기: 문자 출력 선언(시리얼 모니터 사용 선언) void setup(){ Serial.begin(speed); // speed: 데이터의 속도값 //일반적으로 아두이노 우노는 9600,아두이노 메가는 115200을 사용한

udangtangtang-cording-oldcast1e.tistory.com

  • 1부터 9까지의 숫자가 입력되면(사실 시리얼 모니터로 입력되는 값은 아스키 코드로 문자형태이다.), 해당 입력을 숫자로 만들기 위해 문자 '0'을 빼서 숫자로 변환한다.
  • 이후 tone 함수를 실행하여 해당 인덱스의 주파수를 출력한다.
  • 250 마이크로 초가 지난 후 noTone 함수를 실행하여 부저의 출력을 중지한다.
728x90
반응형
댓글