Включение композиций с MP3 плеера, соответствующих сработанному датчику (7 датчиков, 7 треков)

Тема в разделе "Закажу проект", создана пользователем X.ilia, 11 окт 2018.

  1. X.ilia

    X.ilia Нуб

    Задача: Написать скетч для Arduino UNO с комментариями, проконсультировать заказчика по сборке (опционально) и последующему сопровождению проекта.

    Контакты:
    тел: +7(921)331-26-11 Илья
    @: hlestunov.ilia@gmail.com
    г. Санкт-Петербург, пр. Энгельса, д. 34

    Срок: до 15.10.2018

    Стоимость: рассмотрим предложения

    Имеющееся оборудование:
    Arduino UNO, плата расширения Troyka Shield, плеер MP3 (DFPplayer mini), усилитель класса D Troyka-Модуль (2 шт), Датчик линии цифровой (7 шт), встраиваемая акустика (4 шт, по 2 на каждый усилитель), соединительные провода всех типов.
    Текущая стадия проекта: Собран макет из оборудования, подключен по USB для заливки скетча.

    Алгоритм работы: 7 датчиков, 7 треков на плеере. При изменении состояния одного из датчиков, включается трек, соответствующий порядковому номеру датчика. Если срабатывает другой датчик, а предыдущий еще не изменил состояние обратно, трек первого выключается, трек второго включается. Условие для включения трека №Х - срабатывание датчика на включение №Х ; Условие выключения трека №Х - срабатывание датчика на выключение №Х или срабатывание любого другого датчика на включение. Звучать может только один трек единовременно (соответствующий последнему сработанному датчику на включение).

    Более подробно опишу задачу по телефону или при встрече.

    Желательно, что бы исполнитель мог иметь связь по телефону (в идеале пришел к нам) в процессе реализации проекта для исключения недопонимания нюансов.
     
    Последнее редактирование: 11 окт 2018
  2. DetSimen

    DetSimen Guest

    Ну да, к чёрту подробности, город какой?
     
  3. X.ilia

    X.ilia Нуб

    СПб
     
  4. DIYMan

    DIYMan Guest

    Легко. Подобные проекты делал уже не один раз. Напишу с возможностью расширения до любого кол-ва датчиков, в коде будут комментарии, срок исполнения - в течение дня. Стоимость - от 2000 руб, на случай, если есть какие подводные камни. Могу сделать прямо сегодня, код работы с DFPlayer отлажен, даже на макетке собирать не придётся.

    Схему соединений - предоставлю, в формате для программы sPlan, плюс PNG-рисунок.

    Предоплата: 50% на карту сбера. Остальное - по факту выполненных работ. Мой скайп: porokhnya_dmitry, мыло - spywarrior@gmail.com, стучитесь. В разделе форума "Выполню проект" - есть моя тема, можете почитать отзывы.
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Демпингуем?
    Код (C++):

    #include <DFPlayer_Mini_Mp3.h>                  // https://github.com/DFRobot/DFPlayer-Mini-mp3
    const byte pin[7] = {3, 4, 5, 7, 9, 11, 12};    // пины с датчиками
    const byte track[7] = {1, 2, 3, 4, 5, 6, 7};    // номера треков. На карте памяти треки должны быть в папке mp3
    boolean pinOldState[7] = {0, 0, 0, 0, 0, 0};    // предыдущее состояние датчиков

    void setup()
    {
      for (byte i = 0; i < 7; i++) pinMode(pin[i], INPUT_PULLUP);
      for (byte i = 0; i < 7; i++) (!digitalRead(pin[i])); // запоминаем состояние датчиков
      Serial.begin(9600);
      mp3_set_volume (20);                          // задаем громкость
      delay (6000);                                 // для загрузки плеера
    }

    void loop()
    {
      for (byte i = 0; i < 7; i++)
      {
        boolean state = !digitalRead(pin[i]);
        if (state != pinOldState[i])
        {
          pinOldState[i] = state;
          if (state) mp3_play(track[i]);
          else mp3_stop();
        }
      }
    }
     
    P.S. вживую не проверял, лень.
     
  6. DIYMan

    DIYMan Guest

    Ну примерно так, но, как всегда - в реальной жизни есть куча нюансов - настройка уровней срабатывания (могут быть разными для каждого из датчиков), настройка скоростей общения и т.д. и т.п. Не говорю, что это всё прямо вот суперсложно, подчеркну лишь, что зачастую продаётся именно сервис, а не кусок кода ;) Т.е., по опыту - для заказчика гораздо важнее поддержка, те же комментарии в коде, вынесенный отдельно настроечный файл, рисунок схемы соединений и т.п.

    Код написать - это даже не 30% работы, а, порой - сильно меньше ;)
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    Это ж классика - написание программы - это 20% программирования и 80% отладки, причем из этих 20% собственно 10% - это написание ядра и 90% - написание остальной логики. А отсутствие четкого ТЗ от заказчика часто вынуждает переписывать именно эти 90% потому что "Классно. А теперь чуть поменяйте, чтобы работало вот так" :D
     
    DIYMan нравится это.
  8. DIYMan

    DIYMan Guest

    Вот и я о том же, собственно ;)
     
  9. ostrov

    ostrov Гуру

    И что, правда если файлы в папке mp3, то играют по номерам из названия файлов?
     
  10. DIYMan

    DIYMan Guest

    Угу ;) Файлы должны быть именованы как "0001.mp3" и т.д. Играет по номерам.
     
    lepidot нравится это.
  11. ostrov

    ostrov Гуру

    Сколько пробовал, заметил лишь что ему пофиг на имена файлов, хоть русскими буквами, первым считается тот, который зпписан первым и так далее. И в папку можно не складывать, в корне читает нормально. Это если речь об обычном китайском DfPlayer mini.
     
  12. DIYMan

    DIYMan Guest

    Всегда помещаю в папку mp3, и играю по номерам - пока замечаний от заказчиков не было ;) Да и проверяется это на раз, естественно.
     
  13. Tomasina

    Tomasina Сушитель лампочек Модератор

    Если запускать по номерам, то играет по номеру в имени файла, но если запускать через next/prev, то играет по порядковому номеру записанного файла (неважно какое у него имя).
    Поэтому я всегда перестраховываюсь и форматирую флешку при каждом перед перезаписью треков.
     
    DIYMan нравится это.
  14. DIYMan

    DIYMan Guest

    У мну ещё не было такой задачи, возьму в копилку ваш опыт, спс.
     
  15. ostrov

    ostrov Гуру

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