Форум за електроника Форуми Форум за електроника
Български форум за електроника, ремонти, схеми, документация
 
 Въпроси/ОтговориВъпроси/Отговори   ТърсенеТърсене   ПотребителиПотребители   ГрупиГрупи   Регистрирайте сеРегистрирайте се 
 ПрофилПрофил   Влезте, за да видите съобщенията сиВлезте, за да видите съобщенията си   ВходВход 

Може ли с микроконтролер(памет) да се изкара мелодия?
Иди на страница Предишна  1, 2, 3  Следваща
 
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics



Предишната тема :: Следващата тема  
Автор Съобщение
dreadx
Опитен потребител
Опитен потребител


Регистриран на: 27 Мар 2005
Мнения: 413
Местожителство: Sofia

МнениеПуснато на: Вто Май 24, 2005 10:15    Заглавие: Отговорете с цитат

Преди много време направих за една дипломна работа на приятел такова нещо за звънец. Програмирах в един PIC данните от стандартните мелодии за Правец-8 и останалите електронни звънци които намерих, направени с броячи и EPROM (те мелодиите са съвместими) и ги play-нах с една програма от 15 реда, която беше преразказана за PIC-а програмата на асемблер от Правец-8 за генериране на звук по нота и продължителност. Естествено нищо от това не си пазя, но няма да е проблем за никой програмист на PIC да ти го напише, стига да не те мързи да изровиш някакви стари списания с музикални програми за Правец-8 от които да вземеш мелодии.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
инж.Васил Сапунджиев
Опитен потребител
Опитен потребител


Регистриран на: 08 Апр 2005
Мнения: 292

МнениеПуснато на: Вто Май 24, 2005 10:25    Заглавие: Отговорете с цитат

До сега правих програма, за да извадя честотите на тоновете от основната гама. Принципът е, че тонът Ла има честота 440Хц. Всеки тон има копие в следващата остава с два пъти по-висока честота, т.е. горно Ла има честота 880Хц. В една октава се знае, че има 8 тона и четири полутона, като в мажорните гами полутонове няма между трета и четвърта степен и седма и осма. За До-мажор това са тоновете Ми и Фа, и Си и До. Ето какво се получи.
274 До; 310 Ре; 346 Ми; 364 Фа; 400 Сол; 440 Ла; 512 Си; 548 До
Технически решения има много и най-разнообразни. Един възможен вариант е, да заредиш един EPROM с числа, и да го адресираш последователно. Дали това ще го направиш с брояч и тактов генератор или с микроконтролер, няма значение. На изхода трябва да има дешифратор, който да разпознава кода на съответната нота и да задейства един общ генератор за всички тонове като му променя честотата, или отделен генератор за всеки тон, което е по-добрия вариант.
За продължителността на нотите трябва да въведеш единица време, например за четъртинка нота. Тогава кодът на половинка нота ще трябва да го повториш в две последователни клетки от паметта, а за цяла нота – в четири клетки. Ако имаш осмини и щестнайсетинки – ноти, ти трябват повече клетки, като при шестайсетинки трябва да представяш една цяла нота с 16 клетки с едно и също съдържание.
Микропроцесорите могат да правят чудеса. Можеш директно да синтезираш честотите по програмен път, т.е. генераторът и дешифраторът да ти отпаднат, но програмата за това е сложна и зависи от това, към кой контролер се ориентираш, защото програмирането им е различно.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
slav4o.com
Опитен потребител
Опитен потребител


Регистриран на: 04 Юли 2004
Мнения: 2970
Местожителство: Велико Търново

МнениеПуснато на: Вто Май 24, 2005 14:05    Заглавие: Отговорете с цитат

Mалко допълнение, мисля че ще е по-добре една клетка за тона и една за продължителността, така за всички ноти по 2 клетки от паметта, а дори във втората клетка има място за още опции като сила на звука даже, или тембър... Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
инж.Васил Сапунджиев
Опитен потребител
Опитен потребител


Регистриран на: 08 Апр 2005
Мнения: 292

МнениеПуснато на: Вто Май 24, 2005 14:50    Заглавие: Отговорете с цитат

Това, което предлагаш е по-интелигентния подход, който изисква непременно синтез на звук по програмен път. Аз предложих възможно най-простия вариант и най-лесен за осмисляне от начинаещ. Той позволява адресиране с прост брояч. Варианти много!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dreadx
Опитен потребител
Опитен потребител


Регистриран на: 27 Мар 2005
Мнения: 413
Местожителство: Sofia

