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

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция write()[1]

Записывает аудиосигнал из буфера на контакты DAC0 и DAC1.

Синтаксис

Audio.write(buffer, length)

Параметры

buffer  именованный буфер со звуковым файлом. Тип данных  short
length  количество сэмплов для записи. Тип данных  int

Что возвращает

Ничего.

Пример

 1 /*
 2 
 3  Демонстрирует использование библиотеки Audio для Arduino Due 
 4 
 5  Необходимое оборудование :
 6  * Модуль Arduino c SD-картой, подключенной к CS4 (подойдет Ethernet-модуль)
 7  * Цепь со звукоусилителем, подсоединенная к DAC0 
 8 
 9  Создан Массимо Банзи (Massimo Banzi) 20 сентября 2012 года,
10  модифицирован Скоттом Фитцджеральдом (Scott Fitzgerald) 19 октября
11  2012 года.
12 
13 */
14 
15 #include <SD.h>
16 #include <SPI.h>
17 #include <Audio.h>
18 
19 void setup()
20 {
21   // инициируем последовательную коммуникацию на скорости 9600 бод (в целях отладки):
22   Serial.begin(9600);
23 
24   // настраиваем SD-карту:
25   Serial.print("Initializing SD card...");  //  "Инициализация SD-карты..."
26   if (!SD.begin(4)) {
27     Serial.println(" failed!");  //  " не удалась!"
28     return;
29   }
30   Serial.println(" done.");  //  " завершена успешно"
31   // задаем скорость передачи данных по SPI:
32   SPI.setClockDivider(4);
33 
34   // стерео 44100 КГц = 88200; пребуферация – 100 миллисекунд: 
35   Audio.begin(88200, 100);
36 }
37 
38 void loop()
39 {
40   int count=0;
41 
42   // открываем WAV-файл, находящийся на SD-карте: 
43   File myFile = SD.open("test.wav");
44   if (!myFile) {
45     // если файл не открылся, пишем об ошибке и останавливаем скетч:
46     Serial.println("error opening test.wav");  //  "ошибка при открытии test.wav"
47     while (true);
48   }
49 
50   const int S=1024; // количество сэмплов, считываемых за один блок
51   short buffer[S];
52 
53   Serial.print("Playing");  //  "Проигрывание"
54   // пока файл не закончится:
55   while (myFile.available()) {
56     // считываем сэмплы из файла в буфер:
57     myFile.read(buffer, sizeof(buffer));
58 
59     // подготавливаем сэмплы:
60     int volume = 1024;
61     Audio.prepare(buffer, S, volume);
62     // «скармливаем» сэмплы:
63     Audio.write(buffer, S);
64 
65     // каждые 100 блоков пишем «.»:
66     count++;
67     if (count == 100) {
68       Serial.print(".");
69       count = 0;
70     }
71   }
72   myFile.close();
73 
74   Serial.println("End of file. Thank you for listening!");  //  "Конец файла. Спасибо за прослушивание!"
75   while (true) ;
76 }

См.также

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