Воскресенье, 20.07.2025, 11:14
Приветствую Вас Гость

Мой сайт

Главная | Регистрация | Вход | RSS
Главная » 2015 » Июль » 16 » Управление воспроизведением MP3 с Music Shield : Как нам поступить контакты
17:29
Управление воспроизведением MP3 с Music Shield : Как нам поступить контакты

Music Shield — плата расширения от Seeed Studio с аудио-кодеком на базе чипа VS1053b. Она даёт возможность Arduino проигрывать звуковые файлы в форматах MP3, WAV, MIDI, Ogg Vorbis. Файлы считываются с microSD флэш-карты, которая устанавливается в слот на плате.

Посмотреть описание и примеры, а также скачать необходимые библиотеки можно на странице производителя, однако в них имеется некоторое количество ошибок и, если их не исправить, плата работать не будет.

Откорректированую версию библиотеки, которая проверенно работает с официальными платами Arduino, Arduino IDE версии 1.0 и выше, в том числе под Linux и MacOS можно скачать на GitHub.

Установите эти библиотеки обычным образом: скопируйте в поддиректорию libraries вашей IDE.

Установите Shield на Arduino:

Вставьте в слот microSD-карту объёмом не более 2 Гб и форматом FAT16 либо FAT32 с предварительно записанными на ней трэками. Карты объёмом более 2 Гб или другими файловыми системами не поддерживаются. Продаваемые флэш-карты обычно уже отформатированны в FAT16 или FAT32.

Как нам поступить? персональные оценки на виртуальном ...

28 янв 2015 ... Рассуждение правоведа на запрос: Как нам поступить? , злободневные консультации на сайте Правовед.ру.
https://pravoved.ru/question/705409/

Подведите питание и загрузите следующий скетч:

ShufflePlay.ino
// Подключаем все 3 предоставленные библиотеки #include <Fat16util.h> #include <NewSPI.h> #include "MusicPlayer.h"   // Создаём объект для управления плейером MusicPlayer myplayer;   void setup() { // инициализируем аппаратные средства и устанавливаем // режим проигрывания по умолчанию myplayer.begin(); }   void loop() { //устанавливаем режим случайного воспроизведения myplayer.setPlayMode(MODE_SHUFFLE);   //Если текущий плейлист пуст, добавим в него все треки, //находящиеся в корневой папке карты памяти. myplayer.creatPlaylist();   //отдаём контроль над микроконтроллером проигрывателю myplayer.playList(); }

Отлично! Всё работает: кнопки на плате регулируют громкость, переключают трэки, останавливают и запускают воспроизведение; светодиоды отображают текущее состояние.

Предложенный производителем интерфейс не оставляет нам возможности для собственного управления платой. Также плата физически закрывает все контакты на Arduino Uno и большую часть на Arduino Mega.

Эти ограничения можно обойти, если установить между Arduino и Music Shield плату-посредника, к которой в итоге и подключить необходимые компоненты.

Для примера попробуем сами поуправлять некоторыми возможностями платы. Например, с помощью внешней, собственной кнопки будем переключать треки, а с помощью потенциометра управлять громкостью.

Для получения доступа к контактам Arduino можно воспользоваться платой Troyka Shield. А чтобы подключаемые провода физически пометились между ней и Music Shield стоит увеличить её высоту с помощью контактных колодок. В итоге у нас получится такой бутерброд:

Обратим внимание, что при таком соединении, контакты интерфейса ISP/SPI оказались не подключёнными к Arduino. А они используются Music Shield’ом для коммуникации с чипом-декодером.

Эту проблему можно решить, соединив 11-й, 12-й и 13-й контакты Aduino с платой следующим образом:

Мы можем так поступить, потому что необходимые нам ICSP-контакты дублируются именно 11-м, 12-м и 13-м контактами. Это справедливо для Arduino Uno и Mega 2560, но не сработает с Arduino Leonardo, на которой ISP-header не продублирован обычными контактами.

Итак, наша конструкция стала напоминать бутерброд, однако технически это всё та же самая конструкция, что и в самом начале. Можно убедиться в этом, включив её в сеть.

Перед тем как подключить собственные кнопку и потенциометр, давайте разберёмся, какие из контактов Arduino используются платой Music Shield, а какие не используются. Документация на странице производителя утверждает, что используются цифровые входы со 2-го по 13-й, а аналоговые — с A0 по A3. Также мы знаем, что нулевой и первый цифровые контакты используются для прошивки Arduino, поэтому использовать их для управления по возможности не рекомендуется, хотя и можно.

