連載
» 2014年07月07日 09時45分 UPDATE

アイデア・ハック!! Arduinoで遊ぼう(12):ボクだけの「エア彼女」をMP3プレーヤーシールドで自作しよう! (2/3)

[三月兎,MONOist]

MP3プレーヤーシールドのライブラリをテストしよう!

 「音声をカンタンに再生できる」と思って、このシールドを選んだのですが、メーカーのWebサイトで公開されているサンプルコード(画像7)を動かすのに予想外にてこずりました。

 実は、使用しているライブラリが新しくなっていて、公開されているサンプルコードの一部を書き換えなければならなかったのです。


サンプルコード 画像7 MP3プレーヤーシールド(SparkFun製)の商品説明に、サンプルコードが公開されている

 サンプルコードは、コメントを入れて311行もあります。ガンバって読み下しましたが、なかなか手ごわいです(泣)。

 「このサンプルコードを使用するためには、別途『SDfatlib』が必要で、そちらのソースコード(スケッチ)を書き直す必要がある……」と冒頭に書いてあります。ところが「SDfatlib」が更新されていて、肝心の書き直すファイルがパッケージから外れているのです……。

 「一体、どうすればいいのよ〜」と初心者代表の筆者は頭を抱えました。ネットをさまよい情報収集したところ、結局、答えは上記Webサイトでユーザー同士がやりとりしている投稿の中にありました(画像8)。英語力のない筆者には、ハードルが高かったです(泣)

メーカーのWebサイト内で見つけたアドバイス 画像8 メーカーのWebサイト内で見つけたアドバイス

 このコメントで修正を指示されているのは、上記サンプルコードの135行目です。

  if (!card.init(SPI_FULL_SPEED))  Serial.println("Error: Card init"); //Initialize the SD card and configure the I/O pins.
スケッチ1 メーカーが公開しているサンプルコードの135行目

 

  if (!card.init(SPI_FULL_SPEED,9))  Serial.println("Error: Card init"); //Initialize the SD card and configure the I/O pins.
スケッチ2 if文の条件式で呼び出している関数へ、第2引数に「9」を指定する

 これで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);
 
}
スケッチ3 「madsci1016」さんが公開しているスケッチ(Sparkfun MP3 Shiled Arduino Library

 ご覧のように「ライブラリを読み込んで、宣言して、『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)。

解凍 画像9 「Sparkfun-MP3-Player-Shield-Arduino-Library-master」フォルダ内に必要なライブラリと情報がある
libraries 画像10 Arduinoの「libraries」フォルダに「SdFat」と「SFEMP3Shield」フォルダをコピーする

 このライブラリで再生するMP3データもファイル名を「track001.mp3」〜の連番で命名します。「MP3player.playTrack(1);」と、再生するファイルの番号を引数に入れ、指定されたMP3ファイルが再生されます。

 ライブラリの使用上の注意点は、6行目の「SdFat sd;」です。ここで宣言している「sd」というオブジェクト名を変更してはいけません。SFEMP3Shieldライブラリの中で、sdとして使用しているためです。他の名前にすると動かなくなります(こういうライブラリの作り方は、いかがなものかと思います……)。

 とまぁ、ちょっぴりクセのあるライブラリですが、設定してしまえば音声の再生がラクラク! という魅力にはかないません。Arduinoはシールドや公開されているライブラリを最大限に活用して、初心者が気軽にモノ作りを楽しむというのが基本コンセプトですからね。

Copyright © ITmedia, Inc. All Rights Reserved.