МнениеПуснато на: Нед Май 29, 2005 12:50    Заглавие: Отговорете с цитат

Въобще не е сложна програмата за това, просто нямам на удобно книжка за Правец-8 да погледна кода от 15 команди на асемблер, които правят цикъл (по-точно 2 един в друг включени цикъла за да не се влияе продължителността от височината на тона) и така се генерира нота с височина и продължителност. Другото са таблици в паметта с ноти за мелодии и някакво управление на достъпа към тях. В един PIC16F84 се побраха около 12 мелодии. Не съм го правил на някой по-удобен и по-евтин за целта PIC защото беше за дипломна работа на един приятел и за съжаление никъде не си пазя кода, защото тогава нямаше интернет, и записвачки за CD-та, и нищо сигурно като носител, но тръгнете от въпросната програма на асемблер за 6502 и ще видите, че е лесно.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
nankov
Опитен потребител
Опитен потребител


Регистриран на: 12 Яну 2005
Мнения: 347
Местожителство: Хасково

МнениеПуснато на: Нед Май 29, 2005 15:18    Заглавие: Отговорете с цитат

Милене имам схема и програма за две мелодии на PIC16F84.
Хасково - Орфей 16 Христо Нанков 0898/209341
_________________
Има 101 причини да се гордея че съм Българин
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
marinov
Опитен потребител
Опитен потребител


Регистриран на: 20 Апр 2004
Мнения: 130
Местожителство: Русе

МнениеПуснато на: Сря Юни 01, 2005 7:42    Заглавие: Отговорете с цитат

Схемата и програмата ги има в книгата на МК за PIC
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
инж.Васил Сапунджиев
Опитен потребител
Опитен потребител


Регистриран на: 08 Апр 2005
Мнения: 292

МнениеПуснато на: Сря Юни 01, 2005 9:58    Заглавие: Отговорете с цитат

Ето по-точни стойности на честотите на тоновете. Оказа се, че разстоянията между тях не са еднакво отдалечени, та се наложи да ги прослушвам многократно. Остава да важи правилото, че всеки тон в по-горната октава е с два пъти по-висока честота и обратно.
До-262; Ре-298; Ми-338; Фа-356; Сол-398; Ла-440; Си-497; До-525;
Най-простият алгоритъм за генериране на честота е, като се осигури цикъл, при който зададено число се сумира само със себе си до възникване на пренос. Колкото е по-голямо число, толкова по-бързо се генерира пренос, т.е. толкова е по-кратък периода. Има обаче една методическа грешка на този алгоритъм, която се проявява при високите честоти. Там с една итерация на цикъла може да се генерира пренос. За това трябва да се предвидят поне 16 итерации за най-високата честота.
Генерираните импулси са тесни и ще предизвикат неприятен звук. За това или на всяка итерация трябва да се инвертира изходът на контролера, или преди усилвателя да се постави тригер с броячен вход, за да се получат симетрични импулси. Честотата обаче ще намалее на поровина.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
slav4o.com
Опитен потребител
Опитен потребител


Регистриран на: 04 Юли 2004
Мнения: 2970
Местожителство: Велико Търново

МнениеПуснато на: Пет Юни 03, 2005 16:52    Заглавие: Отговорете с цитат

Един брояч чете от паметта по две клетки (две ИС памети) и от едната като прочете стойността със ЦАП се получава аналогов сигнал, който управлява честотно зависим генератор, а стойността на другата клетка по същия начин със ЦАП се преобразува в напрежение което управлява чакащ мултивибратор който след изсвирване на нотата генерира импулс, който се подава на брояча. Принципно не е сложна идейката ми, дори може да се опитам да направя нещо със 74ХХ, схеми такива бол, не са скъпи. Остава проблема с паметта.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
Milen_haskovo
Опитен потребител
Опитен потребител


Регистриран на: 11 Фев 2005
Мнения: 1404
Местожителство: София/Хасково

МнениеПуснато на: Пет Юни 03, 2005 19:43    Заглавие: Отговорете с цитат

Паметите аз ги намирам лесно - по старите компютърни платки, по изгорели харддискове и CD-та, автокасетофони... Въпроса ми е дали ще могат да се използват за тази цел?
_________________
Както си работеше и спря...
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
Покажи мнения от преди:   
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics Часовете са според зоната GMT + 2 Часа
Иди на страница Предишна  1, 2, 3  Следваща
Страница 2 от 3

 
Към:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети


Powered by phpBB © 2001, 2005 phpBB Group
Translation by: Boby Dimitrov
Where to Find Free Service Manuals