Разрабатывая разные устройства с функцией звукового оповещения, часто сталкиваюсь с проблемой выбора.
Зачастую функция озвучки критически ограничивает доступный объем памяти для основной программы, снижает быстродействие или конфликтует по прерываниям.
Поэтому было решено сделать базовый блок озвучки, чтобы его можно было просто подключить к различным девайсам. Ниже привожу небольшой обзор того, что получилось.
Необходимые данные от блока управления к блоку озвучки передается по UART порту. Формат данных выглядит так :
sNN.NN.NN (s file name. number of repetition. pause time)
s – признак начала строки данных
1.NN – имя файла для воспроизведения (имя задается цифрами)
2.NN – количество повторов
3.NN – пауза в секундах между повторами
Формат звуковых файлов WAV 8-bit_22khz
В устройстве предусмотрено четыре (при желании можно увеличить) банка памяти для одновременного озвучивания четырех событий.
Ниже видео, в котором я постарался показать, как это все работает, вначале немного теории, потом два примера подключения базового блока к девайсам.
Теперь можно без особых проблем делать и говорящие сигнализации и информаторы в салон и прочие девайсы со звуковыми оповещениями.
Для экспериментов, ниже ссылка на тестовую прошивку (максимальная строка s09.03.30 и два банка)
www.dropbox.com/s/awxmrjp…r/test_SOUND_777.hex?dl=0
Arduino 09 – ATmega pin 15/1 – **** аудио выход WAV PCM Mono 22050Hz 8bit
Arduino 05 – ATmega pin 11/5 – bank_1 СД
Arduino 06 – ATmega pin 12/6 – bank_2 СД
Serial.begin(57600)