Аудио плеер на Cortex M0+ через DAC
Платформы Arduino с ядром Cortex-M0 позволяют воспроизводить звуковые дорожки с карты памяти через цифро-аналоговый преобразователь на пине A0
.
Что понадобится?
Для Arduino семейства MKR
- Активная акустическая колонка
Для Arduino M0 и Arduino M0 Pro
- Активная акустическая колонка
Аудиофайл
Подготовьте файл для воспроизведения:
- Скачайте и установите программу для конвертации аудиоформатов «Audacity»
- Сконвертируйте требуемый музыкальный файл в формат
WAV
с характеристиками:- Режим: моно
- Частоте дискретизации: 88200 Гц
- Количестве бит в сэмпле: 8 бит
- Скопируйте полученный файл на SD-карту.
Как собрать?
В зависимости от управляющей платформы соберите схему проекта.
Схема для Arduino MKR Zero
Схема для Arduino M0 и Arduino M0 Pro
Пример кода
Для работы примера — установите библиотеку AudioZero из менеджера библиотек.
- play-music-dac.ino
// библиотека для работы шины SPI #include <SPI.h> // библиотека для работы c картой microSD #include <SD.h> // библиотека для воспроизведения музыки с помощью Arduino на ядре Cortex M0+ #include <AudioZero.h> // на плате Arduino MKR Zero флешка подключена к SPI1 // выбираем в качестве пина CS определение SDCARD_SS_PIN #define SS_PIN SDCARD_SS_PIN // если у вас плата Arduino M0 или Arduino M0 Pro // выбирайте 8 пин // #define SS_PIN 8 void setup() { // открываем монитор Serial-порта Serial.begin(9600); // ждём открытия Serial-порта while(!Serial); // выводим сообщение в Serial-порт о поиске карты памяти Serial.println("Initializing SD card..."); // если microSD-карта не была обнаружена while (!SD.begin(SS_PIN)) { // выводим сообщение об ошибке Serial.println("Card failed, or not present"); // ждём одну секунду и повторяем попытку delay(1000); } // выводим сообщение об успешной поиске карты памяти Serial.println("Card initialization is OK"); // выставляем частоту воспроизведения AudioZero.begin(2 * 44100); } void loop() { // открываем wave-файл с карточки microSD File myFile = SD.open("dac-m0.wav"); if (!myFile) { // если файл не открылся, пишем об ошибке и останавливаем код Serial.println("Error opening music file..."); while (true); } // выводим сообщение о начале воспроизведения Serial.print("Playing music from DAC"); // воспроизводим файл AudioZero.play(myFile); // выводим сообщение об окончании проигрывания файла Serial.println("End of file. Thank you for listening!"); // останавливаем код while (true); }