К счастью, реализованный в библиотеке класс MusicPlayer позволяет легко отключать логику встроенного управления воспроизведением, что позволяет высвободить цифровые входы с третьего по седьмой, которые в штатном режиме заняты кнопками на Music Shield.

Из аналоговых входов нам остаются четвёртый и пятый.

Подключим кнопку к четвёртому цифровому входу, а потенциометр — к аналоговому входу A5:

Установим Music Shield поверх Troyka Shield. В итоге должна получиться примерно такая конструкция:

Класс MusicPlayer, предоставляемый библиотекой позволяет осуществлять все основные функции по управлению плеером:

  • begin инициализирует плеер;

  • creatPlaylist формирует плейлист из треков, находящихся в корневой папке карты памяти;

    Как нам разумно поступать с пациентом? Или лучшее — враг ...

    26 апр 2015 ... Контакты ... диагностика не всегда проста, а лечение не всегда удовлетворяет пациента и природа порой ох как бывает строга к нам.
    http://actendocrinology.ru/archives/2416

  • playSong начинает воспроизведение указанного по имени или номеру трека

  • setVolume устанавливает громкость;

  • setPlayMode устанавливает тип воспроизведения, например, случайное или последовательное воспроизведение;

  • attachDigitOperation и attachAnalogOperation позволяют «слушать» цифровые и аналоговые входы Arduino, при этом для каждого события необходимо отдельно написать функцию, которая и будет выполняться, когда на вход поступает сигнал;

  • keyEnable и keyDisable включают или отключают управление платой встроенными кнопками;

  • analogControlEnable и digitalControlEnable включают прослушивание четвёртого и пятого аналоговых входов Arduino, а также цифровых входов от нулевого до седьмого;

  • opPause, opPlay и opStop приостанавливают, запускают или останавливают воспроизведение текущего трека;

  • opVolumeUp и opVolumeDown увеличивают или уменьшают громкость воспроизведения;

  • opNextSong и opPreviousSong переключают воспроизведение на следующий или предыдущий трек;

  • opFastForward и opFastRewind позволяют перематывать текущий трек в обе стороны;

  • opNormalPlay, opShufflePlay, opRepeatList, opRepeatOne переключают режимы воспроизведения.

Посмотреть сигнатуру функций можно в файле MusicPlayer.h, изучить подробней, как они работают — в файле MusicPlayer.cpp.

Информацию об использующихся константах можно также посмотреть в файле MusicPlayer.h.

Теперь можно перейти к написанию скетча, позволяющего управлять громкостью и переключением треков кнопкой и потенциометром.

ExternalMusicControl.ino
// Подключаем все 3 предоставленные библиотеки #include <Fat16util.h> #include <NewSPI.h> #include "MusicPlayer.h"   // Создаём объект для управления плейером MusicPlayer myplayer;   void setup() { myplayer.begin(); myplayer.keyDisable(); //отключаем встроенное управление воспроизведением myplayer.analogControlEnable(); //включаем возможность слушать аналоговые входы myplayer.digitalControlEnable(); //включаем возможность слушать цифровые входы   // прикрепляем функцию на вход 4: она будет вызвана как только // сигнал на 4-м входе станет LOW myplayer.attachDigitOperation(4, nextTrack, LOW);   // прикрепляем функцию adjustVolume на вход A5: она будет вызвана // как только значение на входе изменится myplayer.attachAnalogOperation(A5, adjustVolume); }   void loop() { myplayer.setPlayMode(MODE_SHUFFLE); myplayer.creatPlaylist(); myplayer.playList(); }   /* * Функция, которая слушает аналоговый вход A5 и устанавливает громкость */ void adjustVolume() { // отображаем диапазон аналогового входа на диапазон // громкости. Экспериментально установлено, что он находится // в границах от 0 до 139 byte vol = map(analogRead(A5), 0, 1023, 0, 139); // командуем плейеру изменить громкость myplayer.setVolume(vol); }   /* * Функция, которая слушает цифровой вход 4 и переключает треки */ void nextTrack() { // командуем включить следующий трек myplayer.opNextSong(); // защищаемся от возможного дребезга кнопки delay(50); }


wiki.amperka.ru
Просмотров: 455 | Добавил: nzablented | Рейтинг: 0.0/0
Всего комментариев: 0

Меню сайта

Поиск

Календарь

«  Июль 2015  »
Пн Вт Ср Чт Пт Сб Вс
  12345
6789101112
13141516171819
20212223242526
2728293031

Архив записей

Наш опрос

Оцените мой сайт
Всего ответов: 0

Мини-чат

Друзья сайта

  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Вход на сайт
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Copyright MyCorp © 2025
    Создать бесплатный сайт с uCoz