ArduinoでPC98起動音

Arduinoが楽しすぎる。

(とっくにご存知の方も多いでしょうが)これが何なのかというと、マイコンを使った電子工作がスゲー楽に楽しくなる装置です。値段は概ね3,000円くらい。

で、とりあえずブレッドボードとタクトスイッチと10kΩ抵抗とジャンパワイヤ、スピーカーを用意して作ったのがこれ。

自分で言うのもアレですが、この動画の音ちっさ過ぎ。

つくりかた。
こんな感じでつなぎます。

ArduinoでPC98起動音 ブレッドボードArduinoでPC98起動音 回路図
字が下手とか直線が引けてないとかは私も知ってるので。
※回路図のスピーカーのつなぎ方が極性逆ですねこれ、鳴ることは鳴るけど
スピーカーを10番ピンとGNDに直結してます。音がデカいようなら間に抵抗をかましてください。壊れやしないとは思いますが。

Arduinoの公式サイトから開発環境をダウンロードしてきてインストール。
そいつを起動してプログラムを書きます。Windows/Mac/Linux対応だそうですが、私はWindows7でしか試してません。
プログラミング言語はC/C++っぽい感です。日本語のリファレンスはこちらのサイトで。
PC98起動音を鳴らすプログラムはこんな。

// Input Pin
const int BUTTON_IN = 2;

// Output Pin
const int SOUND_OUT = 10;
const int LED_OUT = 13;

// Hz
#define NOTE_C6  1047
#define NOTE_C7  2093

void setup() {
  pinMode(BUTTON_IN, INPUT);
  pinMode(SOUND_OUT, OUTPUT);
  pinMode(LED_OUT, OUTPUT);

  pipo(100);
}

void loop() {
  if (digitalRead(BUTTON_IN) == HIGH){
    pipo(100);
  }
}

void pipo(int duration)
{
  snd(NOTE_C7, duration);
  snd(NOTE_C6, duration);
  delay(duration);
}

void snd(int hz, int dur)
{
  digitalWrite(LED_OUT, HIGH);
  tone(SOUND_OUT, hz, dur);
  delay(dur);
  digitalWrite(LED_OUT, LOW);
}

このプログラムをコンパイルして、USBケーブルをArduinoにつなげて転送します。

シンプルなものですが一応解説を入れると、
最初に一回だけ設定される関数setup()の中で

  • 2番ピンをボタン入力用に設定
  • 10番ピンをスピーカー出力に設定
  • 景気付けにpipo()を呼ぶ

実行中ずっとぐるぐる実行される関数loop()の中で

  • ボタンが押されているか確認
  • 押されていたらpipo()を呼ぶ

pipo()関数の中で

  • 押されていたら7オクターブ目のド(2093Hz)、6オクターブ目のド(1047Hz)を100ミリ秒ずつ鳴らす

ということをやっています。

さっき貼ったYouTubeの動画ではタクトスイッチを3つ用意してそれぞれ別の秒数を指定してますが、ここではまあシンプルに1つで。
あとなんかタクトスイッチが壊れて音が鳴りっぱなしになって、さっきの動画が再現できなくなっちゃったので。こんな単純なパーツどうやったら壊せるんだよ俺。
そんな雑なやつが使っても壊れないArduinoはすげえ。Arduino作った人もまさかこんなことで褒められるとは思ってなかっだろうな。

このピポって鳴らすやつは自分でも気に入ってるので、スピーカーを使うプログラムの時はだいたいsetup()関数の最後で使うようにしてます。
でもまあ、これだけじゃつまんないので次に作ったのがこんなの

これについてはまた後日。


コメントを残す