Включение трека по срабатыванию датчика, dfplayer

Тема в разделе "Закажу проект", создана пользователем Assspid, 26 мар 2021.

Метки:
  1. Assspid

    Assspid Нуб

    Есть проект на основе этого http://forum.amperka.ru/threads/Вкл...аботанному-датчику-7-датчиков-7-треков.16555/ но алгоритм воспроизведения немного иной
    Задача: Дописать скетч с этим условием

    На данный момент собран макет, треки по номеру датчика воспроизводит
    Код (C++):
    #include <SoftwareSerial.h>
    #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] = {0001, 0002, 0003, 0004, 0005, 0006, 0007};    // номера треков. На карте памяти треки должны быть в папке 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_serial (Serial);  //set Serial for DFPlayer-mini mp3 module
      mp3_set_volume (30);                          // задаем громкость
      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]);
        }
      }
    }
     
  2. ostrov

    ostrov Гуру

    Проводок к ножке BUSY, с нее считывать состояние плеера, играет или нет. Если речь идет о китайских DfMini, то у них другой обратной связи нет.
     
  3. akl

    akl Гуру

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