В продолжение урока: Делаем MP3-плеер на DFPlayer Mini и Arduino. Рассмотрим, как можно создавать плейлисты для воспроизведения композиции с автоматическим определением количества плейлистов и количества треков в каждом плейлисте. А также сделаем воспроизведение случайного трека и зациклим воспроизведение композиции в одной папке.
После того, как я сделал урок с использованием MP3-плеера написал мне подписчик: «познавательное видео! а можешь рассказать как сделать, например, 10 папок с музыкой и в них 10 музыкальных фрагментов, как подключаются кнопки выбора по папкам, и оставить громкость + - , воспроизведение и стоп? Я видел схему с множеством резисторов, для определения, например, каждой кнопки - музыкальному отрывку, но не нашел как подключить кнопки выбора папок - буду признателен за помощь!»
Решил я помочь подписчику и сделать урок с использованием DFPlayer и Arduino. Реализовать выбор папки и включение нужного mp3 файла. Но как сделать так, чтобы не нужно было каждый раз прописывать в коде, сколько у нас папок и сколько треков в каждой папке. А чтобы Arduino проделывала роботу по определению количества папок и треков. Ограничение DFPlayer Mini - максимум плейлистов 99, и треков в плейлисте 999, - и этого достаточно для решения, практически, любой задачи.
Данный пример поможет не только воспроизводить треки из папок, но и использовать при реализации различных уведомлений. Например, когда у вас много различных треков, которые нужно разделить по папкам, чтобы не перепутать, и из нужной папки воспроизводить трек или набор треков.
Для урока MP3-плеера на Arduino нам понадобится:
Подключаем MP3-плеера DFPlayer к Arduino по схеме.
Приступим к реализации просьбы подписчика. На карте памяти сделаем несколько папок с порядковыми номерами 01, 02, 03, 04 .. 11. В моем случае 11 папок, вы можете сделать любое количество.
Загрузим в каждую папку треки от 10 до 14. Вот так это будет выглядеть на карте памяти.
За основу возьмем код из предыдущего урока и немного его доработаем. Добавим переменные, которые будут отвечать за папки и треки.
В блоке Setup добавим код, который будет считать, сколько у нас папок на карте памяти. И сохраним это значение в переменную folders.
Переменная folders получается на 1 больше, чем на карте. Сейчас мы можем, без проблем, добавлять папки на нашу карту памяти и MP3-плеер автоматически определит сколько их. Папок может быть не больше 99, и название должно состоять из 2 цифр.
Посчитаем сколько треков в первом каталоге.
Включим воспроизведение нашего первого файла в первой папке
и выводим информацию об этом в монитор порта.
Кнопка buttonNext будет переключать папки, а buttonPrevious – будет переключать по трекам в выбранной папке.
Переключать по трекам и по папкам будем в сторону увеличения. Можно сделать переключение в обратную сторону, но нужно добавить еще 2 кнопки. И дописать соответствующий код. Это вы сможете сделать самостоятельно, если это будет вам необходимо.
Рассмотрим код переключения по папкам:
При нажатии
кнопки переключаем на следующую папку, проверяя, чтобы количество папок не превышало
полученное значение папок на флешке, и минус 1. Почему нужно вычитать 1 рассказывал
выше.
Затем нам нужно подсчитать, сколько треков в данной папке.
Так как
данная функция медленная и не всегда срабатывает корректно, добавим проверку,
чтобы значение треков было положительно, в противном случае, повторим подсчет
количества треков. И после чего нужно проверить, чтобы в нашей папке треков
было больше или ровно треку, который мы пытаемся воспроизвести. В противном
случае, включаем первый трек из данной папки.
Это не оптимальный код. Его можно упростить и сделать быстрее, но для понятия будет сложнее.
Приступим к переключению треков в выбранной папке.
Тут все проще, проверяем, чтобы номер трека не превышал максимальное количество файлов в данной папке, и воспроизводим его. Информацию выводим в монитор порта.
В мониторе порта это будет выглядеть вот так:
При выборе последней папки, если нажать на кнопку переключить папку, переключаемся на первую папку.
Если трек последний, то при следующем нажатии на кнопку, переключаемся на первый трек в текущей папке.
Все работает, но для использования данного примера в качестве музыкального плеера не очень удобно. Хочется сделать, чтобы все работало просто и без лишнего переименования файлов. Для этого я сделал следующий пример.
Данный пример отлично подойдёт для реализации плеера. Можно создать набор папок, каждая является отдельным плейлистом: по жанрам, настроению и пр. Перелистываем и выбираем, что хотели бы послушать. Также можно сделать список плейлистов, и выводить из какого плейлиста играет музыка. Планирую данный алгоритм работы добавить в умные часы на дисплее Nextion. Поэтому подписывайтесь на канал и вступайте в группу Вконтакте, чтобы не пропустить новые уроки и проекты на Arduino.
Схема подключения будет аналогично предыдущему примеру.
Код тоже возьмём из предыдущего примера и немного его изменим. Переменных нам нужно будет меньше:
Кнопка buttonNext будет переключать
воспроизведение папок.
Как видно из кода мы переключаем на следующую папку и включаем зацикливание воспроизведения всех треков в выбранной папке.
На кнопку buttonPrevious помешаем случайное воспроизведение трека из всех доступных на карте памяти.
Плюсы данного примера в том, что можно в папки добавлять треки с любым названием и воспроизводиться все будет без проблем. Но и есть минусы. Мы не можем переключать треки внутри папки.
Используя предоставленные примеры можно реализовать различные проекты на DFPlayer и Arduino, которые позволяют воспроизводить музыку по расписанию, в заданном порядке и определенными сборками.
Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
Пример работы с выбором папок, и композиции в них на DFPlayer.ino | 5 Kb | 819 | Скачать |
![]() |
случайное воспроизведение всех треков на DFPlayer и Arduino.ino | 5 Kb | 761 | Скачать |
![]() |
DFRobotDFPlayerMini.zip | 763 Kb | 784 | Скачать |
![]() |
SoftwareSerial.zip | 11 Kb | 789 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 4 марта , 2020
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.