Arduino:Примеры/SimpleAudioPlayer
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Простой аудиопроигрыватель [1]
Этот пример показывает, как при помощи Arduino Due и библиотеки Audio настроить примитивный аудиопрогрыватель.
Необходимое оборудование
- Плата Arduino Due
- Динамик или наушники на 8 Ом
- Модуль Arduino (вроде Ethernet-модуля) c SD-картой, подключенный к CS4
- Компоненты для построения цепи с внешним звукоусилителем: LM386 (маломощный звукоусилитель), потенциометр на 10 кОм, резистор на 10 Ом, 2 конденсатора на 10 мкФ, конденсатор на 0,05 мкФ (или 0,1 мкФ), конденсатор на 250 мкФ
Цепь
Модуль, в который вставлена SD-карта, помещается поверх Arduino Due. Файл под названием «test.wav» записан в корневой директории SD-карты. В качестве теста можно попробовать подсоединить наушники напрямую к «земле» и DAC0 (в зависимости от полярности).
Чтобы подключить к плате динамик, между ним и контактом DAC0 нужно будет добавить цепь со звукоусилителем. Ее цель – увеличить громкость динамика. Существует много разных звукоусилителей, и один из самых распространенных – это LM386. Схема ниже показывает, как создать эту цепь при помощи LM386 и еще нескольких компонентов. Питание LM386 можно осуществить при помощи разных источников напряжения, и для этого нужно подключить его контакт Vs, например, к +5V на Arduino Due или внешней 9-вольтовой батарее. Коэффициент усиления в цепи можно увеличить за счет конденсатора, подключенного к 1-ому и 8-ому контактам LM386. С конденсатором на 10 мкФ коэффициент усиления будет составлять «200», а без него – «50». Потенциометр позволяет управлять громкостью, производимой звукоусилителем.
Внимание: Подключать напрямую динамик к контактам Arduino Due не следует.
Звуковой файл
Звуковой файл, хранящийся на SD-карте, должен быть в WAV-формате и в качестве 16 бит 44100 Гц.
Код
/*
Простой аудиопроигрыватель
Демонстрирует использование библиотеки Audio для Arduino Due
Необходимое оборудование:
* Модуль Arduino c SD-картой, подключенной к CS4
* Звуковой файл «test.wav» в корневой директории SD-карты
* Звукоусилитель, подключенный к DAC0 и «земле»
* Динамик, подключенный к звукоусилителю
Создан Массимо Банзи (Massimo Banzi) 20 сентября 2012 года,
модифицирован Скоттом Фитцджеральдом (Scott Fitzgerald) 19 октября
2012 года, еще раз модифицирован Артуро Гуадалупи (Arturo Guadalupi)
18 декабря 2015 года
Этот код не защищен авторским правом
http://www.arduino.cc/en/Tutorial/SimpleAudioPlayer
*/
#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!"); // " не удалась!"
while(true);
}
Serial.println(" done."); // " завершена успешно"
// задаем скорость передачи данных по SPI:
// стерео 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) ;
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino