فهرست مطالب:

آردوینو دربل: 4 مرحله
آردوینو دربل: 4 مرحله

تصویری: آردوینو دربل: 4 مرحله

تصویری: آردوینو دربل: 4 مرحله
تصویری: برنامه نویسی آردوینو با چت جی پی تی 2024, نوامبر
Anonim
آردوینو دربل
آردوینو دربل

امروز ، نحوه ساختن زنگ خانه با استفاده از آردوینو را به شما نشان خواهم داد. این زنگ در یک آهنگ تصادفی از کتابخانه آهنگ ها را پخش می کند. می توانید زنگ در خانه خود را سفارشی کرده و حتی آهنگ های بیشتری اضافه کنید. آن را در خارج از اتاق خواب ، کلاس درس ، دفتر یا حتی درب ورودی خود نصب کنید!

تدارکات:

  • Arduino Uno (اکثر انواع دیگر انجام می دهند)
  • کامپیوتر با Arduino IDE برای برنامه نویسی
  • کابل USB-A به USB-B برای برنامه نویسی Arduino
  • تخته نان
  • 4 برابر سیم بلوز
  • دکمه فشاری یا کلید دیگر
  • مقاومت 10 کیلو اهم
  • زنگ منفعل (یعنی بلندگوی پیزوالکتریک)
  • برای نصب دائمی:

    • منبع تغذیه 9 ولت DC یا باتری 9 ولت برای تغذیه آردوینو
    • 2 برابر سیم بلند برای دکمه سیم کشی بیرون درب

مرحله 1: راه اندازی سخت افزار

راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار
راه اندازی سخت افزار

ابتدا سخت افزار را تنظیم می کنیم. ما با زنگ منفعل (یعنی بلندگو) شروع می کنیم. ما می خواهیم انتهای مثبت زنگ منفعل (که با علامت "+" مشخص می شود) را به پین دیجیتال 8 در آردوینو متصل کنیم. انتهای دیگر زنگ صدا را به زمین وصل می کنیم.

در مرحله بعد ، دکمه زنگ را نصب می کنیم. ما از یک مقاومت خارجی 10 کیلو اهم بیرون کش برای سوئیچ استفاده می کنیم ، بنابراین هیچ ولتاژ شناور یا حالت ناپایداری در ورودی آردوینو وجود ندارد. با استفاده از مقاومت کشنده ، آردوینو ولتاژ را در صورت فشار ندادن دکمه 0 ولت و در زمان فشردن دکمه 5 ولت می خواند. برای کسب اطلاعات بیشتر در مورد مقاومت های کشش یا کشش ، می توانید این مقاله را بخوانید:

ما یک طرف دکمه را به 5 ولت وصل می کنیم. طرف دیگر دکمه فشاری از طریق مقاومت کششی 10 کیلو اهم به زمین متصل می شود. به خاطر داشته باشید: دکمه های فشار به صورت داخلی به صورت افقی متصل می شوند. آنها فقط در صورت فشار دادن به صورت عمودی متصل می شوند. اطلاعات بیشتر در این مقاله ارائه شده است:

مرحله 2: راه اندازی نرم افزار

همه کد ضمیمه شده است. در زیر توضیحات هر یک از توابع با عکس های فوری کد آمده است.

برپایی:

در تابع setup () ، می خواهیم پین های دیجیتال را برای دکمه و بلندگوی خود پیکربندی کنیم. ما می خواهیم پین 2 را به عنوان ورودی دکمه خود پیکربندی کنیم ، و می خواهیم پین 8 را به عنوان خروجی برای بلندگوی خود پیکربندی کنیم.

ما همچنین می خواهیم مولد اعداد تصادفی خود را برای انتخاب تصادفی آهنگ زمانی که کسی زنگ در خانه ما را می زند ، "بذر" قرار دهیم. کاشت ژنراتور اعداد تصادفی به معنای تغذیه ورودی تصادفی آن است. ما ژنراتور عدد تصادفی خود را با مقدار ولتاژ ورودی آنالوگ 0 قرار می دهیم. از آنجا که هیچ چیزی به این ورودی متصل نیست ، یک ولتاژ "تصادفی" در نوسان روی این پین وجود دارد که مولد اعداد تصادفی ما را با مقادیر مختلف ارائه می دهد. این اطمینان می دهد که ما ترتیب متفاوتی از انتخاب آهنگ ها را برای زنگ خانه خود خواهیم داشت. برای کسب اطلاعات بیشتر در مورد عملکرد تصادفی Arduino () ، به اینجا بروید:

#شامل "pitches.h"

#شامل "songs.h" #تعریف BUTTON_PIN 2 #تعریف SPEAKER_PIN 8/ * تنظیم عملکرد */void setup () {// فعال کردن پین های ورودی/خروجی pinMode (BUTTON_PIN ، INPUT) ؛ pinMode (SPEAKER_PIN ، OUTPUT) ؛ // تابع random () به گونه ای که یک ترتیب متفاوت randomSeed (analogRead (0)) دریافت کنیم؛ }

حلقه:

در تابع حلقه () ما ، ما به طور مداوم بررسی می کنیم که آیا دکمه فشار داده شده است (پین دیجیتال 2 بالا است). اگر پین بالا باشد ، 50 میلی ثانیه منتظر می مانیم و دوباره بررسی می کنیم تا مطمئن شویم هنوز بالا است. این اطمینان می دهد که دکمه فشرده شده است و نویز سرگردان روی پین ورودی دیجیتال ایجاد نمی کند که باعث ایجاد کاذب مثبت می شود.

