ارگ 21 نت
ارگ یک ساز الکترونیکی است که با فشردن کلید هایی امکان نواختن نتهای مختلف را دارد .برای تولید نت موسیقی با هر میکروکنترلری باید بر نکته اساسی زیر توجه کرد :نسبت فرکانس هر دو نت متوالی در دستگاه موسیقی بینالمللی(فاصله نیمپرده) برابر است با عدد 1.059463 بنابراین اگر یک نت را بهعنوان نقطه مبنا در نظر بگیریم، فرکانس نت بعدی 1.059463 برابر نت فعلی و فرکانس نت قبلی هم همین فرکانس تقسیمبر 1.059463 خواهد بود.با توجه به تدوین قراردادی مبنی برقرار دادن یکی از نتهای Do برابر با 440 هرتز، میتوانیم همین عدد 440 هرتز را بهعنوان مبنا در نظر بگیریم و فرکانس نتهای بعدی و قبلی را با ضرب یا تقسیم متوالی بر عدد مذکور به دست آوریم. در دستگاه موسیقی بینالمللی که روی سازهایی مانند پیانو پیاده میشود، 12 نت بانامهای مستقل وجود دارد که اگر هر نتی را در نظر بگیریم بعد از طی 12 نت به نت هم نام آن میرسیم و فرکانس نت هم نام بعدی دقیقاً 2 برابر نت فعلی است (یک اکتاو). بنابراین برای برنامهنویسی هر میکروکنترلری کافی است تنها 12 مقدار مستقل را برای کل نتها بهصورت یک Lookup Table در حافظه flash قرار دهیم و بقیه نتها از روی همین 12 مقدار قابل ساختهشدن هستند. مقادیری که در این Table ذخیره میشوند، مقدار لازم برای قرار دادن در تایمری است که سبب تولید فرکانس موردنظر در خروجی شود. اگر بخواهیم یک آهنگ را در میکرو ذخیره کنیم برای تولید هر نت دو مقدار فرکانس و طول مدت نواخته شدن نت باید در برنامه تعیین شود. به این منظور دو عملیات زمانگیری جداگانه باید برنامهریزی شود. یکی تایمری که پورت خروجی را در یکفاصله زمانی مشخص toggle میکند و تایمر دومی که بعد از سپری شدن زمان موردنظر برای نت، به عملیات تایمر اول خاتمه میدهد.
از لینک زیر فایل برنامه زبان c ارگ 21 نت با میکرو AVR ATmega8 انجام شده را به همراه فایل شبیه سازی پروتئوس میتوانید دریافت نمایید .
دیدگاهتان را بنویسید