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