Skip to content

Repository files navigation

DFPlayer

Библиотека реализует интерфейс управления модулем MP3 плеера DFPlayer без обратной связи. Это означает, что для управления плеером используется только два контакта: RX и Busy. Подключать контакт TX не нужно.

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

Структура папок

Плеер умеет работать с несколькими структурами папок на flash карте. Их можно комбинировать как угодно и использовать параллельно.

ROOT - Все файлы находятся в корневой папке. Имена файлов от 0001 до 2999.

NUM - В корневой папке находятся папки с именами от 01 до 99, в них находятся файлы от 001 до 255.

MP3 - Все файлы находятся в папке 'MP3'. Имена файлов от 0001 до 2999.

ADVERT - Все файлы находятся в папке 'ADVERT'. Имена файлов от 0001 до 2999.

Методы класса

МетодОписаниеПараметры
DFPlayer(SoftwareSerial &serial, uint8_t busyPin)Конструктор классаserial - Ссылка на объект SoftwareSerial
busyPin - Пин состояния модуля
void Begin()Инициализация класса и плеера-
void PlayNext()Следующий трек в текущей папки-
void PlayPrevious()Предыдущий трек в текущей папки-
void PlayROOT(uint16_t track)Воспроизвести файл из корневой папки flash картыtrack - Номер файла в корневой папке
void VolumeUp()Увеличить громкость-
void VolumeDown()Уменьшить громкость-
void SetVolume(uint8_t volume)Установить громкостьvolume - Уровень громкости, 0..31
void SetEQ(DFPlayerEqualizer eq)Установить эквалайзерeq - Режим эквалайзера
void PlaybackMode(uint8_t mode)Режим воспроизведения (?)?
void Sleep()Перевести модуль в режим энергосбережения-
void Reset()Сбросить модуль-
void Play()Воспроизвести после паузы-
void Pause()Поставить на паузу-
void PlayNUM(uint8_t folder, uint8_t track)Воспроизвести файл из номерных папокfolder - Номер папки
track - Номер трека
void PlayMP3(uint16_t track)Воспроизвести файл из папки 'MP3'track - Номер трека
void PlayADVERT(uint16_t track)Воспроизвести рекламный файл из папки 'ADVERT'track - Номер трека
void StopAdvert()Остановить воспроизведение рекламного файла-
void Stop()Остановить воспроизведение-
void PlayBySourse(uint16_t param1, uint8_t param2, DFPlayerSourse source)Воспроизвести файл из указанного источникаparam1,param2 - параметры выбранного источника
source - Тип источника
bool IsBusy()Проверка плеера на занятость-
bool IsReadyReceive()Проверка возможности отправки новой команды-
void Processing(uint32_t currentMicroTime)Обработка очереди воспроизведенияcurrentMicroTime - Текущее время. Параметр не обязателен.
bool QueueAddTop(uint16_t param1, uint8_t param2, DFPlayerSourse source)Добавить файл в начало очереди воспроизведенияparam1,param2 - параметры выбранного источника
source - Тип источника
bool QueueAddEnd(uint16_t param1, uint8_t param2, DFPlayerSourse source)Добавить файл в конец очереди воспроизведенияparam1,param2 - параметры выбранного источника
source - Тип источника
void QueueClear()Очистить очередь воспроизведения-

Режимы эквалайзера

Эквалайзер поддерживает несколько режимов работы, описанные в таблице.

DFPlayerEqualizerОписание
DFPLAYER_EQUALIZER_NORMALНормальный
DFPLAYER_EQUALIZER_POPПоп
DFPLAYER_EQUALIZER_ROCKРок
DFPLAYER_EQUALIZER_JAZZДжаз
DFPLAYER_EQUALIZER_CLASSICКлассика
DFPLAYER_EQUALIZER_BASSБас

Типы источника

Некоторые методы принимают в качестве параметра элемент типа DFPlayerSourse. В таблице ниже описаны его свойства, а также параметры param1 и param2.

DFPlayerSourseОписаниеparam1param2
DFPLAYER_SOURSE_NONEНе определён, системный параметр--
DFPLAYER_SOURSE_ROOTКорневая папка№ файла-
DFPLAYER_SOURSE_NUMНомерные папки№ папки№ файла
DFPLAYER_SOURSE_MP3Папка 'MP3'№ файла-
DFPLAYER_SOURSE_ADVERTПапка 'ADVERT'№ файла-

Заключение

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

В связи с тем, что скорость соединения с плеером равна 9600 и любая команда доходит до плеера за 10,5 мс, а также плееру требуется время для обработки этой команды, то был добавлен метод bool IsReadyReceive(). Метод возвращает true в случае если модуль отработал команду и можно вызывать следующую. Простой пример, команда сброса модуля отрабатывает время, примерно равное 1 секунде, и правильный код будет выглядеть так:

MP3Player.Reset();
while(MP3Player.IsReadyReceive() == false){ }

Папка 'ADVERT' и методы работы с ней имеют одну особенность. Если в процессе воспроизведения любого файла вызвать метод void PlayADVERT(uint16_t track), то играющий файл ставится на паузу, проигрывается рекламный файл, после чего исходных файл продолжит воспроизведение с момента остановки. Такого же эффекта можно добиться, принудительно выключив рекламный файл методом void StopAdvert().

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

About

Arduino library for DFPlayer module

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages