فهرست مطالب:

جعبه پازل آردوینو: 7 مرحله
جعبه پازل آردوینو: 7 مرحله

تصویری: جعبه پازل آردوینو: 7 مرحله

تصویری: جعبه پازل آردوینو: 7 مرحله
تصویری: حل مکعب روبیک در ۳۰ ثانیه 2024, نوامبر
Anonim
جعبه پازل آردوینو
جعبه پازل آردوینو

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

تدارکات

1 x آردوینو uno

مقاومت 1 x 1k اهم

مقاومت 5 x 220 اهم

1 xPiezo Buzzer

5 دکمه 6x6 میلی متر

1 عدد سیم جامپر

1 عدد تخته پرف/نوار

1 عدد لحیم کاری

1 عدد لولا

گیره 1 عدد

1 عدد صندوق کوچک/چوب

1 عدد تفنگ چسب حرارتی + چوب چسب

1 عدد باتری 9 ولت + نگهدارنده

کمی وربلا

رنگ کردن

مرحله 1:

تصویر
تصویر

برای شروع باید سنجاق های خود را در تخته نان خود فشار دهید. حالا آنالوگ 2 را با سیم به گوشه برد وصل کنید. ما قصد داریم دو مقاومت را در یک خط به آن وصل کنیم. اولین مقاومت 10k اهم است. در انتهای دیگر این مقاومت ما سیم را به زمین آنالوگ متصل می کنیم. مقاومت دوم یک مقاومت 220 اهم است که ما به دکمه اول متصل می کنیم. برای اتصال طرف باز دوم دکمه با دکمه دوم ، از مقاومت دیگری با همان مقدار استفاده کنید. این دکمه ها را تا آخرین دکمه به هم متصل کنید. در آخرین مورد ، یک سیم را گرفته و آن را به یک قسمت بسته مربوط به دکمه متصل کرده و آن را به خط بعدی متصل می کنید. شما اکنون روشی را که با مقاومتها فقط با سیمهای معمولی انجام می دهید ، تکرار می کنید. اولین دکمه را به پورت آنالوگ 3 ، 3V در آردوینو وصل کنید. روی هم رفته شما یک نوع پدر متقاطع دریافت خواهید کرد همانطور که در زیر نشان داده شده است.

گام 2:

سپس زنگ را به تخته نان وصل کنید و یک طرف را به زمین دیجیتال و طرف دیگر را به پورت 12 محکم کنید. هوشمند است که کد زیر را در Arduino خود بارگذاری کنید تا بتوانید آزمایش کنید که آیا همه چیز به درستی کار می کند یا خیر. در صورت وجود ، می توانید لحیم کاری اجزا را با هم شروع کنید. این کار را با بیرون آوردن آنها از تخته نان و اتصال مستقیم سیمها و اتصالات به یکدیگر انجام دهید. اگر فکر می کنید به طول بیشتری بین دکمه ها نیاز دارید ، می توانید مقداری سیم اضافی بین مقاومتها اضافه کنید. تخته نان در این مرحله دیگر ضروری نیست.

مرحله 3:

تصویر
تصویر

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

مرحله 4:

تصویر
تصویر
تصویر
تصویر

حالا می توانید به نقاشی جعبه برسید. من کار خود را با طرح گل بر اساس BOTW انجام دادم اما شما واقعاً می توانید هر طرحی را که می خواهید انتخاب کنید. پس از انجام این کار می توانید دکمه ها را داخل سوراخ ها قرار دهید و یک تکه چسب در پشت دکمه و چوب اطراف آن قرار دهید. همین اصل در مورد زنگ صدق می کند ، اما صدای من کاملاً در سوراخ قرار می گیرد و باعث می شود آن غیر ضروری باشد. سپس مقداری وربلا را برداشته و حرارت داده و آن را برش دهید تا چند دکمه کوچک ایجاد شود. آنها را با دقت روی دکمه ها بچسبانید اما مطمئن شوید که زیاد از چسب استفاده نکنید زیرا ممکن است به طور تصادفی دکمه ها گیر کرده باشند. حالا می توانید آنها را رنگ آمیزی کنید تا بیشتر با جعبه ترکیب شوند.

مرحله 5:

در نهایت گیره و لولا را روی جعبه و درپوش که این دو را به هم متصل می کند ، می چسبانید یا پیچ می کنید.

مرحله 6:

