夏も本番! 暑い日が続くと冷たいものが欲しくなるね。でも飲み物を出した後に、うっかり冷蔵庫のドアを閉め忘れちゃうことってない? そうすると電気代もかかるし、中のものも傷んでしまう。今回はそんなことが起こらないように、冷蔵庫の中に入れて使える、ドアが開いている間だけ音が鳴るオルゴールをつくろう!
《用意するもの》
スタディーノ基板…1個
電池ボックス…1個
圧電スピーカー(PKM13EPYH4000-A0)…1個
フォトトランジスター(SFH309)…1個
抵抗器 100kΩ(茶黒黄金)…1個
ミニブレッドボード…1個
ジャンパー線 オスーオス…3本
圧電スピーカー(KM13EPYH4000-A0)からは、2本のリード線(針金)が出ている。この片方をスタディーノの「A0」のソケット(穴が開いているところ)、もう片方を「GND」のソケットに差し込もう。差し込むソケットは、今までセンサーケーブルを差し込むのに使っていた「A0」のピン(3本が縦に並んだ金色の針)とは違うので気をつけよう。向きはないので、どちらのリード線をどちらに差しても大丈夫だ。
次に、スタディーノ基板とパソコンをUSBケーブルでつなぎ、パソコンでブロックプログラミング環境を起動しよう。起動したら、[編集]メニューの[入出力設定…]を開き、右上の[ボタン]にある[A0]のチェックを外す。それから[センサー/LED/ブザー]にある[A0]にチェックを入れて、メニューから[ブザー]を選ぶ。終わったら、「OK」ボタンで入出力設定を閉じよう。
[実行]メニューから[テストモード開始]を選ぶ。モードが切り替わったら[動き]カテゴリーにある[ブザーA0から60を出力する]のブロックをクリックしてみよう。音が鳴るかな? 「60」という数字は、電子楽器の国際規格MIDIで使われている音階を表す数字で、ノート番号という。60はC、つまり「ド」の音だ。数字が大きくなると高い音、小さくなると低い音になるよ。音が鳴らないときは配線を確認しよう。音を止めたいときは、「ブザーA0の出力を停止する」のブロックをクリックしよう。
次に、上のプログラムをつくって実行してみよう。「ドレミ」と鳴るはずだ。ノート番号を覚えていなくても、「60▼」の「▼」をクリックすると表示されるピアノの鍵盤で入力できるよ。また、似た組み合わせがたくさんあるときは、ブロックを右クリックすると表示されるメニューにある「複製」を使うと便利だ。
このプログラムでは、出力と出力の間で0.5秒待っているので、1秒間に2回、1分間に120回、音が鳴る。つまり、それぞれの音は、4/4拍子で?=120のときの4分音符の長さになっているよ。
「かえるのうた」の頭の部分を演奏してみよう。ドレミ譜と、それに対応したノート番号は下の通りだ。休符は0で表したよ。
これらをさっきのように「ブザーA0から~を出力する」のブロックに入力してもいいけど、ノート番号だけを楽譜データとして管理することで、プログラム本体を簡単にすることもできる。そこで使うのが「リスト」だ。
リストは、複数の変数をひとまとまりにして、名前をつけたようなもの。学校の靴箱みたいに変数が順番に並んでいて、番号で中身を出し入れできる。これは、ほかのプログラミング言語の「配列」とほぼ同じものだ。
リストをつくるには、[変数]カテゴリーの[リストを作る]ボタンをクリックする。名前は「score」(楽譜という意味)にしよう。[OK]ボタンをクリックすると、リストを操作するためのブロックが追加される。
リストにノート番号を入れるには、[~をscoreに追加する]ブロックを使う。これを「かえるのうた」で必要な分だけ用意しよう。
また、ノート番号を追加する前に、リスト「score」の長さの回数だけ、[1番目をscoreから削除する]を繰り返している。リストは、1番目を削除すると、2番目以降が1つ上に繰り上がってくる。だから、「1番目を削除」をリストの長さ分繰り返すと、リストの中身を空っぽにできるんだ。もしリストを空にしないと、実行するたびに「追加する」ブロックによってリストが長くなってしまうよ。
リストにノート番号を入れるプログラムはこんな感じ。「initialize(初期化)」関数として定義したよ。
リスト通りに演奏するには、scoreに入力されたノート番号を1番目から順番にひとつずつ取り出して、[ブザーA0から~を出力する]で鳴らせばいいね。休符のとき(ノート番号が0のとき)は、[ブザーA0の出力を停止する]にしよう。次に演奏するリストの番号を表すため、変数「index」をつくっておこう。演奏用プログラムは「play」関数として定義したよ。
最後に、これらの関数を呼び出すメインプログラムをつくったら、緑の旗をクリックしよう。ちゃんと曲が演奏されたかな? これでオルゴール部分は完成だ。
冷蔵庫は、ドアを閉めると明かりが消えて、中は真っ暗になる。ということは、ドアの閉め忘れを調べるには、光センサーを使えばよさそうだね。
Studuinoの光センサーには、フォトトランジスターという部品が使われている。フォトトランジスターは、半導体に光を当てると、伝導電子が増えて、電流が流れる光電効果を使った部品だ。今回は、フォトトランジスターのSFH309と100kΩの抵抗を使って、ミニブレッドボードに配線するよ。
ミニブレッドボードには、穴がたくさんあいている。この穴に部品のリード線や、配線に使うジャンパーケーブルのピンを差し込んで配線するんだ。
ミニブレッドボードを横向きにしたとき、縦に並んでいる5つの穴は中でつながってるよ。逆に、横に並んでいる穴はつながっていないんだ。上下の段もつながっていない。この性質をうまく使うことで、いろいろな回路を組み立てることができるんだ。
さっそく、フォトトランジスターSFH309を差し込んでみよう。SFH309は白色LEDとソックリだけど、上から見たときに薄い黄色に見える方が白色LEDで、見えないのがSFH309だ。SFH309のリード線には、長い方(マイナス側)と短い方(プラス側)がある。LEDとは逆なので気をつけよう!!
短い方が右になるように、写真のようにブレッドボードの穴に差し込もう。
次に100kΩの抵抗器を取りつける。写真のように、リード線をコの字型に折り曲げよう。
写真のようにブレッドボードの穴に差し込もう。
続いて、オス-オスのジャンパーケーブル(両端にピンがついているもの)を取りつけよう。ケーブルの色はおまかせだけど、全部違う色だとわかりやすい。ここでは、緑、青、赤を使ったよ。
回路を上から見るとこんな感じ。
ここでは、GNDには緑、A4には青、3.3V(3V3)には赤のジャンパーケーブルを使ったよ。
ジャンパーケーブルの反対側はスタディーノ基板に差し込むよ。差し込む端子は、緑はGND、青はA4、赤は3V3(3.3Vのこと)だ。写真は青(A4)と赤(3V3)を刺したところ。
写真は緑(GND)を刺したところ。
最後に、ブザーのときと同じように、入出力設定を開いて、A4を「光センサー」に設定しよう。これで準備は完了!トップページに戻って、「プログラム」のページを見てね。