День добрый(если он добрый). Проконсультируйте пожалуйста кто работал с этим модулем http://amperka.ru/product/df-player-mp3-module . Даташит читал, но остались нюансы. Хочу его выход подключить параллельно выходу FMмодуля. 1 можно ли питать его с ноги Ардуино? Что бы он не вносил ненужных помех планирую его включать только когда он будет нужен. В даташите написано 15 ма, люди пишут что 25-35ма, вроде укладывается в запас прочности Дуни? Инициализироваться и настраиваться будет не в setup а в цикле каждый раз как к нему обратятся. Возможно неудобно но зато можно держать выключенным и включать по необходимости. 2 если вставить карточку с мп3 музыкой проигрывать не будет если не пронумеровать 0000 0001? (полноценный мп3 модуль сейчас в пути, поэтому хочу потренироваться на этом) 3 есть ли команда выводящая номер проигрываемого трека? И вообще можно ли организовать индикацию какой трек выбран, чтоб было можно перелистывая переходить к нужному треку? Вроде пока все)
на последний вопрос сам уже нашел ответ про нумерацию проигрываемого файла Serial.println(myDFPlayer.readCurrentFileNumber()); осталось разобраться что за зверь myDFPlayer.enableLoop(); //enable loop. //эта команда закольцовывает трек или всю группу треков то есть они проигрываются по порядку 12345, потом снова 12345? и myDFPlayer.enableLoopAll(); //loop all mp3 files. //если правильно понял это закольцовывает все файлы?
кстати заодно. Оригинальный скетч от модуля. зачем функции объявлены в SETUP да еще и с Delay(1000)? Код (C++): void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200); Serial.println(); Serial.println(F("DFRobot DFPlayer Mini Demo")); Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3. Serial.println(F("Unable to begin:")); Serial.println(F("1.Please recheck the connection!")); Serial.println(F("2.Please insert the SD card!")); while(true); } Serial.println(F("DFPlayer Mini online.")); myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms //----Set volume---- myDFPlayer.volume(10); //Set volume value (0~30). myDFPlayer.volumeUp(); //Volume Up myDFPlayer.volumeDown(); //Volume Down //----Set different EQ---- myDFPlayer.EQ(DFPLAYER_EQ_NORMAL); // myDFPlayer.EQ(DFPLAYER_EQ_POP); // myDFPlayer.EQ(DFPLAYER_EQ_ROCK); // myDFPlayer.EQ(DFPLAYER_EQ_JAZZ); // myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC); // myDFPlayer.EQ(DFPLAYER_EQ_BASS); //----Set device we use SD as default---- // myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK); myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_AUX); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_SLEEP); // myDFPlayer.outputDevice(DFPLAYER_DEVICE_FLASH); //----Mp3 control---- // myDFPlayer.sleep(); //sleep // myDFPlayer.reset(); //Reset the module // myDFPlayer.enableDAC(); //Enable On-chip DAC // myDFPlayer.disableDAC(); //Disable On-chip DAC // myDFPlayer.outputSetting(true, 15); //output setting, enable the output and set the gain to 15 //----Mp3 play---- myDFPlayer.next(); //Play next mp3 delay(1000); // <<<<< вот этот момент зачем?????? myDFPlayer.previous(); //Play previous mp3 delay(1000); myDFPlayer.play(1); //Play the first mp3 delay(1000); myDFPlayer.loop(1); //Loop the first mp3 delay(1000); myDFPlayer.pause(); //pause the mp3 delay(1000); myDFPlayer.start(); //start the mp3 from the pause delay(1000); myDFPlayer.playFolder(15, 4); //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255) delay(1000); myDFPlayer.enableLoopAll(); //loop all mp3 files. delay(1000); myDFPlayer.disableLoopAll(); //stop loop all mp3 files. delay(1000); myDFPlayer.playMp3Folder(4); //play specific mp3 in SD:/MP3/0004.mp3; File Name(0~65535) delay(1000); myDFPlayer.advertise(3); //advertise specific mp3 in SD:/ADVERT/0003.mp3; File Name(0~65535) delay(1000); myDFPlayer.stopAdvertise(); //stop advertise delay(1000); myDFPlayer.playLargeFolder(2, 999); //play specific mp3 in SD:/02/004.mp3; Folder Name(1~10); File Name(1~1000) delay(1000); myDFPlayer.loopFolder(5); //loop all mp3 files in folder SD:/05. delay(1000); myDFPlayer.randomAll(); //Random play all the mp3. delay(1000); myDFPlayer.enableLoop(); //enable loop. delay(1000); myDFPlayer.disableLoop(); //disable loop. delay(1000); //----Read imformation---- Serial.println(myDFPlayer.readState()); //read mp3 state Serial.println(myDFPlayer.readVolume()); //read current volume Serial.println(myDFPlayer.readEQ()); //read EQ setting Serial.println(myDFPlayer.readFileCounts()); //read all file counts in SD card Serial.println(myDFPlayer.readCurrentFileNumber()); //read current play file number Serial.println(myDFPlayer.readFileCountsInFolder(3)); //read fill counts in folder SD:/03 } я как то привык функции обявлять после основного цикла. для общего развития хочется понять такой оборот написания.
По нему есть отдельная тема, зачем создавать ещё одну? В setup не объявление функций, а их запуск, для предварительной настройки модуля. Объявлены они в файлах библиотеки.
Сорри видно плохо искал( дайте сысылку если можно. про функции спасибо понял, такой оброт впервые увидел поэтому и интересно стал Да я читал что не очень + многие на треск жаловались. Но он у меня есть в наличии и хочу потренироваться. Кст может посоветуете хороший модуль чтоб и С USB флешек читались треки и с карточек. пока заказал Спойлер: модуль https://ru.aliexpress.com/item/1pcs...lgo_pvid=2402a866-6da3-4c72-a8b1-c40d0a13df71 но хотелось что то ардуиноподобное чтоб можно было к мониторчкику приколхозить, что бы читать назавания треков и всякие меню. Удачного всем дня!(кстати)
TX плеера можно вообще не соединять, по моему там нет обратной связи. Конец трека отслеживается по BUSY.
спасибо. раз разговор про "подтяжки" пошел. то можете ли подсказать как и куда подтягивать . к пинам А5 А6 ардуино про мини через конвертор уровней 5-3.3 вольта подключен FM модуль. и как в такой ситуации подтягивать линию? рдныз 3 вольта у про мини нет. можно ли так сделать как я нарисовал? или вообще не недо? модуль хорошо работает ничего не скрипит не шумит. вот все равно не въезжаю зачем так делать(((. глянул эти функции в библиотеке. Вот ничего не изменится ИМХО. если я их вставлю в само тело программы в любом месте. ( я имею ввиду те что через delay()/ да и в любом случае секунда задержки это жирно по моему. вопрос имеет чисто образовательный характер. для дальнейшего совершенствования). в выходные если выдастся свободная минутка постараюсь собрать в железе и проверить. меня еще в этой библиотеке интересует. вот нафиг нужны комнады проиграть ( следующий предидущий трек) и собственно комнады плей /пауза. придется самому на практике все вкуривать
Что до согласования уровней, то есть специальные платы стоимостью копейки, которые переводят из любого в любой во все стороны. Считаю надо их юзать и не париться.
Ну это же демо-пример, где "в натуре" расписаны реальные примеры использования, ведь нынче документацию мало кто читает Поэтому и напихано по максимуму. Код (C++): myDFPlayer.volume(10); // Установить громкость в 10 (после включения она по умолчанию то ли 25, то ли 30) myDFPlayer.volumeUp(); // Пример изменения громкости на +1 myDFPlayer.volumeDown(); //Пример изменения громкости на -1 // myDFPlayer.sleep(); //не знаю что, возможно режим энергосбережения для батарейного использования. // myDFPlayer.reset(); //Сбросить все настройки на исходные myDFPlayer.play(1); //Начать воспроизведение первого трека (файл 0001.mp3) delay(1000); // пауза для того чтобы услышать результат myDFPlayer.next(); //Начать воспроизведение следующего трека delay(1000); // <<<<< вот этот момент зачем?????? // Для того, чтобы ты услышал сам трек, иначе следующая команда мгновенно его перебьет myDFPlayer.previous(); //Начать воспроизведение предыдущего трека delay(1000); myDFPlayer.loop(1); //Повторять первый трек по его окончании delay(1000); myDFPlayer.pause(); //пауза delay(1000); myDFPlayer.start(); //Продолжить воспроизведение с места паузы delay(1000); А в setup() впихнули просто для того чтобы это все проигралось только один раз. Те же команды можно с тем же результатом использовать и в loop() в нужных местах.
спасибо!!! вот это меня и сбило с толку. думал что это какой-то новый стиль написания). спасибо! могли бы и закомментировать чтоб люди головы не ломали. очень хочу выкроить на выходных хоть немного времени на свои забавы на практике все проверить. Спаибо, у меня ФМ модуль так и подключен через конвертер уровней, люди пишут что у них шипит, наводки . А у меня нет, вот и думал, что я неправильно сделал. Всем удачных выходных(если они выходные)
Только не 10К, а 1К, так в даташите на модуль написано Ставлю 1К - не трещит. Думаю, что и с 10К не будет
спасибо у меня такой же треск стоял когда я из gsm модуля телефон делал. на всякий случай так же пустил Tx -Rx через 1 ком и чтоб наверняка было подтянул 10 ком оба. треск пропал)
добрый вечер. подскажите, пожалуйста, как избавится от задержки при циклическом воспроизведении? хочу добавить в детскую игрушку озвучку работы двигателя, сделал отрезок звука длиной 4 секунды, а когда даю команду зациклить его, то после окончания звука и перехода к его началу есть небольшая задержка, что портит картину и не создаёт эффекта беспрерывной работы сделать кусок 10-60 минут не вариант, потому что от игрушка управляется по радио, и озвучиваются звуки включения двигателя, холостого хода, езды и выключения двигателя. вот между ними даже при переключении режимов возникает тоже задержка
На мой взгляд - никак, сам в своё время с этим столкнулся. Сам модуль пока прочухается - имхо, отсюда и задержка, что вы хотели за пару баксов? Выход: либо забить, либо - одно из двух. Всё имхо, конечно.
не знаете, другие модули( JQ6500, WT588D ) так же с задержками работают? если да, то придётся делать на тини2313, на подобии - http://www.parkflyer.ru/ru/blogs/view_entry/9979/