부저(Buzzer): 두 판 사이의 차이

아두위키 : Arduwiki
잔글편집 요약 없음
잔글편집 요약 없음
1번째 줄: 1번째 줄:
{{#seo:|title=아두위키 : 아두이노 수동 부저 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 수동 부저, 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 수동 부저를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}아두이노 부저 (Arduino Buzzer)
{{#seo:|title=아두위키 : 아두이노 수동 부저 가이드|title_mode=append|keywords=아두이노, 정보과학, 메이커학습, 수행평가, 수동 부저, 아두이노 작품, 캡스톤작품, 아두이노 예제코드|description=아두이노로 수동 부저를 제어하는 방법(기본정보, 회로, 예제 코드)을 소개합니다. 정보과학과 메이커수업에 활용가능합니다.}}
== 개요 ==
== '''개요''' ==
부저(Buzzer)는 소리를 발생시키는 장치로, 아두이노와 같은 마이크로컨트롤러 보드와 함께 사용되어 다양한 프로젝트에서 경고음, 알림음, 음악 등을 재생하는 데 활용됩니다. 부저는 크게 활성 부저(Active Buzzer)와 수동 부저(Passive Buzzer)로 나뉩니다. 이 문서에서는 부저의 유형, 하드웨어 연결 방법, 코드 예제, 활용 사례 등을 다룹니다.
부저(Buzzer)는 소리를 발생시키는 장치로, 아두이노와 같은 마이크로컨트롤러 보드와 함께 사용되어 다양한 프로젝트에서 경고음, 알림음, 음악 등을 재생하는 데 활용됩니다. 부저는 크게 능동 부저(Active Buzzer)와 수동 부저(Passive Buzzer)로 나뉩니다.


== 종류 ==


=== 활성 부저 (Active Buzzer) ===
== '''능동 부저와 수동 부저''' ==
활성 부저는 내부에 발진 회로가 내장되어 있어 전원을 공급하면 자동으로 소리를 발생시킵니다. 제어가 간단하며, 주로 일정한 주파수의 소리를 내는 데 사용됩니다.


==== 주요 특징 ====
=== 능동 부저 (Active Buzzer) ===
능동 부저는 내부에 발진 회로가 내장되어 있어 전원을 공급하면 자동으로 소리를 발생시킵니다. 제어가 간단하며, 주로 일정한 주파수(음의 높낮이 조절없이 한 가지)의 소리를 내는 데 사용됩니다.


* '''간단한 제어''': 단순히 전원을 켜고 끄는 것으로 소리를 발생시킵니다.
* '''간단한 제어''': 단순히 전원을 켜고 끄는 것으로 소리를 발생시킵니다.
14번째 줄: 13번째 줄:


=== 수동 부저 (Passive Buzzer) ===
=== 수동 부저 (Passive Buzzer) ===
수동 부저는 외부에서 주파수를 제어해야 소리를 발생시킵니다. PWM(Pulse Width Modulation) 신호를 사용하여 다양한 주파수의 소리를 생성할 수 있어, 멜로디나 다양한 음을 재생하는 데 유용합니다.
수동 부저는 전원 공급 시 자동으로 소리를 내는 능동 부저와 달리 주파수를 제어해야 소리를 발생시킵니다. [[아날로그 핀과 PWM|PWM(Pulse Width Modulation)]] 신호를 사용하여 다양한 주파수의 소리를 생성할 수 있어, 멜로디나 다양한 음을 재생하는 데 유용합니다.


==== 주요 특징 ====
* '''복잡한 제어''': 외부 회로나 소프트웨어적으로 주파수를 제어해야 합니다.
* '''다양한 주파수''': 다양한 주파수의 소리를 발생시킬 수 있습니다.


* '''다양한 주파수''': 다양한 주파수의 소리를 발생시킬 수 있습니다.
* '''복잡한 제어''': 외부 회로나 소프트웨어적으로 주파수를 제어해야 합니다.


== 하드웨어 연결 ==
== '''하드웨어 연결''' ==
부저를 아두이노에 연결하는 방법은 다음과 같습니다:
부저를 아두이노에 연결하는 방법은 다음과 같습니다:


=== 활성 부저 연결 ===
=== 능동 부저 연결 ===


# 부저의 + 단자를 아두이노의 디지털 핀에 연결합니다.
# 부저의 + 단자를 아두이노의 디지털 핀에 연결합니다.
36번째 줄: 34번째 줄:
== 코드 예제 ==
== 코드 예제 ==


=== 활성 부저 제어 ===
=== 능동 부저 제어 ===


=== 수동 부저 제어 (멜로디 재생) ===
=== 수동 부저 제어 (멜로디 재생) ===

2024년 7월 10일 (수) 17:16 판

개요

부저(Buzzer)는 소리를 발생시키는 장치로, 아두이노와 같은 마이크로컨트롤러 보드와 함께 사용되어 다양한 프로젝트에서 경고음, 알림음, 음악 등을 재생하는 데 활용됩니다. 부저는 크게 능동 부저(Active Buzzer)와 수동 부저(Passive Buzzer)로 나뉩니다.


능동 부저와 수동 부저

능동 부저 (Active Buzzer)

능동 부저는 내부에 발진 회로가 내장되어 있어 전원을 공급하면 자동으로 소리를 발생시킵니다. 제어가 간단하며, 주로 일정한 주파수(음의 높낮이 조절없이 한 가지)의 소리를 내는 데 사용됩니다.

  • 간단한 제어: 단순히 전원을 켜고 끄는 것으로 소리를 발생시킵니다.
  • 일정한 주파수: 특정 주파수의 소리만 발생시킵니다.

수동 부저 (Passive Buzzer)

수동 부저는 전원 공급 시 자동으로 소리를 내는 능동 부저와 달리 주파수를 제어해야 소리를 발생시킵니다. PWM(Pulse Width Modulation) 신호를 사용하여 다양한 주파수의 소리를 생성할 수 있어, 멜로디나 다양한 음을 재생하는 데 유용합니다.

  • 복잡한 제어: 외부 회로나 소프트웨어적으로 주파수를 제어해야 합니다.
  • 다양한 주파수: 다양한 주파수의 소리를 발생시킬 수 있습니다.


하드웨어 연결

부저를 아두이노에 연결하는 방법은 다음과 같습니다:

능동 부저 연결

  1. 부저의 + 단자를 아두이노의 디지털 핀에 연결합니다.
  2. 부저의 - 단자를 아두이노의 GND에 연결합니다.

수동 부저 연결

  1. 부저의 + 단자를 아두이노의 PWM 핀에 연결합니다.
  2. 부저의 - 단자를 아두이노의 GND에 연결합니다.

코드 예제

능동 부저 제어

수동 부저 제어 (멜로디 재생)

수동 부저로 멜로디 재생

활용 예제

부저는 다양한 프로젝트에서 활용됩니다:

  • 알람 시스템: 특정 조건이 만족될 때 경고음을 울리는 시스템.
  • 타이머: 시간 경과를 알리는 소리.
  • 음악 재생: 간단한 멜로디나 효과음을 재생하는 장치.
  • 게임: 게임에서의 효과음이나 승리/패배 알림음.

문제 해결

부저 소리가 나지 않을 때

  • 연결 확인: 부저의 핀 연결이 올바른지 확인합니다.
  • 코드 확인: 코드에서 부저 핀이 올바르게 설정되었는지 확인합니다.
  • 전원 확인: 아두이노 보드에 충분한 전원이 공급되고 있는지 확인합니다.

부저 소리가 이상할 때

  • 주파수 조정: 수동 부저의 경우, 주파수가 올바르게 설정되었는지 확인합니다.
  • 하드웨어 문제: 부저 자체에 문제가 있는지 확인하기 위해 다른 부저로 교체해봅니다.

원하는 주파수 값을 인가하여 소리를 나게 하는 소자입니다.

3.3V ~ 5V 에서 작동합니다.

필요 하드웨어

연결

극성이 존재하기 때문에 +, - 단자를 잘 확인해야 합니다.

D11 대신 다른 디지털 핀에 연결해도 무방합니다.

buzzer Arduino UNO
+단자 D11(변경 가능)
-단자 GND

예제 코드

참고자료 : 옥타브 및 음계별 표준 주파수


예제1. 음계 테스트

#define buzzer 11
int numTones = 8;

//순서대로 (4옥도,4옥레,4옥미,4옥파,4옥솔,4옥라,4옥시,5옥도)
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };

int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        for (int i = 0; i < numTones; i++)
        {
            //tone(핀번호, 주파수)로 사용합니다.
            tone(buzzer, tones[i]);
            delay(500);
        }
        //noTone함수를 사용하지 않을 시 이전에 입력된 tone함수가 계속 실행이 되므로 
        //noTone함수로 소리를 꺼줍니다.
        noTone(buzzer);
        delay(500);
        cnt++;
    }
}


예제2. 간단한 멜로디

#define buzzer 11

int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
//솔0,라1,시2,도3,레4,미5,파6,솔7
int cnt = 0;

void setup()
{

}

void loop()
{
    if (cnt == 0)
    {
        tone(buzzer, g_tones[0]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[6]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[5]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[4]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(250 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[1]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[2]);
        delay(125 * 2);
        noTone(buzzer);
        tone(buzzer, g_tones[3]);
        delay(250 * 4);
        noTone(buzzer);
        cnt++;
    }else
    {

    }
}

구매링크