Импульсный усилитель добавит громкости умному дому, пробудит жизнь в батиных колонках и не даст заснуть соседям.
По способу работы с входным сигналом и принципу построения усилительных каскадов УМЗЧ делятся на классы:
Усилителю для работы даже не понадобится микроконтроллер. Всё что надо — источник звука, пару пассивных колонок и источник напряжения от 3 до 5 вольт.
Включайте любимые хиты, радуйте соседей и вперёд.
Будьте внимательны, «доброжелатели» могут послать ответочку.
Заменим источник звука на DFPlayer. Плеер поддерживает ручное и программное управление. Ручное осуществляется с помощью кнопок и резисторов, а программное — управляющей электроникой по интерфейсу UART. В качестве примера выберем резисторы и кнопки.
Плеер умеет воспроизводить музыкальные файлы в формате MP3
. В следствии чего просто скопируйте на microSD карту необходимые треки.
Для воспроизведения музыкальных файлов по очереди, необходимо установить между пином ADKEY_1
и GND
резистор на 51 кОм. В нашем случае возьмём два резистора по 100 кОм в параллели — 50 кОм и скоммутируем их через тактовую кнопку. В итоге при клике кнопки плеер включится, а при повторном — выключиться.
Платформы Arduino с ядром Cortex-M0 позволяют воспроизводить звуковые дорожки с карты памяти через цифро-аналоговый преобразователь на пине A0
.
Подготовьте файл для воспроизведения:
WAV
с характеристиками:
Платформы на ядре Cortex-M0 имеют только один ЦАП — аудио сигнал. В итоге на выходе только один усиленный канал. Для работы двух акустических систем — переведите усилитель в моно режим путём установки джампера объединения входных каналов.
Для работы примера — установите библиотеку AudioZero из менеджера библиотек.
// библиотека для работы шины SPI #include <SPI.h> // библиотека для работы c картой microSD #include <SD.h> // библиотека для воспроизведения музыки с помощью Arduino M0 #include <AudioZero.h> // пин выбора устройства на шине SPI #define SD_CS_PIN 8 void setup() { // открываем монитор Serial-порта Serial.begin(9600); // выводим сообщение в Serial-порт о поиске карты памяти Serial.print("Initializing SD card..."); // если microSD-карта не была обнаружена while (!SD.begin(SD_CS_PIN)) { // выводим сообщение об ошибке Serial.println("Card failed, or not present"); // ждём одну секунду и повторяем попытку delay(1000); } // выводим сообщение об успешной поиске карты памяти Serial.println("Card initialized..."); // выставляем частоту воспроизведения AudioZero.begin(2 * 44100); } void loop() { // открываем wave-файл с карточки microSD File myFile = SD.open("test-m0.wav"); if (!myFile) { // если файл не открылся, пишем об ошибке и останавливаем код Serial.println("Error opening music file..."); while (true); } // выводим сообщение о начале воспроизведения Serial.print("Playing"); // воспроизводим файл AudioZero.play(myFile); // выводим сообщение об окончании проигрывания файла Serial.println("End of file. Thank you for listening!"); // останавливаем код while (true); }
Платформа Arduino Due с ядром Cortex-M3 позволяет воспроизводить звуковые дорожки с карты памяти через два цифро-аналоговых преобразователя в стерео режиме на пинах A12
и A13
.
Подготовьте файл для воспроизведения:
WAV
с характеристиками:
Для работы примера — установите библиотеку Audio из менеджера библиотек.
// библиотека для работы шины SPI #include <SPI.h> // библиотека для работы c картой microSD #include <SD.h> // библиотека для воспроизведения музыки с помощью Arduino Due #include <Audio.h> // пин выбора устройства на шине SPI #define SD_CS_PIN 8 // громкость музыки #define VOLUME 256 // количество сэмплов, считываемых за один блок #define COUNT_SAMPLES 1024 // создаём буффер сэмплов считываемых за один блок short buffer[COUNT_SAMPLES]; void setup() { // открываем монитор Serial-порта Serial.begin(9600); // выводим сообщение в Serial-порт о поиске карты памяти Serial.println("Initializing SD card..."); // если microSD-карта не была обнаружена while (!SD.begin(SD_CS_PIN)) { // выводим сообщение об ошибке Serial.println("Card failed, or not present"); // ждём одну секунду и повторяем попытку delay(1000); } // выводим сообщение об успешной поиске карты памяти Serial.println("Card initialized..."); // выставляем частоту воспроизведения Audio.begin(44100, 100); } void loop() { // открываем wave-файл с карточки microSD File myFile = SD.open("test-due.wav"); if (!myFile) { // если файл не открылся, пишем об ошибке и останавливаем код Serial.println("Error opening music file..."); while (true); } // выводим сообщение о начале воспроизведения Serial.print("Playing"); // пока файл не закончился while (myFile.available()) { // считываем сэмплы из файла в буфер myFile.read(buffer, sizeof(buffer)); // подготавливаем сэмплы Audio.prepare(buffer, COUNT_SAMPLES, VOLUME); // «скармливаем» сэмплы Audio.write(buffer, COUNT_SAMPLES); } // закрываем файл myFile.close(); // выводим сообщение об окончании проигрывания файла Serial.println("End of file. Thank you for listening!"); // останавливаем код while (true); }
Подготовьте файл для воспроизведения:
WAV
с характеристиками:
var sdCard = require('@amperka/card-reader').connect(P8); // создаём объект для работы с файлом «test-js.raw» var file = E.openFile("test-js.raw","r"); // создаём объект для воспроизведения с количесвом семплов // и включаем дублирующий буффер var wave = new Waveform(2048, { doubleBuffer: true }); // загружаем первые данные в файл wave.buffer.set(f.read(wave.buffer.length)); wave.buffer2.set(f.read(wave.buffer.length)); var fileBuf = f.read(wave.buffer.length); // когда буффер закончился, играем следущий wave.on("buffer", function(buf) { buf.set(fileBuf); fileBuf = f.read(buf.length); if (fileBuf === undefined) { wave.stop(); } }); // начинаем воспроизводить семпл analogWrite(A4, 0.5); wave.startOutput(A4, 11025, {repeat:true});