第3回 ブザー
1.やってみよう
(1) 図1に示す実験回路を作りなさい。
図1.実験回路
(2) Arduinoのプログラミング環境に、つぎのプログラムを入力しなさい。
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, 1); delayMicroseconds(500); digitalWrite(13, 0); delayMicroseconds(500); }
(3) 書き込みボタンを押してプログラムを実行し、ブザーが鳴ることを確認しなさい。
2.解説
図2に示すように、0と1が交互に繰り返す波形を出力するとブザーを鳴らすことができる。こうした波形を矩形波と呼ぶ。基本周期が長いと低い音、基本周期が短いと高い音になる。
図2.ブザーのしくみ:(a) 基本周波数1000Hzの矩形波, (b) 基本周波数2000Hzの矩形波
3.課題
(1) 矩形波の音を使って「ドレミファソラシド」のフレーズを繰り返し鳴らすプログラムを作りなさい。
(2) 8個のタクトスイッチを鍵盤に見立て、それぞれに異なる音の高さを割り当てることで、矩形波の音を鳴らす電子ピアノを作りなさい。
4.ヒント
一般に、楽器は12平均律音階の定義にしたがって音の高さが調律されている。図3に、12平均律音階におけるC7~C8音の基本周波数と基本周期を示す。
図3.12平均律音階:(a) 基本周波数,(b) 基本周期
マイコンボードを使って矩形波の音を鳴らすには、定石どおり0と1のディジタル信号を交互に出力するプログラムを作ることが正攻法であるが、じつは、Arduinoはtone関数という組み込み関数を使って矩形波を鳴らすこともできるようになっている。
tone関数には音の長さを設定する機能も用意されている。たとえば、基本周波数1000Hzと2000Hzの矩形波の音を500msごとに繰り返し鳴らすプログラムはつぎのようになる。
void setup() { pinMode(13, OUTPUT); } void loop() { tone(13, 1000, 500); delay(500); tone(13, 2000, 500); delay(500); }
Last Modified: May 31 12:00 JST 2016 by Naofumi Aoki
E-mail: aoki@ime.ist.hokudai.ac.jp