Skip to content

Latest commit

 

History

History
99 lines (72 loc) · 8.38 KB

File metadata and controls

99 lines (72 loc) · 8.38 KB

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().

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