Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/55: Рейтинг темы: голосов - 55, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
1

Как с avr сгенерировать звуки?

24.12.2011, 01:49. Показов 11119. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, как простым контроллером (тини2313 или мега48 - то, что есть для опытов) генерировать звуки; звуки типа "пим-пим" или динь-динь ;)

ну т.е. интересуют не "ноты" (т.е. звуки заданной частоты).. примеру иномарки некоторые с открытой дверью подают сигналы "динь-динь-динь"

как вот такого типа сигналы генерировать?

очередная идея слегка малахольная (я все хочу пульсирующий светодиод-индикатор ручного тормоза вместо просто горящего; а еще продублировать его вот этими "пим-пим" или "динь-динь").. ну и для общего развития :)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2011, 01:49
Ответы с готовыми решениями:

Как подкрутить AVR Toolchain к AVR Studio 4.19?
Здравствуйте. Как подкрутить AVR Toolchain к AVR Studio 4.19? avr-gcc есть, а make нет. Как...

Проблема с наушниками - очень тихо воспроизводятся системные звуки и звуки в играх.
Такая проблема: системные звуки и звуки в играх и программах очень тихо воспроизводятся. Могу...

Проблема с наушниками - очень тихо воспроизводятся системные звуки и звуки в играх.
Такая проблема: системные звуки и звуки в играх и программах очень тихо воспроизводятся. Могу...

Одна колонка вопроизводит голоса и звуки, вторая только звуки
Сегодня поставил новые колонки и заметил вот, что одна колонка играет в основном бассы, а другая...

Как подружить AVR+AVR?
Приветствую Вас уважаемые форумчане! Требуется связать 2 AVR-ки, по классической схеме Master ->...

7
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
24.12.2011, 02:25 2
как раз недавно озаботился похожим - в смысле звуки делать.
В мегах есть Таймер2 - им можно генерировать сигналы на ножке OC2 в режиме CTC.
0
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
24.12.2011, 02:55 3
Если надо один тон - то просто разную частоту на динамик подавать.
Если надо полифонию, т.е. несколько тонов одновременно - то либо ШИМ, либо например R-2R ЦАП сделать.
У тебя звук похоже полифонический, вопрос как его генерировать - можно разложить на тоны и и генерировать, можно просто записать звук и воспроизводить. Генерация потребует вычислительные мощности, или таймеры. Запись и воспроизведение потребует много памяти.
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 494
24.12.2011, 03:01 4
можно воспроизводить wav через r2r цап.
Например звук window7- windows default.wav в формате 4 bit 8kHz wav занимает менее 3кб, вполне впихабельно
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 1,835
24.12.2011, 13:23 5
"пим-пим" или динь-динь
Эти звуки не полифоничны. У них один, не меняющийся тон, но громкость подчиняется определенному закону.
Например "ДИНЬ" (типа колокольчика) - быстрое нарастание и длительный постепенный спад.

http://we.iosyitistromyss.ru/uptoods/images/00/00/66/2011/12/25/3b5fbb.jpg
Сам тон и огибающую можно формировать либо с помощью ШИМ, либо с помощью ЦАП (ШИМ огибающей можно программный - он медленный). А дальше - перемножить.
Например, ШИМ тона подавать на ключ, на питание которого подавать отфильтрованную огибающую - и после фильтра получим то, что хотим.

http://we.iosyitistromyss.ru/uptoods/images/00/00/66/2011/12/25/a1ccce.jpg
Фильтр R1C1 создает плавную огибающую, а R3C2 фильтрует ШИМ тона.
В этом случае нужно место в памяти для хранения огибающей. Его понадобится немного - десятки байт. Или эту огибающую вычислять (типа экспоненты).
Ну, и можно записать сэмпл и воспроизводить его любым доступным способом. Но для хранения могут понадобиться килобайты.
0
0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
24.12.2011, 23:42 6
последний коментарий - как раз то, что я в общем догадывался

а что "гуглить" дальше? знающему человеку конечно уже достаточно данных, но мне пока нифига не понятно, куда дальше ;)

например: ШИМ тона - это что? по идее, разве недостаточно на пин какой-нибудь 440 раз в секунду выдавать 1/0 и получить ноту "ля" (кажется)? или это оно и есть :)
чтобы начать какие-то тесты на коленке - у какие номиналы у R/C/VT на этой схеме?
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 1,835
25.12.2011, 00:07 7
разве недостаточно на пин какой-нибудь 440 раз в секунду выдавать 1/0 и получить ноту "ля"
Можно. Но будет прямоугольник. У колокольчика синус, поэтому его звук будет звучать чище. В принципе, можно проверить несколько вариантов и выбрать наилучший.
Постоянная времени R1C1 должна быть выбрана так, чтобы погасить пульсации он ШИМа, формирующего огибающую. Я бы выбрал, для начала, примерно 100 мс (допустим 4,7 кОм и 22 мкФ).
Постоянная времени R3C2 выбирается так, чтобы цепочка гасила высокочастотную составляющую ШИМ тона. Если будешь подавать прямоугольник 440 Гц, то она не нужна.
R2 возьми 10-20 кОм. Выходной сигнал подай через усилитель (хотя бы эмиттерный повторитель) на динамик (не забудь про разделительный конденсатор между фильтром и усилителем).
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
25.12.2011, 00:15 8
не нужно никаких двух шимов, выдумки это всё. ваша задача - придумать функцию, которая будет "звучать" так, как надо вам. выше был график с быстрым подьемом и медленным спадом - это то, что нужно. его можно упростить вообще до прямой, линейно спадающий от 100% до 0%. второй график (функция) - синус или прямоугольник с нужной частотой. перемножаете эти графики, получаете синус/меиндр со спадающей громкостью. потренироваться можно в экселе, например.

дальше, когда имеете работающую функцию, нужно определиться с разрядностью звука. пусть это будет 8 бит, значит 0% - это код 0, а 100% - код 255, т.е. функция должна давать на выходе только числа от 0 до 255. дальше настраиваете один ШИМ на макс частоту, но разрядностью 8 бит (256 градаций). и через определенное время (выбранная частота дискретизации) суете в регистр шима, который отвечает за скважность, результат функции. всё.

если выбрать в качестве генератора не синус, а меиндр, то там по сути и умножать не нужно, а просто сделать AND.

сумбурно, но, надеюсь, понятно.
0
25.12.2011, 00:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2011, 00:15
Помогаю со студенческими работами здесь

Сгенерировать 3 случайных числа в диапазоне от 0 до 10. Если сумма этих чисел меньше 16, сгенерировать новую тройку.
Сгенерировать 3 случайных числа в диапазоне от 0 до 10. Если сумма этих чисел меньше 16,...

Сгенерировать случайным образом и вывести на экран 11 окон разного цвета. Сгенерировать последовательность звуков, представляющих гамму. Создать комби
Задача. Сгенерировать случайным образом и вывести на экран 11 окон разного цвета. Сгенерировать...

Как воспроизводить звуки на JS?
Такие звуки как в чатах(AJAX). Желательно без всякой мороки. Поскольку HTML пробовал и эффект...

CPT - как убрать звуки
Как убрать звуки в CISCO PAKET TRACER?

Как фиксировать системные звуки?
Есть ли в Python какая-либо библиотека для фиксирования системных звуков или звуков из других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru