プロが教えるわが家の防犯対策術!

http://www.seeedstudio.com/wiki/Music_Shield_V2.0
このサイトのライブラリ内のスケッチaddToListをそのまま使用しているのにエラーが出てしまいます。サンプルスケッチは以下の通り。

/*
* addToList.ino
* Example sketch for MusicShield 2.0
*
* Copyright (c) 2012 seeed technology inc.
* Website : www.seeed.cc
* Author : Jack Shao (jacky.shaoxg@gmail.com)
* Create Time: Mar 2014
* Change Log :
*
* The MIT License (MIT)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/


#include <SD.h>
#include <SPI.h>
#include <arduino.h>
#include <MusicPlayer.h>

void setup(void)
{
Serial.begin(9600);
player.begin(); //will initialize the hardware and set default mode to be normal.
player.addToPlaylist("test.mp3");
}
void loop(void)
{
player.play(); //do some leisurely job
}


エラーメッセージは下記です。

/Arduino/libraries/Music_Shield-master/MusicPlayer.h:52:0: warning: "min" redefined [enabled by default]
#define min(a,b) (((a)<(b))?(a):(b))
^
/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:84:0: note: this is the location of the previous definition
#define min(a,b) ((a)<(b)?(a):(b))
^
/addToList.ino:42:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
player.addToPlaylist("test.mp3");
^
/addToList/addToList.ino:43:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
player.addToPlaylist("test.wma");
^
In file included from error: 'playingstatetype playingState', declared using anonymous type, is used but never defined [-fpermissive]
extern playingstatetype playingState;
^
error: 'typedef volatile enum<anonymous> playingstatetype' does not refer to the unqualified type, so it is not used for linkage [-fpermissive]
} playingstatetype;
^
error: 'ctrlState_t ctrlState', declared using anonymous type, is used but never defined [-fpermissive]
extern ctrlState_t ctrlState;
^
error: 'typedef volatile enum<anonymous> ctrlState_t' does not refer to the unqualified type, so it is not used for linkage [-fpermissive]
} ctrlState_t;
^
exit status 1
コンパイル時にエラーが発生しました。

よろしくお願いします。

質問者からの補足コメント

  • コンパイルが通らないのでこの症状とは違うようです、ありがとうございます。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/01/11 13:21
  • つらい・・・

    WindowsXPにて再度試してみたところ、エラーメッセージが下記に変わりましたが、やはりコンパイルが出来ませんでした。

    Cannot run program "arduino-1.6.7¥arduino-builder"(in directory"."):CreateProcess error=5,アクセスが拒否されました。

    単純にverに対応していないのかもしれませんが

      補足日時:2016/01/11 14:16
  • うーん・・・

    Macでなんとか出来ないかと一度削除してインストールしなおしたりしてみましたが駄目でした。
    エラーメッセージも変わらないようです。このスケッチにこだわらず音が出るならその方がいいのですが、シールドと対応しているこのスケッチでしか音を出すことはできないのでしょうか?

    XPのほうでもう一度出来るか試してみます。

      補足日時:2016/01/11 16:17
  • 色々なパソコンで試してみてもエラーが出てしまうので、わたしの手順が何やら間違っているのではないかと思ったのですが、どのように間違っているのかわかりません。
    画像のような手順でミュージックシールド V2.0のライブラリをセットしています。

    https://github.com/Seeed-Studio/Music_Shield
    こちらのサイトには「music playerというdir内に解凍したファイルを入れる」と書いてあるのですがそれもどこにあるのかわかりません…

    「サンプルスケッチをそのまま使用しているの」の補足画像4
      補足日時:2016/01/15 02:09
  • うーん・・・

    WindowsXPがネットに接続しておらずMacでダウンロードしたものを運んで開いたせいか、そもそもArduinoが起動しませんでした。

    重複して読み込むことを解消できれば、Mac環境下でも作動するということでしょうか?
    #include <SD.h>
    #include <SPI.h>
    #include <arduino.h>
    の3つのヘッダーはArduinoのソフトウェア上に元からあるのでしょうか?

      補足日時:2016/01/15 13:44
  • うーん・・・

    XPには、window用のzipデータを展開しました。
    古いので開かなかったんでしょうか…?

    またArduino.appはmacでは隠しファイルで開けないようです。

    Windowsのみの適用なのかと、先日教えていただいたXPでの操作を参考に
    VAIOで試してみましたが画像のようなエラーが出てしまいました。

    Arduino1.6.7とバージョンアップしてこれが読めなくなることはあるんでしょうか?

    Arduinoをつないでいなくてもコンパイルは可能ですよね?

    「サンプルスケッチをそのまま使用しているの」の補足画像6
      補足日時:2016/01/16 14:42

A 回答 (6件)

>古いので開かなかったんでしょうか…?


XPの時代は、ZIPを標準で解凍することが出来なかったのです。
なので、ZIPを解凍するフリーソフトが必要です。

>またArduino.appはmacでは隠しファイルで開けないようです。
これが、良く理解出来ません。
https://www.arduino.cc/en/Guide/MacOSX#
ここを読む限りでは、macでもZIPをダウンロードして解凍するだけと書いてあるように思うのですが?
mac用のZIPファイルの中は、「Arduino.app\Contents」で始まっているのですがこれが隠しファイルだとするとArduinoIDEはどうやって起動しているのでしょう?

>VAIOで試してみましたが画像のようなエラーが出てしまいました。
画像が小さいので良く読めませんが、同じエラーですよね?

>Arduino1.6.7とバージョンアップしてこれが読めなくなることはあるんでしょうか?
可能性は否定出来ません。
バージョンアップによる不具合や、初期の設定内容が異なっているなどが考えられます。

>Arduinoをつないでいなくてもコンパイルは可能ですよね?
Arduinoは、開発環境です。無くてもコンパイルは可能ですが環境を作るのが大変です。
    • good
    • 0
この回答へのお礼

Arduino1.6.5をインストールしたところコンパイルできました!長々と相談に乗って頂き、心強かったです。本当にありがとうございました。

お礼日時:2016/01/16 16:03

>そもそもArduinoが起動しませんでした。


それは無理です。
WindowsXPで動作させるなら、以下のサイトの下の方にある、「1.6.5」の「Windowsインストーラー版」か「WindowsZIP版」をダウンロードする必要があります。
https://www.arduino.cc/en/Main/OldSoftwareReleas …

>#include <SD.h>
>#include <SPI.h>
>#include <arduino.h>
この3つについては、「Arduino」に最初から付いています。

macが良くわからいのですが、今、「Arduino」のmac版をダウンロードしてみました。
ひょっとして、
Arduino.app\Contents\Java\libraries
このフォルダの下に、「Music Shield」を解凍したフォルダを入れてコンパイルすれば良いだけなのでは?
    • good
    • 0

>「music playerというdir内に解凍したファイルを入れる」


"MusicPlayer"と言うディレクトに解凍したファイルを入れる訳なので、"MusicPlayer"は新規に作成すれば良いです。
それを「ArduinoIDE」の「library」にコピーする。

実際には、「Music_Shield-master」フォルダに入っていて、それをコピーしてますよね。
ただ、それは私も同じ事をしたので問題にはならないと思います。

私が考えるには、「Music Shield」の環境の問題では無く「ArduinoIDE」の環境の問題だと思います。


最初に出ているエラーメッセージで、
#define min(a,b) (((a)<(b))?(a):(b))
が重複しているとなっています。

で、重複している内容が
/Arduino/libraries/Music_Shield-master/MusicPlayer.h:52:0
/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:84:0
となっています。

しかし、私が作成した環境には「Arduino.app」と言うフォルダは存在しません。
色々調べてみると、「Arduino.h」は以下のフォルダに見つかりました。
/Arduino/hardware/arduino/avr/cores/arduino/Arduino.h:84

比較すると、
/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:84:0
         /Arduino/hardware/arduino/avr/cores/arduino/Arduino.h:84
となり、
「Arduino」配下以外に
「Arduino.app/Contents/Java」と言う環境からも読み込んでいるように見えます。

そこで、疑問に思ったのが、
#include <arduino.h>
とした時に、どこから「arduino.h」を読み込んでいるのか?と言うことです。

#include <MusicPlayer.h>
このヘッダーは、「library」にコピーした「MusicShield」に入っているので「library」フォルダ配下のフォルダは自動的に検索対象になっている事はわかります。
実際、「ArduinoIDE」の「スケッチ」の「Include Libraly」や「Library Manager」に表示されています。

「環境設定」なども調べたのですが特に指定している場所が見つかりませんでした。
この辺りが、Windowsとmacの違いなのかわかりませんが、いずれにしても調べるのは「ArduinoIDE」の環境で、「MusicShield」では無いと言うことです。
    • good
    • 0

WindowsXPでもやってみましたが、コンパイルは出来ました。


取り敢えずやったことを書いておきます。

1:arduino-1.6.5-r5-windows.zipをC:\に解凍。
2:Music_Shield-master.zipを1で解凍したフォルダの「C:\arduino-1.6.5-r5\libraries」に解凍。
(「C:\arduino-1.6.5-r5\libraries\Music_Shield-master」フォルダが作成される。)
3:「arduino.exe」を起動。
4:「ファイル」-「開く」で、「C:\arduino-1.6.5-r5\libraries\Music_Shield-master\examples\addToList\addToList.ino」を開く。
5:コンパイル。
    • good
    • 0

探している時に偶然見つけたサイトですが、


http://stamefusa.hateblo.jp/entry/20121104/13520 …
古い記事なので、参考にならないですか?
この回答への補足あり
    • good
    • 0

Arduino 1.6.5


Music Shield V2.0
上記の2つをダウンロードして、コンパイルしてみましたがコンパイルではエラーになりませんでした。
(マイコンボードが無いので、マイコンボードの書き込みエラーにはなりましたが・・・)
なので、作られた環境に問題があるのでは無いかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます、家にある2台のMACで試してみましたがどちらもエラーが発生してしまいました。MAC OSでは駄目なんでしょうか?

お礼日時:2016/01/11 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!