それでは必要なDTMF音源がそろったところで、それらを意図した順番で鳴らしてみましょう。音楽の世界では音源を一定の順序で鳴らす機械のことを「シーケンサー」といいます。今回はそのシーケンサーの役割をプログラミングで実現しようというものです。
保存しておいたDTMF音源をScratchに取り込みます。Scratchの基本的な使い方は、先に挙げた記事「Webブラウザではじめるフィジカルコンピューティング――Scratch 2.0とは?」を参考にしてください。現在はScratchの最新版はScratch 3.0なのでそれを使います。筆者の過去記事で紹介したScratchのバージョンは2.0ですが、基本的な使い方は参考になると思います。それでは早速音源ファイルを取り込む作業に移りましょう。
Scratchのスタートアップ画面の左上に3つ並んでいるタブのうち「音」を選択すると図3のような画面になります。このスクリーンショットは既に、DTMF-1.mp3、DTMF-2.mp3、DTMF-4.mp3、DTMF-8.mp3を取り込んだ状態になっています。もし新たに音源ファイルを取り込むのであれば、画面左下のアイコンにマウスのポインターを乗せるとメニューが展開されます。そのうち一番上のアイコンを選択すると音源ファイルをローカルPCのストレージからアップロードできます。以上の作業を4回繰り返すことにより必要な4つの音源ファイルをScratchのプログラムで発声させることができるようになります。
左上のタブから「コード」を選ぶと図4のような画面になります。まずは、左端に縦方向に並んでいるアイコンから赤紫色の「音」アイコンを選択します。すると音に関係するブロックが表示されます。その中から「終わるまで{XXX}の音を鳴らす」と書かれたブロックを選んでください。このブロックを画面中央のコードエリアに4つ配置します。各ブロックの{XXX}のところで音源ファイルを選択します。選択ボックス右側の白い下三角をクリックすれば、このScratchのプロジェクトにアップロードされた音源ファイルの一覧が表示されるので選択できます。
ここで、どの音源ファイルをどういう順番で発声させればよいか確認してみましょう。まずは前ページの図1で示したステッピングモーターを見てください。X系コイル、Y系コイルに電流を流す順序をおさらいします。COM(X)とCOM(Y)には、それぞれプラス電源に接続されているものとします。この前提で、Xにマイナス、次にYにマイナス、そして−Xにマイナス、そして最後に−Yにマイナス電圧を印加します。それをDTMFエンコーダーの出力に対応させると、q1、q3、q2、q4となります。これはPC側のプログラムから発声させるDTMFのシンボルに対応させると「1」「4」「2」「8」となります。
この音源発生のシーケンスをScratchで実現するには図3に示した順番で4つのブロックを配置する必要があります。さらに、これらを囲んでいるオレンジ色のブロックは制御ブロックといわれるもので、囲んだブロックの実行を繰り返します。図3では、4つのブロックのシーケンスを10回繰り返しています。
このままでもステッピングモーターを回すことは可能なのですが、ここで少し音源の微調整が必要です。このサンプルで用意したDTMF音源の長さは1秒です。これは少し長すぎます。Scratchの「音」タブを選択すれば音源ファイルを編集できます。この機能を用いて、ステッピングモーターの制御に適切なもっと短い音に調整することをお薦めします。
そしてこの実験で注意すべきなのが、ステッピングモーターを接続した状態で電流が流れ続ける状態を避けることです。一定のテンポで回転しているときはよいのですが、何らかの理由でステッピングモーターを止めた場合、どこかのコイルに電流が流れ続けている状態でモーターが停止している場合があります。この状態だと、コイルと駆動用のトランジスタに電流が流れている場合があり、その状態を放置すると電源やトランジスタあるいはステッピングモーターのコイルが発熱する場合があります。ですから、モーターの回転を止めた後は駆動系の主電源は切るように心掛けてください。
なお、今回紹介したScratchのプログラムは以下のURLから参照可能です。
⇒https://scratch.mit.edu/projects/745339836/
本稿では特に触れなかったのですが、オーディオ信号を直接編集してステッピングモーター駆動用の信号を生成することもできます。この方法だとオーディオ編集ソフトだけの操作ですのでプログラミングの必要がありません。一度オーディオファイルを作成すればさまざまなデバイスからステッピングモーターの操作が可能となります。
前後編にわたって、PCなどのオーディオ出力をいわゆるインタフェースとして用いてステッピングモーターを制御する方法について紹介しました。オーディオ信号とステッピングモーターとはなかなか連想しづらい組み合わせですが楽しんでいただけたでしょうか。これからも、風変りな発想ではありますが読者の皆さんにさまざまな気付きを提供できる記事を書き続けていければと思います。
Copyright © ITmedia, Inc. All Rights Reserved.