اکنون که جعبه شما کامل شده است تنها کاری که باید انجام دهید این است که آردوینو و باتری را داخل آن قرار داده و درب آن را ببندید.

مرحله 7: کد

// این کد پازل/جعبه موسیقی با موضوع Zelda است.

// این کد شما را به لیست یادداشت های موجود در برگه دیگر متصل می کند

#شامل "pitches.h"

// این متغیر اطمینان می دهد که آردوینو یک فشار بیشتر دکمه را فقط با یک بار فشار می بیند

int یکسان = 0؛

// از اینجا ورودی شما را می خواند

int k = 2 ؛

// این پین خروجی شماست

int بلندگو = 12؛

// در زیر ملودی های پایانی آمده است

اعضای هیات موبایل و کامپیوتر = {NOTE_B4، NOTE_D5، NOTE_A4، NOTE_G4، NOTE_A4، NOTE_B4، NOTE_D5، NOTE_A4، NOTE_G4، NOTE_A4، NOTE_B4، NOTE_D5، NOTE_A5، NOTE_G5، NOTE_D5، NOTE_C5، NOTE_B4، NOTE_A5}؛

int ZeldaTime = {2 ، 4 ، 2 ، 4 ، 4 ، 2 ، 2 ، 2 ، 4 ، 4 ، 2 ، 4 ، 2 ، 2 ، 2 ، 4 ، 4 ، 2} ؛

int Epona = {NOTE_D5 ، NOTE_B4 ، NOTE_A4 ، NOTE_D5 ، NOTE_B4 ، NOTE_A4 ، NOTE_D5 ، NOTE_B4 ، NOTE_A4 ، NOTE_B4 ، NOTE_A4} ؛

int EponaTime = {4 ، 4 ، 1.5 ، 4 ، 4 ، 1.5 ، 4 ، 4 ، 2 ، 2 ، 1} ؛

