// библиотека для работы шины SPI #include // библиотека для работы c картой microSD #include // библиотека для воспроизведения музыки с помощью Arduino Due #include // пин выбора устройства на шине SPI #define SD_CS_PIN 8 // громкость музыки #define VOLUME 256 // количество сэмплов, считываемых за один блок #define COUNT_SAMPLES 1024 // создаём буффер сэмплов считываемых за один блок short buffer[COUNT_SAMPLES]; void setup() { // открываем монитор Serial-порта Serial.begin(9600); // выводим сообщение в Serial-порт о поиске карты памяти Serial.println("Initializing SD card..."); // если microSD-карта не была обнаружена while (!SD.begin(SD_CS_PIN)) { // выводим сообщение об ошибке Serial.println("Card failed, or not present"); // ждём одну секунду и повторяем попытку delay(1000); } // выводим сообщение об успешной поиске карты памяти Serial.println("Card initialized..."); // выставляем частоту воспроизведения Audio.begin(44100, 100); } void loop() { // открываем wave-файл с карточки microSD File myFile = SD.open("test-due.wav"); if (!myFile) { // если файл не открылся, пишем об ошибке и останавливаем код Serial.println("Error opening music file..."); while (true); } // выводим сообщение о начале воспроизведения Serial.print("Playing"); // пока файл не закончился while (myFile.available()) { // считываем сэмплы из файла в буфер myFile.read(buffer, sizeof(buffer)); // подготавливаем сэмплы Audio.prepare(buffer, COUNT_SAMPLES, VOLUME); // «скармливаем» сэмплы Audio.write(buffer, COUNT_SAMPLES); } // закрываем файл myFile.close(); // выводим сообщение об окончании проигрывания файла Serial.println("End of file. Thank you for listening!"); // останавливаем код while (true); }