부저(Buzzer): 두 판 사이의 차이
잔글편집 요약 없음 |
잔글편집 요약 없음 |
||
| 1번째 줄: | 1번째 줄: | ||
{{#seo:|title= | {{#seo:|title=ArduWiki : Arduino ブザーガイド|title_mode=append|keywords=Arduino, 情報科学, メイカー学習, パフォーマンス評価, ブザー, Arduino作品, キャップストーン作品, Arduinoサンプルコード|description=Arduinoでブザーを制御する方法(基本情報、回路、サンプルコード)を紹介します。情報科学やメイカー授業に活用できます。}} | ||
[[파일:부저 사진.jpg|가운데|class=coders100]] | [[파일:부저 사진.jpg|가운데|class=coders100]] | ||
== ''' | == '''概要''' == | ||
ブザー(Buzzer)は音を発生させる装置で、Arduinoのようなマイクロコントローラーボードと組み合わせて使用され、さまざまなプロジェクトで警告音、通知音、音楽などを再生するために使用されます。ブザーは主にアクティブブザー(Active Buzzer)とパッシブブザー(Passive Buzzer)に分けられます。 | |||
== '''アクティブブザーとパッシブブザー''' == | |||
== | === アクティブブザー(Active Buzzer) === | ||
アクティブブザーは内部に発振回路が内蔵されており、電源を供給するだけで自動的に音を鳴らします。制御が簡単で、主に一定の周波数(音の高さを変えず一種類)の音を出すのに使用されます。 | |||
* '''簡単な制御''':単に電源をオン・オフするだけで音が出ます。 | |||
* '''一定の周波数''':特定の周波数の音のみを発生させます。 | |||
=== パッシブブザー(Passive Buzzer) === | |||
パッシブブザーは、電源を供給しても自動的には音が出ません。PWM(Pulse Width Modulation)信号を使用して周波数を制御することで、さまざまな周波数の音を生成できます。メロディや多様な音を再生するのに便利です。 | |||
* '''複雑な制御''':外部回路またはソフトウェアで周波数を制御する必要があります。 | |||
* '''多様な周波数''':さまざまな周波数の音を発生させることができます。 | |||
=== | === アクティブブザーとパッシブブザーの識別 === | ||
アクティブブザーとパッシブブザーは外見では区別が難しい場合があります。簡単なテストで識別する方法があります。 | |||
==== 1. ラベルとマーキング ==== | |||
外観による識別方法ですが、製品によって表示が異なるため確実とは限りません。 | |||
* '''アクティブブザー''':「Active」や特定の周波数(例:「5V 12kHz」)と表示されていることがあります。 | |||
* '''パッシブブザー''':「Passive」または周波数表示のないことが多いです。 | |||
=== | ==== 2. テスト ==== | ||
最も確実な方法は、簡単な回路を組んでテストすることです。 | |||
* '''アクティブブザー''':電源を接続するとすぐに音が出ます。 | |||
* '''パッシブブザー''':電源を接続しても音が出ず、周波数信号を入力すると音が出ます。 | |||
== '''回路構成''' == | |||
製品によってブザーの形状は異なりますが、原理は同じです。 | |||
==== | === ピンが2本の場合 === | ||
# ブザーの+端子をArduinoのデジタルピンに接続します。 | |||
# ブザーの-端子をArduinoのGNDに接続します。 | |||
# | |||
# | |||
[[파일:수동부저 회로.png|가운데|class=coders100]] | [[파일:수동부저 회로.png|가운데|class=coders100]] | ||
=== ピンが3本の場合 === | |||
= | # ブザーの+端子(またはVCC)をArduinoの5Vピンに接続します。 | ||
# ブザーの-端子をArduinoのGNDに接続します。 | |||
# ブザーの信号ピンをArduinoの任意のデジタルピンに接続します。 | |||
'''※ 下の写真と異なるモデルの場合、ピンの位置が異なることがありますので、よく確認して接続してください。'''[[파일:부저 3핀 회로.jpg|가운데|class=coders100]] | |||
== '''活用例''' == | |||
''' | |||
== | === 1. アクティブブザーの制御 === | ||
アクティブブザーを3回鳴らす例です。 | |||
=== 1. | ==== 1-1. 回路構成 ==== | ||
下の写真は3ピンタイプの例です。2ピンタイプを使用する場合は、上記のハードウェア接続を参考にしてください。 | |||
[[파일:능동부저 예제1 회로.png|가운데|class=coders100]] | |||
==== 1-2. コード ==== | |||
==== 1-2. | |||
<syntaxhighlight lang="c++" line="1"> | <syntaxhighlight lang="c++" line="1"> | ||
const int iopin = 7; | const int iopin = 7; | ||
| 84번째 줄: | 80번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 1-3. 実行結果 ==== | |||
==== 1-3. | |||
<div class="coders70"> | <div class="coders70"> | ||
<youtube> Ow31hQcIxts </youtube> | <youtube> Ow31hQcIxts </youtube> | ||
</div> | </div> | ||
=== 2. アクティブブザーと[[택트 스위치(Tact Switch)|タクトスイッチ]]の組み合わせ === | |||
[[택트 스위치(Tact Switch)|タクトスイッチ]]を押すとアクティブブザーが音を鳴らす例です。 | |||
=== 2. | ==== 2-1. 回路構成 ==== | ||
この例では、タクトスイッチにINPUT_PULLUP抵抗を使用しています。 | |||
PULLUP、PULLDOWN、INPUT_PULLUP抵抗についての詳細は、[[택트 스위치(Tact Switch)|タクトスイッチ]]のページをご覧ください。 | |||
[[파일:부저 예제1 회로.jpg|가운데|class=coders100]] | [[파일:부저 예제1 회로.jpg|가운데|class=coders100]] | ||
==== 2-2. | ==== 2-2. コード ==== | ||
<syntaxhighlight lang="c++" line="1"> | <syntaxhighlight lang="c++" line="1"> | ||
#define buzzer 6 | #define buzzer 6 | ||
| 122번째 줄: | 116번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 2-3. 実行結果 ==== | |||
==== 2-3. | |||
<div class="coders70"> | <div class="coders70"> | ||
<youtube> T7I3b59x0QA </youtube> | <youtube> T7I3b59x0QA </youtube> | ||
</div> | </div> | ||
=== 3. パッシブブザーで音階を再生 === | |||
パッシブブザーは、アクティブブザーとは異なり、周波数を制御して異なる音を表現できます。 | |||
「ドレミファソラシド」の音階を順に再生する例です。 | |||
==== 参考資料:オクターブおよび音階ごとの標準周波数 ==== | |||
==== | |||
[[파일:옥타브 및 음계별 표준 주파수.png|가운데|class=coders100]] | [[파일:옥타브 및 음계별 표준 주파수.png|가운데|class=coders100]] | ||
==== 3-1. 回路構成 ==== | |||
ハードウェア接続の回路を参考にしてください。 | |||
==== 3-2. コード ==== | |||
==== 3-2. | |||
<syntaxhighlight lang="c++" line="1"> | <syntaxhighlight lang="c++" line="1"> | ||
#define buzzer 11 | #define buzzer 11 | ||
int numTones = 8; | int numTones = 8; | ||
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 }; | double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 }; | ||
| 163번째 줄: | 152번째 줄: | ||
for (int i = 0; i < numTones; i++) | for (int i = 0; i < numTones; i++) | ||
{ | { | ||
tone(buzzer, tones[i]); | tone(buzzer, tones[i]); | ||
delay(500); | delay(500); | ||
} | } | ||
noTone(buzzer); | noTone(buzzer); | ||
delay(500); | delay(500); | ||
| 176번째 줄: | 162번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 3-3. 実行結果 ==== | |||
==== 3-3. | |||
<div class="coders70"> | <div class="coders70"> | ||
<youtube> vayYbS_Qjy0 </youtube> | <youtube> vayYbS_Qjy0 </youtube> | ||
</div> | </div> | ||
=== 4. パッシブブザーでメロディを再生 === | |||
パッシブブザーで簡単なメロディを再生する例です。 | |||
この例を基に、他のメロディにも応用可能です。 | |||
==== 4-1. 回路構成 ==== | |||
ハードウェア接続の回路を参考にしてください。 | |||
==== 4-2. | ==== 4-2. コード ==== | ||
<syntaxhighlight lang="c++" line="1"> | <syntaxhighlight lang="c++" line="1"> | ||
#define buzzer 11 | #define buzzer 11 | ||
| 198번째 줄: | 181번째 줄: | ||
int numTones = 8; | int numTones = 8; | ||
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 }; | double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 }; | ||
int cnt = 0; | int cnt = 0; | ||
| 211번째 줄: | 193번째 줄: | ||
{ | { | ||
tone(buzzer, g_tones[0]); | tone(buzzer, g_tones[0]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[2]); | tone(buzzer, g_tones[2]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[4]); | tone(buzzer, g_tones[4]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[4]); | tone(buzzer, g_tones[4]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[5]); | tone(buzzer, g_tones[5]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[5]); | tone(buzzer, g_tones[5]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[6]); | tone(buzzer, g_tones[6]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[5]); | tone(buzzer, g_tones[5]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[1]); | tone(buzzer, g_tones[1]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[4]); | tone(buzzer, g_tones[4]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[4]); | tone(buzzer, g_tones[4]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[2]); | tone(buzzer, g_tones[2]); | ||
delay( | delay(500); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[1]); | tone(buzzer, g_tones[1]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[2]); | tone(buzzer, g_tones[2]); | ||
delay( | delay(250); | ||
noTone(buzzer); | noTone(buzzer); | ||
tone(buzzer, g_tones[3]); | tone(buzzer, g_tones[3]); | ||
delay( | delay(1000); | ||
noTone(buzzer); | noTone(buzzer); | ||
cnt++; | cnt++; | ||
}else | } | ||
else | |||
{ | { | ||
| 281번째 줄: | 264번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 4-3. 実行結果 ==== | |||
動画準備中 | |||
== '''その他の活用例''' == | |||
ブザーは音が必要なさまざまなプロジェクトに活用できます。 | |||
== ''' | |||
* ''' | * '''アラームシステム''':特定の条件が満たされたときに警告音を鳴らすシステム | ||
* '''タイマー''':時間の経過を知らせる音 | |||
* '''音楽再生''':簡単なメロディや効果音を再生する装置 | |||
* '''ゲーム''':ゲーム内の効果音や勝敗を知らせる音 | |||
2025년 3월 27일 (목) 14:20 판

概要
ブザー(Buzzer)は音を発生させる装置で、Arduinoのようなマイクロコントローラーボードと組み合わせて使用され、さまざまなプロジェクトで警告音、通知音、音楽などを再生するために使用されます。ブザーは主にアクティブブザー(Active Buzzer)とパッシブブザー(Passive Buzzer)に分けられます。
アクティブブザーとパッシブブザー
アクティブブザー(Active Buzzer)
アクティブブザーは内部に発振回路が内蔵されており、電源を供給するだけで自動的に音を鳴らします。制御が簡単で、主に一定の周波数(音の高さを変えず一種類)の音を出すのに使用されます。
- 簡単な制御:単に電源をオン・オフするだけで音が出ます。
- 一定の周波数:特定の周波数の音のみを発生させます。
パッシブブザー(Passive Buzzer)
パッシブブザーは、電源を供給しても自動的には音が出ません。PWM(Pulse Width Modulation)信号を使用して周波数を制御することで、さまざまな周波数の音を生成できます。メロディや多様な音を再生するのに便利です。
- 複雑な制御:外部回路またはソフトウェアで周波数を制御する必要があります。
- 多様な周波数:さまざまな周波数の音を発生させることができます。
アクティブブザーとパッシブブザーの識別
アクティブブザーとパッシブブザーは外見では区別が難しい場合があります。簡単なテストで識別する方法があります。
1. ラベルとマーキング
外観による識別方法ですが、製品によって表示が異なるため確実とは限りません。
- アクティブブザー:「Active」や特定の周波数(例:「5V 12kHz」)と表示されていることがあります。
- パッシブブザー:「Passive」または周波数表示のないことが多いです。
2. テスト
最も確実な方法は、簡単な回路を組んでテストすることです。
- アクティブブザー:電源を接続するとすぐに音が出ます。
- パッシブブザー:電源を接続しても音が出ず、周波数信号を入力すると音が出ます。
回路構成
製品によってブザーの形状は異なりますが、原理は同じです。
ピンが2本の場合
- ブザーの+端子をArduinoのデジタルピンに接続します。
- ブザーの-端子をArduinoのGNDに接続します。

ピンが3本の場合
- ブザーの+端子(またはVCC)をArduinoの5Vピンに接続します。
- ブザーの-端子をArduinoのGNDに接続します。
- ブザーの信号ピンをArduinoの任意のデジタルピンに接続します。
※ 下の写真と異なるモデルの場合、ピンの位置が異なることがありますので、よく確認して接続してください。

活用例
1. アクティブブザーの制御
アクティブブザーを3回鳴らす例です。
1-1. 回路構成
下の写真は3ピンタイプの例です。2ピンタイプを使用する場合は、上記のハードウェア接続を参考にしてください。

1-2. コード
const int iopin = 7;
void setup() {
pinMode(iopin, OUTPUT);
digitalWrite(iopin, HIGH);
for (int i = 0; i < 3; i++) {
digitalWrite(iopin, LOW);
delay(500);
digitalWrite(iopin, HIGH);
delay(500);
}
}
void loop() {
delay(10);
}
1-3. 実行結果
2. アクティブブザーとタクトスイッチの組み合わせ
タクトスイッチを押すとアクティブブザーが音を鳴らす例です。
2-1. 回路構成
この例では、タクトスイッチにINPUT_PULLUP抵抗を使用しています。
PULLUP、PULLDOWN、INPUT_PULLUP抵抗についての詳細は、タクトスイッチのページをご覧ください。

2-2. コード
#define buzzer 6
#define btn 12
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(btn, INPUT_PULLUP);
}
void loop() {
if (!digitalRead(btn)) {
for (int i = 0; i < 6; i++) {
digitalWrite(buzzer, !digitalRead(buzzer));
delay(100);
}
}
delay(10);
}
2-3. 実行結果
3. パッシブブザーで音階を再生
パッシブブザーは、アクティブブザーとは異なり、周波数を制御して異なる音を表現できます。
「ドレミファソラシド」の音階を順に再生する例です。
参考資料:オクターブおよび音階ごとの標準周波数

3-1. 回路構成
ハードウェア接続の回路を参考にしてください。
3-2. コード
#define buzzer 11
int numTones = 8;
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(buzzer, tones[i]);
delay(500);
}
noTone(buzzer);
delay(500);
cnt++;
}
}
3-3. 実行結果
4. パッシブブザーでメロディを再生
パッシブブザーで簡単なメロディを再生する例です。
この例を基に、他のメロディにも応用可能です。
4-1. 回路構成
ハードウェア接続の回路を参考にしてください。
4-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 };
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
tone(buzzer, g_tones[0]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[6]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(1000);
noTone(buzzer);
cnt++;
}
else
{
}
}
4-3. 実行結果
動画準備中
その他の活用例
ブザーは音が必要なさまざまなプロジェクトに活用できます。
- アラームシステム:特定の条件が満たされたときに警告音を鳴らすシステム
- タイマー:時間の経過を知らせる音
- 音楽再生:簡単なメロディや効果音を再生する装置
- ゲーム:ゲーム内の効果音や勝敗を知らせる音