write()
Описание
Отправляет аудио-сигнал из буфера на выводы DAC0 и DAC1.
Синтаксис
Audio.write(buffer, length);
Параметры
buffer (short) : имя буфера, содержащего данные из аудио-файла.
length (int) : количество отправляемых сэмплов.
Возвращаемые значения
нет
Пример
/* Демонстрация возможностей библиотеки Audio на Arduino Due Системные требования : *Плата расширения Arduino с SD-картой, активируемой 4 выводом (подойдет Arduino Ethernet) *Аудио-усилитель с динамиком, подключенный к выводу DAC0 Автор - Massimo Banzi 20 сентября 2012 Изменено - Scott Fitzgerald 19 октября 2012 */ #include <SD.h> #include <SPI.h> #include <Audio.h> void setup() { // настраиваем последовательный интерфейс на скорость 9600 бод // для вывода отладочных данных Serial.begin(9600); // инициализируем SD-карту Serial.print("Initializing SD card..."); if (!SD.begin(4)) { Serial.println(" failed!"); return; } Serial.println(" done."); // задаем скорость передачи по интерфейсу SPI SPI.setClockDivider(4); // 44100КГц стерео => частота дискретизации 88200 // размер буфера - 100 мс. Audio.begin(88200, 100); } void loop() { int count=0; // открываем wav-файл на SD-карте File myFile = SD.open("test.wav"); if (!myFile) { // если открыть файл не удалось - выводим ошибку и завершаем программу Serial.println("error opening test.wav"); while (true); } const int S=1024; // количество сэмплов в одном блоке short buffer[S]; Serial.print("Playing"); // пока не достигли конца файла while (myFile.available()) { // считываем данные из файла в буфер myFile.read(buffer, sizeof(buffer)); // подготовка сэмплов int volume = 1024; Audio.prepare(buffer, S, volume); // отправляем сэмплы на аудио-выход Audio.write(buffer, S); // каждые 100 блоков выводим '.' count++; if (count == 100) { Serial.print("."); count = 0; } } myFile.close(); Serial.println("End of file. Thank you for listening!"); while (true) ; }