🤖
エンジくん
Chapter 4へようこそ!今まではLEDを光らせたり、センサーで測ったりしてきたね。今度は音を出すことに挑戦!ブザーと
tone()関数を使って、自分だけのメロディーを作ろう!
1このレッスンで学ぶこと
- 🎵 ブザー(パッシブ) — 周波数で音の高さを変える
- 📣 tone(ピン, 周波数, 時間) — 音を鳴らす関数
- 🔇 noTone(ピン) — 音を止める
- 🎼 配列でメロディー — 音符を並べてfor文で演奏
- 🎹 ピアノシミュレーター — ブラウザで音を試せる!
2用意するもの
3tone()のしくみと音の仕組み
🎵 音って何?
音は空気の振動です。振動が速い(周波数が高い)ほど高い音、遅い(周波数が低い)ほど低い音になります。単位はHz(ヘルツ)で「1秒間に何回振動するか」を表します。
🔽
低い音
周波数 小(例: ド=262Hz)
振動がゆっくり
🔼
高い音
周波数 大(例: 高いド=523Hz)
振動が速い
📣 tone()関数の使い方
tone(ピン番号, 周波数(Hz), 鳴らす時間(ms));
ピン番号: ブザーをつないだデジタルピン(例: 8)
周波数: 音の高さ(262〜4186Hz)
鳴らす時間: ミリ秒(省略すると鳴り続ける)
// 音を止める
noTone(ピン番号);
noTone(ピン番号);
🎼 ドレミ周波数表(C4オクターブ)
| 音名 | ドイツ語 | 英語 | 周波数 |
|---|---|---|---|
| ド | C | C4 | 262 Hz |
| レ | D | D4 | 294 Hz |
| ミ | E | E4 | 330 Hz |
| ファ | F | F4 | 349 Hz |
| ソ | G | G4 | 392 Hz |
| ラ | A | A4 | 440 Hz |
| シ | B | B4 | 494 Hz |
| 高いド | C' | C5 | 523 Hz |
4コードを見てみよう
const int BUZZER = 8;
// ドレミの周波数(Hz)
int melody[] = { 262, 294, 330, 349, 392, 440, 494, 523 };
int noteCount = 8;
int noteDuration = 400; // 1音あたり400ms
void setup() {
pinMode(BUZZER, OUTPUT);
// ドレミファソラシドを演奏
for (int i = 0; i < noteCount; i++) {
tone(BUZZER, melody[i], noteDuration);
delay(noteDuration + 50); // 音の長さ + 休符
noTone(BUZZER);
}
}
void loop() {
// setup()で演奏するので loop() は空
}
🎵 noteDuration + 50 の「+50」は音と音の間の短い間(休符)です。これがないと音がつながりすぎてしまいます!
💡 setup()で演奏するとArduino起動時に1回だけ鳴ります。loop()に書くと繰り返し鳴ります。用途に合わせて使い分けよう!
5回路のつなぎ方
⚠️ 100Ω抵抗を直列に入れることでピンへの電流を保護しよう。アクティブブザーを使う場合はtone()は使えないので注意!
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
tone()関数と周波数の関係をしっかり覚えよう!音楽プログラムの基礎だよ!
クイズを読み込み中…
8ピアノシミュレーター 🎹
🤖
エンジくん
鍵盤を押して音を確かめよう!「ドレミ演奏」ボタンで自動演奏もできるよ!
9まとめ
- ✅
tone(ピン, Hz, ms)で指定した周波数の音を鳴らせる - ✅
noTone(ピン)で音を止める - ✅ ドは262Hz、ラは440Hz(標準音)、高いドは523Hz
- ✅ 周波数を配列に入れてfor文で順番に演奏するとメロディーが作れる
- ✅ パッシブブザーを使うと好きな音程が出せる!アクティブは固定音のみ