実現したいこと
Seeeduino XIAOとDFPlayerを接続し、タクトスイッチを鳴らしたときに音声を再生させたいです。
前提
実現したいことに向け、少しずつプログラムを書いている途中なのですが、よくわからない現象になっています。
【Seeeduino】
1…DFPlayer BUSYピン
2…タクトスイッチ
8…DFplayer TXピン
9…DFPlayer RXピン
5V…DFPlayer VCC
GND…GND
【DFPlayer】
SPK+、SPKー
発生している問題・エラーメッセージ
Arduino IDEでプログラムを書き込み、
『DFPlayerが再生中かどうかをBUSYピンで読み取る』
『タクトスイッチが押されたときにHIGH/LOWが切り替わっているか読み取る』
この2つをシリアルモニタで確認することはできています。
いざLoop関数を書くぞ!となり、
Serial.Println以外にDigitalReadを書くと、シリアルモニタの数値が0/1だったのが急に文字化けしており、HIGH/LOWを読み取ってDFPlayerを再生することができません。
言葉足らずでしたら申し訳ありません。スクリーンショットをご覧ください。
そもそものコード記載ミスがあれば申し訳ありませんが教えてください…。
該当のソースコード
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" SoftwareSerial mySoftwareSerial(8, 9); // DFRobotDFPlayerMini myDFPlayer; // busyピンが1、スイッチが2 const int States = 1; const int Switch = 2; void setup() { Serial.begin(115200); mySoftwareSerial.begin(9600); delay(1000); if (!myDFPlayer.begin(Serial, false)) { //エラーは無視する } delay(2000); // ボリュームを15に設定 myDFPlayer.volume(15); //Set volume value. From 0 to 30 // busyピン、スイッチ信号を読み取り状態に pinMode(States, INPUT); pinMode(Switch, INPUT_PULLUP); } void loop(){ ** if(digitalRead(Switch) == LOW){ myDFPlayer.playMp3Folder(1); delay(1000); }** Serial.println(digitalRead(Switch)); }
試したこと
if(digitalRead(Switch) == LOW){の文章を書かなければ、シリアルモニタは通常に戻ります。
Serial.begin();の数値を変えると文字化けが直るという記事を見かけて試してみたのですが、治りませんでした。
最終的なゴール
一つのタクトスイッチを使うだけで『再生』→『一時停止』→『再開』(60秒再開されなければ停止)というプログラムを書きたいと思っています。
併せてご助言頂ければ幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。