Music Sheld 2.0 - постоянно играет одну и туже мелодию

Тема в разделе "Arduino & Shields", создана пользователем freearduino, 9 дек 2014.

  1. freearduino

    freearduino Нерд

    Здравствуйте, форумчане!
    Приобрел шилд : http://amperka.ru/product/arduino-music-shield
    Нужно отсчитывать время(таймер) и в определенное время воспроизводить звуковые файлы.
    Воспроизвожу файл а он потом постоянно играет и играет. Время приходит воспроизводится другому а этот постоянно играет.
    Что делаю не так?Уже голова кипит...
    Код (Text):
    #include <TimerOne.h>
    #include <QuadDisplay.h>
    #define DISPLAY_PIN 4
    float Tm= 00.06;
    int chel;
    //Для работы с Мюзик шилдом
    #include <Fat16.h>
    #include <Fat16Util.h>
    #include <NewSPI.h>
    #include <arduino.h>
    #include "pins_config.h"
    #include "vs10xx.h"
    #include "newSDLib.h"
    #include "MusicPlayer.h"
    MusicPlayer myplayer;
    void setup()
    {
      Timer1.initialize(); // 1 секунда по умолчанию - то, что надо
      Timer1.attachInterrupt(Timer1_action);
        Serial.begin(9600);
      myplayer.begin();
      myplayer.keyDisable(); //отключаем встроенное управление воспроизведением
      myplayer.analogControlEnable(); //включаем возможность слушать аналоговые входы
      myplayer.digitalControlEnable(); //включаем возможность слушать цифровые входы
      myplayer.setVolume(1);
    }

    void Timer1_action()
    {

      if (Tm==0.00){
      Tm = 00.00;
      displayDigits(DISPLAY_PIN, QD_0, QD_0, QD_0, QD_0);
      //delay(100);
        // displayClear(DISPLAY_PIN);
     
    } else {
     
        Serial.print("C=");
      Serial.println(Tm);
    //Здесь проверяем и получаем дробную часть
    int drob = (Tm - (int)Tm)*100;
    chel= (int)Tm;
    // Serial.println(chel);
    if (drob > 60) {
      drob = 60;
    Tm = chel + 0.60;
    }
    Tm= Tm - 00.01;
      // LED секунду горит, секунду - нет
      displayFloat(DISPLAY_PIN, Tm, 2);
     
    }
     
    }

    void loop()
    {
    myplayer.setPlayMode(MODE_SHUFFLE); //SHUFFLE
    //Для теста
      // while(Tm <= 58 ){
      //  myplayer.playSong("Skrillex.mp3");
    //}
      //Звучат треки каждые 8 мин
      while(Tm <= 51 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 43 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 35 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 27 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 19 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 11 ){
        //myplayer.playSong("Skrillex.mp3");
    }
      while(Tm <= 5 ){
        myplayer.playSong("10.mp3");
    }
      while(Tm <= 0.01 ){
     
    }
    if (Tm==0.00){

    }
     

    }
     
     
  2. Так у тебя при каждом Tm один и тот же файл, плюс у тебя условие меньше ли-бо равно.

    5 всегда меньше 51,43,35,27,19,11

    Плюс он всегда у тебя будет играть и прерываться, сделай условие по проигрыванию