Skip to content

Dragon-Knight/DFPlayer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 Описание param1 param2
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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages