質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

881閲覧

ミュージックシールドのプレイリストに追加する方法

tyoro

総合スコア2

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2020/09/06 07:05

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
ミュージックシールドのプレイリストに追加する場合
player.addToPlaylist ("1.mp3");
この様に記述するのですが、乱数表で得られた数字(仮に3)の時
("1.mp3") のところを("3,mp3")に置き換える方法を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

本当に乱数表から取得するの?
単にrandom関数から取得するんじゃなくて?

前者ならその部分を書いてください。
後者なら、

String fn;

とStringクラスを作っておいて、

fn=random(1,100);
fn+=".mp3";
player.addToPlaylist(fn);

ぐらいで良さそうな気がします。

投稿2020/09/07 16:08

nac_tnk

総合スコア494

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyoro

2020/09/08 03:57 編集

ご回答ありがとうございます。早速やってみたのですが以下のようなエラーメッセージが出ました。 私はずいぶん初心者なので 要は 数字をキャラクターコードに変えればいいだけのことでしょうが、それが解からず。お手数をおかけします。 乱数表で得の件 random(1,100);これです Arduino:1.8.5 (Windows 10), ボード:"Arduino/Genuino Uno" Music_Seeled_1_BAK:112: error: 'fn' does not name a type fn=random(1,100); ^ Music_Seeled_1_BAK:113: error: 'fn' does not name a type fn+=".mp3"; ^ Music_Seeled_1_BAK:114: error: 'player' does not name a type player.addToPlaylist(fn); ^ D:\Arduino\Music_Seeled_1_BAK\Music_Seeled_1_BAK.ino: In function 'void setup()': Music_Seeled_1_BAK:129: error: no matching function for call to 'MusicPlayer::addToPlaylist(String&)' player.addToPlaylist(fn); ^ D:\Arduino\Music_Seeled_1_BAK\Music_Seeled_1_BAK.ino:129:26: note: candidate is: In file included from D:\Arduino\Music_Seeled_1_BAK\Music_Seeled_1_BAK.ino:17:0: C:\Arduino\libraries\Music_Shield-master/MusicPlayer.h:147:13: note: boolean MusicPlayer::addToPlaylist(char*) boolean addToPlaylist(char* songName); ^ C:\Arduino\libraries\Music_Shield-master/MusicPlayer.h:147:13: note: no known conversion for argument 1 from 'String' to 'char*' exit status 1 'fn' does not name a type 「ファイル」メニューの「環境設定」から 「より詳細な情報を表示する:コンパイル」を有効にすると より詳しい情報が表示されます。
nac_tnk

2020/09/08 07:18

ちょっと試したら、Stringクラスでは駄目のようです。 ↓のように、char[]に変換して下さい。 fn=random(1,100); fn+=".mp3"; char filename[10]; fn.toCharArray(filename,10); player.addToPlaylist(filename);
tyoro

2020/09/08 08:27

以下のようにしましたが(私の設定の仕方が悪いのでしょうか //************************* char fn[] = "12345"; void setup() { randomSeed(analogRead(5) + analogRead(4)); // 未接続ピンのノイズを利用 Serial.begin(9600); } void loop() { fn = random(1, 100); fn += ".mp3"; char filename[10]; fn.toCharArray(filename, 10); Serial.print(filename); } //********************** 以下のようなメッセージが出ます。 Arduino:1.8.5 (Windows 10), ボード:"Arduino/Genuino Uno" C:\Users\user\Documents\Arduino\Terateral\Teratl.ino: In function 'void loop()': Terateral:8: error: incompatible types in assignment of 'long int' to 'char [6]' fn = random(1, 100); ^ Terateral:9: error: invalid use of non-lvalue array fn += ".mp3"; ^ Terateral:9: error: in evaluation of 'operator+=(char [6], char [5])' Terateral:11: error: request for member 'toCharArray' in 'fn', which is of non-class type 'char [6]' fn.toCharArray(filename, 10); ^ exit status 1 incompatible types in assignment of 'long int' to 'char [6]'
tyoro

2020/09/08 08:34

以下のようにしましたが(私の設定の仕方が悪いのでしょうか //************************* char fn[] = "12345"; void setup() { randomSeed(analogRead(5) + analogRead(4)); // 未接続ピンのノイズを利用 Serial.begin(9600); } void loop() { fn = random(1, 100); fn += ".mp3"; char filename[10]; fn.toCharArray(filename, 10); Serial.print(filename); } //********************** 以下のようなメッセージが出ます。 Arduino:1.8.5 (Windows 10), ボード:"Arduino/Genuino Uno" C:\Users\user\Documents\Arduino\Terateral\Teratl.ino: In function 'void loop()': Terateral:8: error: incompatible types in assignment of 'long int' to 'char [6]' fn = random(1, 100); ^ Terateral:9: error: invalid use of non-lvalue array fn += ".mp3"; ^ Terateral:9: error: in evaluation of 'operator+=(char [6], char [5])' Terateral:11: error: request for member 'toCharArray' in 'fn', which is of non-class type 'char [6]' fn.toCharArray(filename, 10); ^ exit status 1 incompatible types in assignment of 'long int' to 'char [6]'
nac_tnk

2020/09/08 11:20

言葉足らずだったようです。 『上で作ったStringクラスのfnを』「char[]に変換して下さい。」という意味です。 String fn; void setup() { //略; fn=random(1,100); fn+=".mp3"; char filename[10]; fn.toCharArray(filename,10); player.addToPlaylist(filename); } void loop(){ //略 } のようなかんじでどうですか?
tyoro

2020/09/09 00:22

ありがとうございました。 完璧です。今後も宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問