ARDUINO Помогите разобраться с DF Player

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
Возникла необходимость проиграть рандомно треки с определенной папки на SD карточке. Папок, допустим, три: 01, 02 и 03. Надо проиграть только со второй папки, не затрагивая остальные. Упрощенный код без кнопок.


#include <DFPlayer_Mini_Mp3.h>

void setup() {
Serial.begin(9600);//
mp3_set_serial (Serial);
delay (100);
mp3_set_volume (10);
delay (100);
}

void loop()

{
mp3_play_file_in_folder(2, random (30)); // папки 02 в ней 30 файлов 0001-0030
}




Добавил энкодер (нажатия кнопки) после воспроизведения последнего файла в папке 03, переходит на первый файл в папке 01. Как ему сказать, что не надо выходить за пределы папки 03?
Структура примерно такая
--01
-----0001
-----0002
-----0003

--02
-----0001
-----0002
-----0003

--03
-----0001
-----0002
-----0003
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
725
145
а количество файлов и папок будет меняться со временем?
и зачем делать разбивку по папкам?
 
  • Лойс +1
Реакции: Gridzilla

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
а количество файлов и папок будет меняться со временем?
и зачем делать разбивку по папкам?
Нет, количество не меняется. Грубо - это игрушка ребенку. В одной папке системные звуки, которые не меняются и которые проигрываться не должны, а во второй сами песни. По сути их тоже можно не менять, прописав в скетче их количество.

Отсутствие необходимых знаний заставляет бегать по форумам где, к сожалению, нормальных примеров не нашел. Может они и есть, но я не заметил.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
725
145
ты просто усложнил себе задачу, введя лишнюю сущность под названием "папки"

тебе надо создать 2 массива musics, sounds
туда прописать номера имен файлов

потом при нажатии кнопки 1 проигрывать звук, который находится в элементе массива 0
 
  • Лойс +1
Реакции: Gridzilla

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
Тоже вариант. Почти в любой задаче есть альтернативный метод решения. Даже разбираясь с ардуино я с этим сталкиваюсь. Возможно мне, как новичку, и надо уходить от таких вот задач, но это не отменяет моего желания разобраться.

Так как самоучка и учусь на примерах, в данном случае ничего подходящего не нашел. А с массивами попробую на досуге, спасибо!
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
725
145
программирование - это очень сложная штука
поэтому когда-то там работали специалисты высшего класса, а сейчас туда лезут все кому не лень и обваливают цены
а еще пропагандируют, что электроника и программирование это очень просто
 

Старик Похабыч

★★★★★★✩
14 Авг 2019
2,021
511
Москва
ты просто усложнил себе задачу, введя лишнюю сущность под названием "папки"
На самом деле я папка это только для человека. У плеера все треки имеют номера подряд. Я в наливаторе тоже использую 2 папки, чисто для себя. в первой фоновая музыка, во второй тосты. МНЕ так проще разбираться. и если в 1-ой папке 5 мелодий,а во второй 20 тостов, то номера треков будут от 1 до 25
 
  • Лойс +1
Реакции: Gridzilla

Эдуард Анисимов

★★★★★✩✩
23 Сен 2019
1,031
306
54
Марий-Эл
программирование - это очень сложная штука
поэтому когда-то там работали специалисты высшего класса, а сейчас туда лезут все кому не лень и обваливают цены
а еще пропагандируют, что электроника и программирование это очень просто
Золотые слова. Согласен на 146%
 

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
программирование - это очень сложная штука
поэтому когда-то там работали специалисты высшего класса, а сейчас туда лезут все кому не лень и обваливают цены
а еще пропагандируют, что электроника и программирование это очень просто
Но надо же чем-то себя занять иногда :) При чем не на проф уровне, а просто так, для души. Это как с фотографией у меня. Вот вы занимаетесь программированием, а я фото. Каждый в своем профи, можно сказать. Иногда для себя и для ребенка могу что-то поколупать по примерам. Но не лезу в это с профессиональной точки зрения и если есть вопрос, то иду просить совета у того, кто этим занимается. Так что тут я с вами согласен на все 100%.

В общем спасибо всем. Перешел на библиотеку DFRobotDFPlayerMini, там есть myDFPlayer.loopFolder(3); зациклить папку. А ограничение при пролистывании энкодером (кнопкой) сделаю. На это ума хватит :))

Удачи всем..