Здравствуйте, форумчане! Приобрел шилд : 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){ } }
Так у тебя при каждом Tm один и тот же файл, плюс у тебя условие меньше ли-бо равно. 5 всегда меньше 51,43,35,27,19,11 Плюс он всегда у тебя будет играть и прерываться, сделай условие по проигрыванию