Здравствуйте. Вот программа, которая воспроизводит ряд аудиофайлов по нажатиям кнопок, а при запуске зацикленно воспроизводит ещё один аудиофайл.
#include <DFPlayer_Mini_Mp3.h>
const int buttonPin = 0;
int buttonState = 0;
void setup() {
Serial.begin(9600); // Инициализация серийного порта для общения с DFPlayer
pinMode(buttonPin, INPUT);
mp3_set_serial(Serial); // Присваиваем аппаратный Serial для общения с DFPlayer
delay(100); // Некоторая задержка для инициализации DFPlayer
mp3_set_volume(10); // Устанавливаем громкость (от 0 до 30)
attachInterrupt(0, swap, RISING);
}
void swap() {
buttonState = analogRead(buttonPin);
if (buttonState >= 1000){mp3_play(11);}
if (buttonState >= 760 && buttonState < 770){mp3_play(10);}
if (buttonState >= 610 && buttonState < 620){mp3_play(9);}
if (buttonState >= 510 && buttonState < 520){mp3_play(8);}
if (buttonState >= 435 && buttonState < 445){mp3_play(7);}
if (buttonState >= 380 && buttonState < 390){mp3_play(6);}
if (buttonState >= 335 && buttonState < 345){mp3_play(5);}
if (buttonState >= 305 && buttonState < 315){mp3_play(4);}
if (buttonState >= 275 && buttonState < 285){mp3_play(3);}
if (buttonState >= 250 && buttonState < 260){mp3_play(2);}
}
void loop() {
// delay(250);
// mp3_play (1);
// delay(24000);
}
Однако на практике воспроизведение любого из аудиофайлов обрывается, не доиграв до конца. Не устанавливал закономерность, в какой именно момент, у одного и того же файла это может быть разный момент.
Пожалуйста, подскажите, какой ещё есть способ зацикливания воспроизведения, кроме задания времени (в данном примере 24000 мс — округлённая длина аудиозаписи 1), который позволил бы избежать обрывов.
Примечание. Нужно не использовать для управления плеером никаких пинов, кроме TX и RX.