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) ;
}