وقتی تأیید کردیم که دکمه فشار داده شده است ، از مولد اعداد تصادفی خود برای انتخاب یکی از 5 آهنگ با استفاده از دستور switch استفاده می کنیم. داده های این آهنگ ها در "songs.h" و اطلاعات گام در "pitches.h" ذخیره می شود. پس از انتخاب آهنگ ، این اطلاعات را به تابع play_song () منتقل می کنیم.

/ * تابع حلقه اصلی while */

void loop () {// بررسی کنید که آیا دکمه if فشار داده شده است (digitalRead (BUTTON_PIN) == HIGH) {// 50 ms را به تأخیر بیندازید تا مطمئن شوید هنوز فشار داده شده است // از تاخیر در خواندن اشتباهات سرگردان جلوگیری می کند (50)؛ if (digitalRead (BUTTON_PIN) == HIGH) {// تصادفی آهنگی را انتخاب کنید int song_choice = تصادفی (5) ؛ // کدام آهنگ را برای تغییر انتخاب کنید (song_choice) {case 0: play_song (haircutLength، haircut، haircutDurations، haircutTempo)؛ زنگ تفريح؛ مورد 1: آهنگ_بازی (marioLength، mario، marioDurations، marioTempo) ؛ زنگ تفريح؛ مورد 2: آهنگ_بازی (miiLength ، mii ، miiDurations ، miiTempo) ؛ زنگ تفريح؛ مورد 3: play_song (hpLength ، hp ، hpDurations ، hpTempo) ؛ زنگ تفريح؛ مورد 4: play_song (takeonmeLength، takeonme، takeonmeDurations، takeonmeTempo) ؛ زنگ تفريح؛ پیش فرض: play_song (miiLength، mii، miiDurations، miiTempo) ؛ زنگ تفريح؛ }}}}

آهنگ_بازی:

play_song () 4 استدلال می گیرد: یک عدد صحیح از نت ها در آهنگ ، یک آرایه صحیح از آهنگ های ملودی ، یک آرایه صحیح از مدت زمان ، و یک سرعت صحیح برای آن آهنگ خاص. شما باید هریک از این موارد را برای هر آهنگی که می خواهید پخش کنید مشخص کنید. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از توابع آردوینو ، می توانید به این آموزش مراجعه کنید: https://www.arduino.cc/fa/Tutorial/ToneMelody. من برخی از قابلیت ها را در بالای این آموزش برای یادداشت های نقطه دار اضافه کردم. اگر مقداری در آرایه مدت زمان یادداشت منفی باشد ، به این معنی است که آن یک نقطه نقطه است (طول آن 1.5 برابر بیشتر است).

/ * آهنگ را پخش می کند */

void play_song (int num_notes ، int melody ، int noteDurations ، int tempo) {// تمام نت ها را برای (int i = 0 ؛ i 0) {duration = tempo / noteDurations قدم بزنید و پخش کنید. } // اگر عدد منفی است ، به معنی یادداشت نقطه دار است // در صورتی که (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5 ؛ مدت زمان را برای یادداشت های نقطه دار نصف می کند. } تن (SPEAKER_PIN ، ملودی ، مدت زمان) ؛ // برای تشخیص یادداشت ها ، حداقل زمان را بین آنها تعیین کنید. // به نظر می رسد که طول یادداشت + 30٪ به خوبی کار می کند: int pauseBetweenNotes = مدت زمان 1.30 *. تأخیر (pauseBetweenNotes) ؛ // پخش صدا را متوقف کنید: noTone (SPEAKER_PIN)؛ }}

نمونه آهنگ ها.h:

در زیر نمونه ای از یکی از آهنگ های "songs.h" آمده است. یادداشت ها ماکروهایی هستند که در "pitches.h" تعریف شده اند. اعداد مربوط به فرکانس نت ها در هرتز (هرتز) است. مدت زمان نت ها عبارتند از: 1 = نت کامل ، 2 = نصف نت ، 4 = نت چهارم ، 8 = نت هشتم ، -4 = نت چهارم نقطه ای ، و غیره. طول تعداد کل نت های موجود در آهنگ است. سرعت تقسیم کننده سرعت آهنگ است (عدد بالاتر به معنای سرعت کندتر است). شما باید با این شماره بازی کنید تا زمانی که به تمپوی دلخواه خود برسید.

/* هری پاتر */

int hp = {NOTE_D4 ، NOTE_G4 ، NOTE_AS4 ، NOTE_A4 ، NOTE_G4 ، NOTE_D5 ، NOTE_C5 ، NOTE_A4 ، NOTE_G4 ، NOTE_AS4 ، NOTE_A4 ، NOTE_F4 ، NOTE_GS4 ، NOTE_D4} ؛ int hpDurations = {4 ، -4 ، 8 ، 4 ، 2 ، 4 ، -2 ، -2 ، -2 ، -4 ، 8 ، 4 ، 2 ، 4 ، 1} ؛ int hpLength = 14؛ int hpTempo = 1050 ؛

مرحله 3: اصلاحات

آهنگ های بیشتری اضافه کنید! فرمت نشان داده شده در "songs.h" را دنبال کنید و از آموزش برای کمک استفاده کنید: https://www.arduino.cc/fa/Tutorial/ToneMelody. برای هر آهنگ جدیدی که اضافه می کنید ، به یاد داشته باشید که یک مورد جدید به دستور switch اضافه کنید و حداکثر تعداد ایجاد شده توسط تابع random () را افزایش دهید. کد نویسی مبارک!

مرحله 4: پروژه های بیشتر

برای پروژه های بیشتر ، از صفحات من دیدن کنید:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

توصیه شده: