#20 Плейлисты, воспроизводим случайную композицию DFPlayer Mini и Arduino.

.#20 Плейлисты, воспроизводим случайную композицию DFPlayer Mini и Arduino.

В продолжение урока: Делаем MP3-плеер на DFPlayer Mini и Arduino. Рассмотрим, как можно создавать плейлисты для воспроизведения композиции с автоматическим определением количества плейлистов и количества треков в каждом плейлисте. А также сделаем воспроизведение случайного трека и зациклим воспроизведение композиции в одной папке.

В продолжение урока:Делаем MP3-плеер на DFPlayer Mini и Arduino. Рассмотрим, как можно создавать плейлисты

После того, как я сделал урок с использованием MP3-плеера написал мне подписчик: «познавательное видео! а можешь рассказать как сделать, например, 10 папок с музыкой и в них 10 музыкальных фрагментов, как подключаются кнопки выбора по папкам, и оставить громкость + - , воспроизведение и стоп? Я видел схему с множеством резисторов, для определения, например, каждой кнопки - музыкальному отрывку, но не нашел как подключить кнопки выбора папок - буду признателен за помощь!»

После того, как я сделал урок с использованием MP3-плеера написал мне подписчик

Решил я помочь подписчику и сделать урок с использованием DFPlayer и Arduino. Реализовать выбор папки и включение нужного mp3 файла. Но как сделать так, чтобы не нужно было каждый раз прописывать в коде, сколько у нас папок и сколько треков в каждой папке. А чтобы Arduino проделывала роботу по определению количества папок и треков. Ограничение DFPlayer Mini - максимум плейлистов 99, и треков в плейлисте 999, - и этого достаточно для решения, практически, любой задачи.

Данный пример поможет не только воспроизводить треки из папок, но и использовать при реализации различных уведомлений. Например, когда у вас много различных треков, которые нужно разделить по папкам, чтобы не перепутать, и из нужной папки воспроизводить трек или набор треков.

Для урока MP3-плеера на Arduino нам понадобится:


Подключаем MP3-плеера DFPlayer к Arduino по схеме.

Подключаем MP3-плеера DFPlayer к Arduino по схеме.

Пример работы с выбором папок, и композиции в них на DFPlayer.

Приступим к реализации просьбы подписчика. На карте памяти сделаем несколько папок с порядковыми номерами 01, 02, 03, 04 .. 11. В моем случае 11 папок, вы можете сделать любое количество.

На карте памяти сделаем несколько папок с порядковыми номерами 01, 02, 03, 04 .. 11.

Загрузим в каждую папку треки от 10 до 14. Вот так это будет выглядеть на карте памяти.

Загрузим в каждую папку треки от 10 до 14. Вот так это будет выглядеть на карте памяти.

За основу возьмем код из предыдущего урока и немного его доработаем. Добавим переменные, которые будут отвечать за папки и треки.

 Добавим переменные, которые будут отвечать за папки и треки.

В блоке Setup добавим код, который будет считать, сколько у нас папок на карте памяти. И сохраним это значение в переменную folders.

В блоке Setup добавим код, который будет считать, сколько у нас папок на карте памяти. И сохраним это значение в переменную folders.


Переменная folders получается на 1 больше, чем на карте. Сейчас мы можем, без проблем, добавлять папки на нашу карту памяти и MP3-плеер автоматически определит сколько их. Папок может быть не больше 99, и название должно состоять из 2 цифр.

Посчитаем сколько треков в первом каталоге.

Посчитаем сколько треков в первом каталоге.

Включим воспроизведение нашего первого файла в первой папке и выводим информацию об этом в монитор порта.

Включим воспроизведение нашего первого файла в первой папке и выводим информацию об этом в монитор порта.


Кнопка buttonNext будет переключать папки, а buttonPrevious – будет переключать по трекам в выбранной папке.

Переключать по трекам и по папкам будем в сторону увеличения. Можно сделать переключение в обратную сторону, но нужно добавить еще 2 кнопки. И дописать соответствующий код. Это вы сможете сделать самостоятельно, если это будет вам необходимо.

Рассмотрим код переключения по папкам:

Рассмотрим код переключения по папкам:

При нажатии кнопки переключаем на следующую папку, проверяя, чтобы количество папок не превышало полученное значение папок на флешке, и минус 1. Почему нужно вычитать 1 рассказывал выше.

 Почему нужно вычитать 1 рассказывал выше.

Затем нам нужно подсчитать, сколько треков в данной папке.

Затем нам нужно подсчитать, сколько треков в данной папке.

Так как данная функция медленная и не всегда срабатывает корректно, добавим проверку, чтобы значение треков было положительно, в противном случае, повторим подсчет количества треков. И после чего нужно проверить, чтобы в нашей папке треков было больше или ровно треку, который мы пытаемся воспроизвести. В противном случае, включаем первый трек из данной папки.

включаем первый трек из данной папки

Если вы планируете воспроизводить с первого трека при переключении между папками, нужно убрать условие и оставить j = 1;. Осталось воспроизвести трек и вывести информацию в монитор порта номер трека и номер папки, в которой находится трек.


Осталось воспроизвести трек и вывести информацию в монитор порта номер трека и номер папки, в которой находится трек.

Это не оптимальный код. Его можно упростить и сделать быстрее, но для понятия будет сложнее.

Приступим к переключению треков в выбранной папке.

Приступим к переключению треков в выбранной папке.

Тут все проще, проверяем, чтобы номер трека не превышал максимальное количество файлов в данной папке, и воспроизводим его. Информацию выводим в монитор порта.

В мониторе порта это будет выглядеть вот так:

В мониторе порта это будет выглядеть вот так:

При выборе последней папки, если нажать на кнопку переключить папку, переключаемся на первую папку.

При выборе последней папки, если нажать на кнопку переключить папку, переключаемся на первую папку.

Если трек последний, то при следующем нажатии на кнопку, переключаемся на первый трек в текущей папке.

При выборе последней папки, если нажать на кнопку переключить папку, переключаемся на первую папку. Если трек последний, то при следующем нажатии на кнопку, переключаемся на первый трек в текущей папке.

Все работает, но для использования данного примера в качестве музыкального плеера не очень удобно. Хочется сделать, чтобы все работало просто и без лишнего переименования файлов. Для этого я сделал следующий пример.


Зациклить воспроизведение композиций в папке, и случайное воспроизведение всех треков на DFPlayer и Arduino.

Данный пример отлично подойдёт для реализации плеера. Можно создать набор папок, каждая является отдельным плейлистом: по жанрам, настроению и пр. Перелистываем и выбираем, что хотели бы послушать. Также можно сделать список плейлистов, и выводить из какого плейлиста играет музыка. Планирую данный алгоритм работы добавить в умные часы на дисплее Nextion. Поэтому подписывайтесь на канал и вступайте в группу Вконтакте, чтобы не пропустить новые уроки и проекты на Arduino.

Схема подключения будет аналогично предыдущему примеру.

Схема подключения будет аналогично предыдущему примеру.

Код тоже возьмём из предыдущего примера и немного его изменим. Переменных нам нужно будет меньше:

Код тоже возьмём из предыдущего примера и немного его изменим. Переменных нам нужно будет меньше:

Кнопка buttonNext будет переключать воспроизведение папок.

Кнопка buttonNext будет переключать воспроизведение папок.

Как видно из кода мы переключаем на следующую папку и включаем зацикливание воспроизведения всех треков в выбранной папке.

На кнопку buttonPrevious помешаем случайное воспроизведение трека из всех доступных на карте памяти.

На кнопку buttonPrevious помешаем случайное воспроизведение трека из всех доступных на карте памяти.

Плюсы данного примера в том, что можно в папки добавлять треки с любым названием и воспроизводиться все будет без проблем. Но и есть минусы. Мы не можем переключать треки внутри папки.

Используя предоставленные примеры можно реализовать различные проекты на DFPlayer и Arduino, которые позволяют воспроизводить музыку по расписанию, в заданном порядке и определенными сборками.

Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.

Слушать музыку онлайн

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Пример работы с выбором папок, и композиции в них на DFPlayer Пример работы с выбором папок, и композиции в них на DFPlayer.ino5 Kb 687 Скачать
случайное воспроизведение всех треков на DFPlayer и Arduino случайное воспроизведение всех треков на DFPlayer и Arduino.ino5 Kb 628 Скачать
DFRobotDFPlayerMini DFRobotDFPlayerMini.zip763 Kb 630 Скачать
SoftwareSerial SoftwareSerial.zip11 Kb 615 Скачать
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 4 марта , 2020

Комментарии

Ваше Имя*
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.


Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box