فهرست مطالب:

ساخت آهنگ با آردوینو و موتور DC: 6 مرحله
ساخت آهنگ با آردوینو و موتور DC: 6 مرحله

تصویری: ساخت آهنگ با آردوینو و موتور DC: 6 مرحله

تصویری: ساخت آهنگ با آردوینو و موتور DC: 6 مرحله
تصویری: اگر یکی از این ۷ نشانه را در وجود تان مشاهده کردید پس شما یک نابغه هستید. 2024, جولای
Anonim
ساخت آهنگ با آردوینو و موتور DC
ساخت آهنگ با آردوینو و موتور DC

روز دیگر ، هنگام مرور برخی مقاله ها در مورد آردوینو ، یک پروژه جالب را مشاهده کردم که از موتورهای پله ای کنترل شده توسط آردوینو برای ایجاد ملودی های کوتاه استفاده می کرد. آردوینو از یک پین PWM (Pulse Width Modulation) برای حرکت موتور پله ای در فرکانس های خاص ، مطابق با نت های موسیقی استفاده کرد. با تعیین اینکه چه فرکانس هایی در چه زمانی پخش می شوند ، می توانید یک ملودی واضح از موتور پله ای شنیده شود.

با این حال ، وقتی خودم آن را امتحان کردم ، متوجه شدم که موتور پله ای که دارم نمی تواند به اندازه کافی سریع بچرخد تا تن ایجاد کند. در عوض ، من از یک موتور DC استفاده کردم ، که نسبتاً ساده است که برنامه نویسی کرده و به آردوینو متصل شود. از IC معمولی L293D می توان برای سهولت در حرکت موتور از پین Arduino PWM استفاده کرد و عملکرد اصلی () tone () در Arduino می تواند فرکانس لازم را تولید کند. با کمال تعجب ، من هیچ نمونه یا پروژه ای با استفاده از موتور DC به صورت آنلاین پیدا نکردم ، بنابراین این دستورالعمل ها پاسخ من برای رفع آن است. بیایید شروع کنیم!

P. S. من فرض می کنم که شما قبلاً تجربه کار با آردوینو را دارید و با زبان برنامه نویسی و سخت افزار آن آشنا هستید. شما باید بدانید که آرایه ها چیست ، PWM چیست و چگونه از آن استفاده کنید و ولتاژ و جریان چگونه کار می کند ، فقط به ذکر چند مورد. اگر هنوز آنجا نیستید یا اردوینو را تازه شروع کرده اید ، نگران نباشید: این صفحه شروع را از وب سایت رسمی آردوینو امتحان کنید و هر زمان که آماده شدید برگردید.:)

تدارکات

  • آردوینو (من از UNO استفاده کردم اما در صورت تمایل می توانید از آردوینو دیگری استفاده کنید)
  • موتور استاندارد 5 ولت DC ، ترجیحاً دارای فن که به آن متصل شده باشد (تصویر "مونتاژ مدار" را ببینید
  • L293D IC
  • به اندازه دکمه های فشاری به عنوان یادداشت در آهنگی که می خواهید پخش کنید
  • تخته نان
  • سیم های جامپر

مرحله 1: مرور کلی

در اینجا نحوه کار این پروژه آمده است: آردوینو یک موج مربعی با فرکانس مشخص ایجاد می کند ، که از L293D خروجی می گیرد. L293D به منبع تغذیه خارجی متصل است که از آن برای تغذیه موتور با فرکانسی که توسط آردوینو داده می شود استفاده می کند. با جلوگیری از چرخش محور موتور DC ، می توان صدای خاموش و روشن شدن موتور را در فرکانس شنید که باعث ایجاد لحن یا نت می شود. ما می توانیم Arduino را طوری برنامه ریزی کنیم که هنگام فشار دادن دکمه ها ، نت ها را پخش کند یا آنها را به صورت خودکار پخش کند.

مرحله 2: مونتاژ مدار

مونتاژ مدار
مونتاژ مدار
مونتاژ مدار
مونتاژ مدار

برای مونتاژ مدار ، کافی است نمودار Fritzing بالا را دنبال کنید.

نکته: وقتی موتور در حال چرخش نیست ، صدای موتور بهتر شنیده می شود. من فن را روی شفت موتورم گذاشتم و از نوار چسب برای ثابت نگه داشتن فن در حین کار موتور استفاده کردم (تصویر را ببینید). این امر از چرخش محور جلوگیری کرده و لحنی شفاف و قابل شنیدن تولید می کند. ممکن است مجبور شوید تعدادی تغییر دهید تا صدای تمیزی از موتور خود دریافت کنید.

مرحله 3: نحوه عملکرد مدار

نحوه عملکرد مدار
نحوه عملکرد مدار

L293D یک IC است که برای رانندگی دستگاههای با ولتاژ نسبتاً بالا و جریان زیاد مانند رله و موتور استفاده می شود. آردوینو قادر نیست اکثر موتورها را مستقیماً از خروجی خود بیرون بکشد (و EMF پشتی از موتور می تواند به مدارهای دیجیتالی حساس آردوینو آسیب برساند) ، بنابراین می توان از یک IC مانند L293D با منبع تغذیه خارجی برای حرکت راحت موتور DC استفاده کرد. ورود یک سیگنال به L293D همان سیگنال را به موتور DC منتقل می کند بدون این که آسیبی به آردوینو وارد شود.

در بالا یک طرحواره pinout/عملکردی از L293D از برگه داده آن آمده است. از آنجا که ما فقط 1 موتور رانندگی می کنیم (L293D می تواند 2 موتور را هدایت کند) ، ما فقط به یک طرف IC نیاز داریم. پین 8 قدرت است ، پین 4 و 5 GND ، پین 1 خروجی PWM از آردوینو است و پین 2 و 7 جهت موتور را کنترل می کند. وقتی پین 2 HIGH و پین 7 LOW باشد ، موتور یک طرفه می چرخد و هنگامی که پین 2 LOW و پین 7 HIGH است ، موتور از طرف دیگر می چرخد. از آنجا که برای ما مهم نیست که موتور چگونه می چرخد ، مهم نیست که پایه های 2 و 7 پایین یا بالا باشند ، به شرطی که متفاوت از یکدیگر باشند. پایه های 3 و 6 به موتور متصل می شوند. در صورت تمایل می توانید همه چیز را به طرف دیگر وصل کنید (پین های 9-16) ، اما توجه داشته باشید که پین های برق و PWM مکان ها را تغییر می دهند.

توجه: اگر از آردوینو استفاده می کنید که برای هر دکمه پین کافی ندارد ، می توانید از یک شبکه مقاومت برای اتصال همه سوئیچ ها به یک پین آنالوگ استفاده کنید ، مانند این دستورالعمل ها. نحوه عملکرد این برنامه خارج از محدوده این پروژه است ، اما اگر تا به حال از R-2R DAC استفاده کرده اید ، باید آن را آشنا بدانید. توجه داشته باشید که استفاده از پین آنالوگ نیاز به بازنویسی قسمت های زیادی از کد دارد ، زیرا کتابخانه Button با پین های آنالوگ قابل استفاده نیست.

مرحله 4: نحوه عملکرد کد

برای سهولت کار با همه دکمه ها ، از کتابخانه ای به نام "Button" توسط madleech استفاده کردم. من کتابخانه را در وهله اول قرار دادم. سپس ، در سطرهای 8-22 ، فرکانس نت های مورد نیاز برای پخش Twinkle ، Twinkle ، Little Star (آهنگ نمونه) ، پینی که برای رانندگی L293D استفاده می کنم و دکمه ها را تعریف کردم.

در عملکرد راه اندازی ، سریال ، دکمه ها را اولیه کردم و پین درایور L293D را در حالت خروجی قرار دادم.

در نهایت ، در حلقه اصلی بررسی کردم که آیا دکمه ای فشار داده شده است یا خیر. در صورت وجود ، Arduino نت مربوطه را پخش می کند و نام یادداشت را در Serial Monitor چاپ می کند (برای دانستن اینکه کدام یادداشت ها روی تخته نورد شما مفید است) مفید است. در صورت انتشار نت ، آردوینو با noTone () هر صدایی را متوقف می کند.

متأسفانه ، به دلیل ساختار کتابخانه ، من نتوانستم راهی برای بررسی اینکه آیا دکمه ای با استفاده از 2 شرطی در یادداشت به شیوه ای کم حجم تر فشرده یا آزاد شده است ، پیدا کنم. یکی دیگر از اشکالات این کد این است که اگر دو دکمه را همزمان فشار دهید و یکی از آنها را رها کنید ، هر دو یادداشت متوقف می شود ، زیرا noTone () هرگونه یادداشت را بدون توجه به اینکه کدام نت آن را فعال کرده است ، متوقف می کند.

مرحله 5: برنامه نویسی یک آهنگ

به جای استفاده از دکمه ها برای پخش نت ها ، همچنین می توانید Arduino را طوری برنامه ریزی کنید که به طور خودکار برای شما ملودی پخش کند. در اینجا یک نسخه اصلاح شده از اولین طرح است که Twinkle ، Twinkle ، Little Star را روی موتور بازی می کند. قسمت اول طرح یکسان است - فرکانس های یادداشت و tonePin را تعیین می کند. به قسمت جدید در bpm = "100" می رسیم. ضربات را در دقیقه (bpm) تنظیم می کنم ، و سپس از ریاضی استفاده می کنم تا تعداد میلی ثانیه در هر ضربان را که bpm برابر است بدست آورم. برای انجام این کار ، من از تکنیکی به نام تجزیه و تحلیل ابعادی استفاده کردم (نگران نباشید - آنقدرها هم که به نظر می رسد سخت نیست). اگر تا به حال دوره شیمی دبیرستان را گذرانده اید ، قطعاً برای تبدیل بین واحدها از تحلیل ابعادی استفاده کرده اید. شناورها () برای اطمینان از اینکه هیچ چیزی در معادله تا انتها گرد نمی شود برای دقت وجود دارد.

بعد از اینکه تعداد ms/beat را بدست آوردیم ، آن را به طور مناسب تقسیم یا ضرب کردم تا مقادیر میلی ثانیه طول مدت نت های مختلف موجود در موسیقی را بیابم. سپس یک آرایه از هر یادداشت به ترتیب زمانی و یک مورد دیگر با مدت زمان هر نت ایجاد می کنم. بسیار مهم است که فهرست هر نت با شاخص مدت آن مطابقت داشته باشد ، در غیر این صورت ، ملودی شما به صدا در می آید. من به عنوان مثال یادداشت های Twinkle ، Twinkle ، Little Star را در اینجا قرار دادم ، اما می توانید هر آهنگ یا دنباله ای از یادداشت ها را که دوست دارید امتحان کنید.

جادوی واقعی در تابع حلقه اتفاق می افتد. برای هر یک از نت ها ، تن را برای مدتی که در آرایه beat_values مشخص کرده ام اجرا می کنم. به جای استفاده از تأخیر در اینجا ، که باعث می شود تا صدا پخش نشود ، زمان شروع برنامه با عملکرد millis () را ثبت کردم و آن را از زمان فعلی کم کردم. وقتی زمان از زمان تعیین شده برای ماندگاری یادداشت در آرایه beat_values بیشتر شد ، یادداشت را متوقف می کنم. تأخیر پس از حلقه for برای ایجاد فاصله بین یادداشت ها وجود دارد و اطمینان حاصل می کند که یادداشت های بعدی با فرکانس یکسان با هم ترکیب نمی شوند.

مرحله 6: بازخورد

همین برای این پروژه اگر نکته ای وجود دارد که نمی فهمید یا پیشنهادی دارید ، لطفاً با من تماس بگیرید. از آنجا که این اولین دستورالعمل آموزشی من است ، از نظرات و پیشنهادات در مورد نحوه بهبود این محتوا بسیار استقبال می کنم. بعدا می بینمت!

توصیه شده: