ارگ ۲۱ نت
ارگ یک ساز الکترونیکی است که با فشردن کلید هایی امکان نواختن نتهای مختلف را دارد .برای تولید نت موسیقی با هر میکروکنترلری باید بر نکته اساسی زیر توجه کرد :نسبت فرکانس هر دو نت متوالی در دستگاه موسیقی بینالمللی(فاصله نیمپرده) برابر است با عدد ۱٫۰۵۹۴۶۳ بنابراین اگر یک نت را بهعنوان نقطه مبنا در نظر بگیریم، فرکانس نت بعدی ۱٫۰۵۹۴۶۳ برابر نت فعلی و فرکانس نت قبلی هم همین فرکانس تقسیمبر ۱٫۰۵۹۴۶۳ خواهد بود.با توجه به تدوین قراردادی مبنی برقرار دادن یکی از نتهای Do برابر با ۴۴۰ هرتز، میتوانیم همین عدد ۴۴۰ هرتز را بهعنوان مبنا در نظر بگیریم و فرکانس نتهای بعدی و قبلی را با ضرب یا تقسیم متوالی بر عدد مذکور به دست آوریم. در دستگاه موسیقی بینالمللی که روی سازهایی مانند پیانو پیاده میشود، ۱۲ نت بانامهای مستقل وجود دارد که اگر هر نتی را در نظر بگیریم بعد از طی ۱۲ نت به نت هم نام آن میرسیم و فرکانس نت هم نام بعدی دقیقاً ۲ برابر نت فعلی است (یک اکتاو). بنابراین برای برنامهنویسی هر میکروکنترلری کافی است تنها ۱۲ مقدار مستقل را برای کل نتها بهصورت یک Lookup Table در حافظه flash قرار دهیم و بقیه نتها از روی همین ۱۲ مقدار قابل ساختهشدن هستند. مقادیری که در این Table ذخیره میشوند، مقدار لازم برای قرار دادن در تایمری است که سبب تولید فرکانس موردنظر در خروجی شود. اگر بخواهیم یک آهنگ را در میکرو ذخیره کنیم برای تولید هر نت دو مقدار فرکانس و طول مدت نواخته شدن نت باید در برنامه تعیین شود. به این منظور دو عملیات زمانگیری جداگانه باید برنامهریزی شود. یکی تایمری که پورت خروجی را در یکفاصله زمانی مشخص toggle میکند و تایمر دومی که بعد از سپری شدن زمان موردنظر برای نت، به عملیات تایمر اول خاتمه میدهد.
از لینک زیر فایل برنامه زبان c ارگ ۲۱ نت با میکرو AVR ATmega8 انجام شده را به همراه فایل شبیه سازی پروتئوس میتوانید دریافت نمایید .
دیدگاهتان را بنویسید