Arduino:Библиотеки/Audio/write()

Материал из Онлайн справочника
Версия от 01:44, 11 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<references />» на «<references /> {{Навигационная таблица/Arduino библиотеки}}»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция 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) ;
}

См.также

Внешние ссылки