Библиотека реализует интерфейс управления модулем 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 - Ссылка на объект SoftwareSerialbusyPin - Пин состояния модуля |
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().
В связи с тем, что очень часто под видом оригинального плеера попадается подделка, некоторые методы могут не работать, или работать некорректно.