0 / 0 / 0
Регистрация: 08.02.2010
Сообщений: 72
|
|
1 | |
Как с avr сгенерировать звуки?24.12.2011, 01:49. Показов 11119. Ответов 7
Метки нет (Все метки)
Подскажите, как простым контроллером (тини2313 или мега48 - то, что есть для опытов) генерировать звуки; звуки типа "пим-пим" или динь-динь ;)
ну т.е. интересуют не "ноты" (т.е. звуки заданной частоты).. примеру иномарки некоторые с открытой дверью подают сигналы "динь-динь-динь" как вот такого типа сигналы генерировать? очередная идея слегка малахольная (я все хочу пульсирующий светодиод-индикатор ручного тормоза вместо просто горящего; а еще продублировать его вот этими "пим-пим" или "динь-динь").. ну и для общего развития :)
0
|
24.12.2011, 01:49 | |
Ответы с готовыми решениями:
7
Как подкрутить AVR Toolchain к AVR Studio 4.19? Проблема с наушниками - очень тихо воспроизводятся системные звуки и звуки в играх. Проблема с наушниками - очень тихо воспроизводятся системные звуки и звуки в играх. Одна колонка вопроизводит голоса и звуки, вторая только звуки Как подружить AVR+AVR? |
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 |
Постоянная времени 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 | |
25.12.2011, 00:15 | |
Помогаю со студенческими работами здесь
8
Сгенерировать 3 случайных числа в диапазоне от 0 до 10. Если сумма этих чисел меньше 16, сгенерировать новую тройку. Сгенерировать случайным образом и вывести на экран 11 окон разного цвета. Сгенерировать последовательность звуков, представляющих гамму. Создать комби Как воспроизводить звуки на JS? CPT - как убрать звуки Как фиксировать системные звуки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |