Arduino:Библиотеки/Audio/write()
Материал из Онлайн справочника
< Arduino:Библиотеки | Audio
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Функция write()[1]
Записывает аудиосигнал из буфера на контакты DAC0 и DAC1.
Синтаксис
Audio.write(buffer, length)
Параметры
buffer – именованный буфер со звуковым файлом. Тип данных – short
length – количество сэмплов для записи. Тип данных – int
Что возвращает
Ничего.
Пример
/*
Демонстрирует использование библиотеки Audio для Arduino Due
Необходимое оборудование :
* Модуль Arduino c SD-картой, подключенной к CS4 (подойдет 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..."); // "Инициализация SD-карты..."
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"); // "ошибка при открытии 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) ;
}