「音声をカンタンに再生できる」と思って、このシールドを選んだのですが、メーカーのWebサイトで公開されているサンプルコード(画像7)を動かすのに予想外にてこずりました。
実は、使用しているライブラリが新しくなっていて、公開されているサンプルコードの一部を書き換えなければならなかったのです。
サンプルコードは、コメントを入れて311行もあります。ガンバって読み下しましたが、なかなか手ごわいです(泣)。
「このサンプルコードを使用するためには、別途『SDfatlib』が必要で、そちらのソースコード(スケッチ)を書き直す必要がある……」と冒頭に書いてあります。ところが「SDfatlib」が更新されていて、肝心の書き直すファイルがパッケージから外れているのです……。
「一体、どうすればいいのよ〜」と初心者代表の筆者は頭を抱えました。ネットをさまよい情報収集したところ、結局、答えは上記Webサイトでユーザー同士がやりとりしている投稿の中にありました(画像8)。英語力のない筆者には、ハードルが高かったです(泣)
このコメントで修正を指示されているのは、上記サンプルコードの135行目です。
if (!card.init(SPI_FULL_SPEED)) Serial.println("Error: Card init"); //Initialize the SD card and configure the I/O pins.
↓
if (!card.init(SPI_FULL_SPEED,9)) Serial.println("Error: Card init"); //Initialize the SD card and configure the I/O pins.
これでOK。この引数は、MP3プレーヤーシールドが9番ピンでマイクロSDカードにアクセスしているためです。分かっていればカンタンなのですが、情報にたどり着くまでに苦労しました。
別途、SdFatライブラリをインストール(後述)して、再生したい音声データを「track001.mp3」〜「track999.mp3」と命名してマイクロSDカードに保存すれば、順番に再生してくれます。
しかしながら、このサンプルコードは長い……。初心者からすると、もう少し簡易なスケッチでシールドを使えるとうれしいですよね。そこで、メーカーのWebサイト内で先ほどの修正のアドバイスを提示していたmadsci1016さんのライブラリ「Sparkfun MP3 Shiled Arduino Library」をダウンロードしてみました。「使いやすくて、スバらしいボクのライブラリを利用するといいよ!」とのことです。
さすが「使いやすい!」と豪語するだけあって、madsci1016さんのスケッチは非常にシンプル(スケッチ3)。今回はこちらのライブラリを使わせていただきました。
#include <SPI.h> #include <SdFat.h> #include <SdFatUtil.h> #include <SFEMP3Shield.h> SdFat sd; SFEMP3Shield MP3player; void setup() { Serial.begin(9600); //start the shield sd.begin(SD_SEL, SPI_HALF_SPEED); MP3player.begin(); //start playing track 1 MP3player.playTrack(1); } //do something else now void loop() { Serial.println("I'm bored!"); delay(2000); }
ご覧のように「ライブラリを読み込んで、宣言して、『MP3player.playTrack』を実行すれば、指定したファイルの音声を再生するよ!」と、極めてシンプルな作りになっています。ただし、このスケッチを使用するためには、2つのライブラリをインストールする必要があります。
Sparkfun MP3 Shiled Arduino Libraryのページに表示されている上記スケッチの下に、「Direct Download here.」というリンクがあります。これをクリックして、「Sparkfun-MP3-Player-Shield-Arduino-Library-master.zip」をダウンロードします。
ダウンロードしたZIPファイル解凍して、中にある「SdFat」と「SFEMP3Shield」の2つをフォルダごとArduinoのライブラリフォルダにコピーします(画像9)。
ちなみに、Arduinoのライブラリフォルダは、「Arduino.exe」と同じ階層にあります。「Arduinoをどこにインストールしたか忘れちゃった」という方は、Arduinoのアイコンを右クリックして、プロパティを確認しましょう(画像10)。
このライブラリで再生するMP3データもファイル名を「track001.mp3」〜の連番で命名します。「MP3player.playTrack(1);」と、再生するファイルの番号を引数に入れ、指定されたMP3ファイルが再生されます。
ライブラリの使用上の注意点は、6行目の「SdFat sd;」です。ここで宣言している「sd」というオブジェクト名を変更してはいけません。SFEMP3Shieldライブラリの中で、sdとして使用しているためです。他の名前にすると動かなくなります(こういうライブラリの作り方は、いかがなものかと思います……)。
とまぁ、ちょっぴりクセのあるライブラリですが、設定してしまえば音声の再生がラクラク! という魅力にはかないません。Arduinoはシールドや公開されているライブラリを最大限に活用して、初心者が気軽にモノ作りを楽しむというのが基本コンセプトですからね。
Copyright © ITmedia, Inc. All Rights Reserved.