int Saria = {NOTE_F4 ، NOTE_A4 ، NOTE_B4 ، NOTE_F4 ، NOTE_A4 ، NOTE_B4 ، NOTE_F4 ، NOTE_A4 ، NOTE_B4 ، NOTE_E5 ، NOTE_D5 ، NOTE_B4 ، NOTE_C5 ، NOTE_B4 ، NOTE_4 ، NOTE_4 ، NOTE4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE_4 ، NOTE4 ، NOTE4 ، NOTE4 ،

int SariaTime = {8، 8، 4، 8، 8، 4، 8، 8، 8، 8، 4، 8، 8، 8، 8، 3، 8، 8، 8، 2، 1}؛

// مدت زمان عادی یک یادداشت

int BEATTIME = 300 ؛

// شمارنده ای که قرار است پیگیری کند اگر در راه حل باشیم

int teller = 0؛

void setup () {

Serial.begin (9600)؛

pinMode (2 ، ورودی) ؛

pinMode (1 ، ورودی) ؛

}

حلقه خالی () {

// ورودی پین ها را می خواند

k = analogRead (2) ؛

int p = analogRead (1) ؛

// اگر هیچ دکمه ای فشرده نشده باشد ، نباید لحنی وجود داشته باشد

if (شمارشگر == 0) {

noTone (12) ؛

}

// اگر داده های خوانده شده با پارامترها مطابقت داشته باشد ، بیت توصیف شده کد را اجرا کنید

if (k> 320 && k <350) {

rechts ()؛

}

//""

else if (k 290) {

پیوندها () ؛

}

//""

else if (k> 260 && k <280) {

بافته شده ()؛

}

//""

else if (k> 240 && k <260) {

onder ()؛

}

//""

else if (k> 220 && k <240) {

آ()؛

}

// اگر این کار را نکرد (وقتی دکمه ای فشار داده نمی شود) ، این کد را اجرا کنید

دیگری {

// همان تنظیم مجدد را انجام می دهد تا بتواند دفعه بعد که دکمه ای فشار داده می شود مورد استفاده قرار گیرد

همان = 0 ؛

// اگر شمارنده تا تعداد معینی باشد ، بیت توصیف شده کد را اجرا کنید

اگر (شمارشگر == 166) {

zelda ()؛

}

//""

else if (teller == 386) {

ساریا ()؛

}

//""

در غیر این صورت (teller == 266) {

epona ()؛

}

//""

else if (مترجم == 999) {

// این علامت را برای علامت گذاری خطا پخش کنید

تن (بلندگو ، NOTE_C3 ، BEATTIME) ؛

// شمارنده را به 0 بازنشانی کنید

مترجم = 0 ؛

}

}

// تأخیر بین ورودی و خروجی

تأخیر (100) ؛

// مقادیر ورودی شما را در مانیتور سریال چاپ می کند

Serial.println (k)؛

}

// این اولین ملودی است

void zelda () {

// این یک شمارنده را تنظیم می کند که هنگام پخش ملودی خود را به روز می کند تا بتواند آن را بخواند و در مواقع لازم متوقف شود

برای (int i = 0 ؛ i <sizeof (Zelda) ؛ i ++) {

// می گوید یک یادداشت چقدر باید دوام بیاورد

int ZTime = 1000 / ZeldaTime ؛

// تن ها را تولید می کند

تن (بلندگو ، Zelda ، ZTime) ؛

// تأخیر صحیح را ایجاد می کند

int pause = ZTime * 1.30 ؛

تاخیر (مکث) ؛

// تنظیم مجدد شمارنده

مترجم = 0 ؛

// مقادیر ورودی شما را در مانیتور سریال چاپ می کند

Serial.println (مترجم)؛

}

}

//""

void epona () {

برای (int i = 0؛ i <sizeof (Epona) ؛ i ++) {

int ETime = 1000 / EponaTime ؛

تن (بلندگو ، Epona ، ETime) ؛

int pause = ETime * 1.30 ؛

تاخیر (مکث) ؛

مترجم = 0 ؛

Serial.println (مترجم)؛

}

}

//""

void saria () {

برای (int i = 0؛ i <sizeof (Saria)؛ i ++) {

int STime = 1000 / SariaTime ؛

تن (بلندگو ، Saria ، STime) ؛

int pause = STime * 1.30 ؛

تاخیر (مکث) ؛

مترجم = 0 ؛

Serial.println (مترجم)؛

}

}

void rec

hts () {

// اگر قبلاً فشار داده نشده بود

if (همان == 0) {

// اگر شمارنده در حال حاضر یکی از این مقادیر را دارد ، این را به آن اضافه کنید

if (teller == 0 || teller == 132 || teller == 165 || teller == 232 || teller == 265 || teller == 331 || teller == 374) {

مترجم = مترجم + 1؛

}

// در غیر اینصورت آن را روی 999 تنظیم کنید تا نویز خطا را بشنوید

دیگری {

مترجم = 999 ؛

}

// همان را روی یک تنظیم کنید تا آردوینو یک پرس طولانی مدت را به عنوان پرسهای متعدد نخواند

همان = 1 ؛

}

// نواختن تن

دیگری {

تن (بلندگو ، NOTE_A4 ، BEATTIME) ؛

}

// مقادیر ورودی شما را در مانیتور سریال چاپ می کند

Serial.println (مترجم)؛ }

//""

لینک های خالی () {

if (همان == 0) {

if (teller == 133 || teller == 254 || teller == 244 || teller == 332 || teller == 375 || teller == 221) {

مترجم = مترجم + 11؛

}

else if (teller == 0) {

مترجم = 111؛

}

دیگری {

مترجم = 999 ؛

}

همان = 1 ؛

} دیگری {

تن (بلندگو ، NOTE_B4 ، BEATTIME) ؛

} Serial.println (مترجم)؛

}

//""

void boven () {

if (همان == 0) {if (teller == 111 || teller == 144 || teller == 233) {

مترجم = متصدی + 21 ؛

}

else if (teller == 0) {

مترجم = 221 ؛

}

دیگری {

مترجم = 999 ؛

}

همان = 1 ؛

}

دیگری {

تن (بلندگو ، NOTE_D5 ، BEATTIME) ؛

Serial.println (مترجم)؛

}

}

//""

void onder () {

if (همان == 0) {

if (مترجم == 343) {

مترجم = متصدی + 31 ؛

}

else if (teller == 0) {

مترجم = 331 ؛

} دیگری {

مترجم = 999 ؛

} همان = 1 ؛

} دیگری {

تن (بلندگو ، NOTE_F4 ، BEATTIME) ؛

Serial.println (مترجم) ؛

}

}

//""

void a () {

if (همان == 0) {

if (teller == 0) {

مترجم = 461 ؛

}

دیگری {

مترجم = 999 ؛

}

همان = 1 ؛

}

تن (بلندگو ، NOTE_D4 ، BEATTIME) ؛

Serial.println (مترجم)؛

}

توصیه شده: