【小学生向けプログラミング】初心者キットで作る「ボタンで弾く電子オルガン」|押すたびにドレミが出る装置

ドレミが弾ける! ボタン式電子オルガン

ボタンを押すとドレミが出るオルガンを作ろう

プログラミングで楽器作りたいんだ。鍵盤みたいなやつ。

「ボタンで弾く電子オルガン」を作ろう! 5個のボタンに「ドレミファソ」を割り当てて、押すとそのドレミが出るんだ。簡単な曲も弾けるよ。

今回は、プログラミングで楽器を作ってみたい小学生に向けて、初心者キットだけで作れる「ボタンで弾く電子オルガン」を紹介します。

5個のタクトスイッチに「ド・レ・ミ・ファ・ソ」を割り当てて、押すとそのドレミがパッシブブザーから出る装置です。チューリップやキラキラ星のような簡単な曲が弾けます。

この記事で作るもの
  1. 5個のボタン (ドレミファソ)
  2. 押している間だけ音が出る
  3. 複数押すとボタン番号が大きい方の音が優先される
  4. 簡単な曲が弾ける

使う部品

部品役割個数
Arduino UNO R3頭脳1
タクトスイッチ5音の鍵盤5
パッシブブザー音を出す1
ブレッドボード配線1
ジャンパーワイヤーつなぐ12本前後

配線図

        a b c d e
       +─────────+
[-]rail| . . . . . | ← GND
       +─────────+
row 3  | X . . . . | ← SW1 ド (D2)
row 5  | X . . . . | ← SW1 反対 ([-])
row 7  | X . . . . | ← SW2 レ (D3)
row 9  | X . . . . | ← SW2 反対 ([-])
row 11 | X . . . . | ← SW3 ミ (D4)
row 13 | X . . . . | ← SW3 反対 ([-])
row 15 | X . . . . | ← SW4 ファ (D5)
row 17 | X . . . . | ← SW4 反対 ([-])
row 19 | X . . . . | ← SW5 ソ (D6)
row 21 | X . . . . | ← SW5 反対 ([-])
row 24 | X . . . . | ← ブザー+ (D8)
row 25 | X . . . . | ← ブザー- ([-])
       +─────────+

部品同士のつながり

Arduino     役割
  D2  ←──  ド (SW1)
  D3  ←──  レ (SW2)
  D4  ←──  ミ (SW3)
  D5  ←──  ファ (SW4)
  D6  ←──  ソ (SW5)
  D8  ──→  パッシブブザー

プログラム

const int BTNS[5] = {2, 3, 4, 5, 6};
const int NOTES[5] = {262, 294, 330, 349, 392};  // ド レ ミ ファ ソ
#define BUZZER 8

void setup() {
  for (int i = 0; i < 5; i++) pinMode(BTNS[i], INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("電子オルガン スタート!");
  Serial.println("D2=ド, D3=レ, D4=ミ, D5=ファ, D6=ソ");
}

void loop() {
  int playing = -1;
  for (int i = 0; i < 5; i++) {
    if (digitalRead(BTNS[i]) == LOW) {
      playing = i;
    }
  }

  if (playing >= 0) {
    tone(BUZZER, NOTES[playing]);
  } else {
    noTone(BUZZER);
  }
}

プログラムの動き

flowchart TD A[起動] --> B[5個のボタンを順番に読む] B --> C{"どれか
押されてる?"} C -->|Yes| D[そのドレミを鳴らす] C -->|No| E[音を止める] D --> B E --> B

プログラミングのポイント

このプログラムでは、配列を2つ並行に使って「ピンと音を対応させる」のがポイントです。BTNS[0]とNOTES[0]がペア、BTNS[1]とNOTES[1]がペア、と覚えれば理解しやすいです。

「キラキラ星」って弾ける?

「ラ」が必要なので、5音 (ドレミファソ) だけだと弾けないんだ。発展アイデアの6個目ボタンに「ラ (440Hz)」を足すと、キラキラ星まで弾けるようになるよ。チューリップやかえるの歌は5音でOK。

弾ける曲のアイデア

5音で弾ける曲
  1. キラキラ星 (ドドソソララソー… ※「ラ」を6つ目ボタンで追加すると弾ける)
  2. チューリップ (ドレミー、ドレミー…)
  3. ちょうちょ (ソミミー、ファレレー…)
  4. かえるの歌 (ドレミファミレドー…)

自由研究としての展開

研究テーマのアイデア
  1. 家族に聞いてもらって、どの曲が一番分かるか調査
  2. 音を1オクターブ上げた値も計算して比較
  3. 本物の鍵盤楽器との音の違いを聞き比べ
  4. 半音は約1.06倍、ド→レは全音で約1.12倍、と比率の違いを発見

改造のアイデア

発展アイデア
  1. 7個のボタンに増やして1オクターブ完成
  2. LEDで「今押されてる音」を視覚的に表示
  3. 録音モード (押した順番をシリアル出力)
  4. 自動演奏モード (キラキラ星をプログラムで再生)

まとめ

今回は、小学生のプログラミング自由研究で楽しめる「ボタンで弾く電子オルガン」を紹介しました。5音だけで実際に曲が弾ける、達成感の大きい作品です。

大切なのは、完成後に実際に曲を弾いて、家族に聞かせることです。「自分でプログラムした楽器」というのは、最高のプレゼントになります。

他にも初心者キットだけで作れる作例を別の記事で紹介しているので、興味があれば見てみてね。