جدول المحتويات:

صندوق لغز اردوينو: 7 خطوات
صندوق لغز اردوينو: 7 خطوات

فيديو: صندوق لغز اردوينو: 7 خطوات

فيديو: صندوق لغز اردوينو: 7 خطوات
فيديو: Enigma Puzzle Box 2024, يوليو
Anonim
صندوق لغز اردوينو
صندوق لغز اردوينو

بالنسبة لهذا المشروع ، سنقوم بصنع صندوق أحجية يعمل مع الموسيقى. الجوهر الأساسي لذلك هو أنه عندما تضغط على زر ، فإنه يصدر نغمة ويحسب Arduino الأزرار التي يتم الضغط عليها حتى يعرف ما هو الصحيح وما هي الإجابة الخاطئة.

اللوازم

1 × اردوينو أونو

1 × 1 كيلو أوم المقاوم

مقاومات 5 × 220 أوم

1 x بيزو الجرس

5 × زر انضغاطي 6 × 6 مم

1 × مجموعة أسلاك العبور

1 × لوحة الأداء / الشريط

1 × جندي

1 × مفصلة

1 × المشبك

1 × خزانة صغيرة ذات أدراج / خشب

1x مسدس الغراء الساخن + غراء العصي

1 × بطارية 9 فولت + حامل

قليلا من الوربلا

رسم

الخطوة 1:

صورة
صورة

لتبدأ ، عليك أن تضغط على دبابيسك في لوح التجارب. الآن قم بتوصيل التناظرية 2 بسلك بزاوية اللوحة. سنقوم بتوصيل مقاومتين به في خط. الأول هو المقاوم 10 كيلو أوم. إلى الطرف الآخر من هذا المقاوم نقوم بتوصيل السلك بالأرض التناظرية. المقاوم الثاني هو مقاوم 220 أوم نقوم بتوصيله بالزر الأول. استخدم المقاوم الآخر بنفس القيمة لتوصيل الجانب المفتوح الثاني من الزر بالزر الثاني. استمر في توصيل الأزرار مثل هذا حتى الزر الأخير. في المرة الأخيرة ، تمسك بسلك وتوصيله بالجانب المغلق المقابل للزر وتوصيله بالجانب التالي في السطر. أنت الآن تكرر العملية التي قمت بها باستخدام المقاومات التي لا تعرفها إلا بأسلاك عادية. قم بتوصيل الزر الأول بالمنفذ التناظري 3 ، 3 فولت في Arduino. الكل في الكل سوف تحصل على نوع من الأب المتصالب كما هو موضح أدناه.

الخطوة 2:

بعد ذلك ، قم بتوصيل الجرس باللوحة وتثبيت جانب واحد على الأرض الرقمية والآخر بمنفذ 12. من الذكاء تحميل الكود التالي بالفعل إلى Arduino حتى تتمكن من اختبار ما إذا كان كل شيء يعمل بشكل صحيح. إذا كان الأمر كذلك ، يمكنك البدء في لحام المكونات معًا. افعل ذلك عن طريق إخراجها من اللوح ولحام الأسلاك والوصلات معًا مباشرة. إذا كنت تعتقد أنك بحاجة إلى مزيد من الطول بين الأزرار ، فيمكنك إضافة سلك إضافي بين المقاومات. لم يعد اللوح ضروريًا في هذه المرحلة.

الخطوه 3:

صورة
صورة

بعد أن يتم لحام كل شيء ، حان الوقت لصنع الصندوق نفسه. لقد استخدمت مجموعة رخيصة من الأدراج كقاعدة لي. لقد قطعت نصفين بالطول وأزلت الظهر والجانب الذي قطعته. يجب أن يكون لديك قطعتان على شكل حرف c الآن. قطع جانب واحد منهم لاستخدامه كغطاء. الآن قم بتدوير إحدى القطع المتبقية بحيث تتلاءم معًا مثل صندوق بدون غطاء وألصقها معًا. بمجرد أن يتم ضبط الغراء بشكل صحيح ، قم بحفر ثقب صغير في كل جانب من جوانب الصندوق للأزرار وثقب أكبر للجرس في الغطاء.

الخطوة الرابعة:

صورة
صورة
صورة
صورة

الآن يمكنك الحصول على رسم الصندوق. لقد قمت بالتعدين بتصميم زهرة على أساس BOTW ولكن يمكنك حقًا اختيار أي تصميم تريده. بعد الانتهاء من ذلك ، يمكنك وضع الأزرار داخل الثقوب ووضع قطعة من الغراء على الجزء الخلفي من الزر والخشب المحيط. ينطبق نفس المبدأ على الجرس ولكن يناسبني تمامًا في الفتحة مما يجعله غير ضروري. بعد ذلك ، يمكنك الحصول على بعض الأوراق والحرارة وقطعها لعمل بعض الأزرار الصغيرة. قم بلصقها بعناية على الأزرار ولكن تأكد من عدم استخدامها مع الكثير من الغراء لأنك قد تتعطل الأزرار عن طريق الخطأ. يمكنك الآن طلاءها لجعلها تنسجم مع الصندوق أكثر.

الخطوة الخامسة:

أخيرًا ، تقوم بالغراء أو البرغي ، المشبك والمفصلات الموجودة على الصندوق والغطاء الذي يربط بين الاثنين.

الخطوة السادسة:

الآن وقد اكتمل صندوقك ، كل ما عليك فعله هو وضع Arduino والبطارية بداخله وإغلاق الغطاء.

الخطوة 7: الكود

// هذا هو رمز أحجية / صندوق موسيقى تحت عنوان Zelda.

// هذا يربط التعليمات البرمجية الخاصة بك بقائمة الملاحظات في علامة التبويب الأخرى

# تضمين "pitches.h"

// سيضمن هذا المتغير أن Arduino يرى ضغطة أطول على الزر كضغطة واحدة فقط

int نفسه = 0 ؛

// من هنا سيقرأ المدخلات الخاصة بك

int k = 2 ؛

// هذا هو دبوس الإخراج الخاص بك

مكبر الصوت int = 12 ؛

// أدناه هي الألحان النهائية

int Zelda = {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_G4، NOTE_E_G4، NOTE_D4، NOTE_E4}

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 الصراف = 0 ؛

الإعداد باطل() {

Serial.begin (9600) ؛

pinMode (2 ، الإدخال) ؛

pinMode (1 ، الإدخال) ؛

}

حلقة فارغة() {

// يقرأ المدخلات من المسامير

ك = analogRead (2) ؛

int p = analogRead (1) ؛

// إذا لم يتم الضغط على أي زر فلا يجب أن تكون هناك نغمة

إذا (الصراف == 0) {

noTone (12) ،

}

// إذا كانت بيانات القراءة تتوافق مع المعلمات ، فقم بتشغيل بت الرمز الموصوف

إذا (ك> 320 && ك <350) {

rechts () ؛

}

//""

وإلا إذا (ك 290) {

روابط () ؛

}

//""

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

بوفن () ؛

}

//""

وإلا إذا (ك> 240 && ك <260) {

onder () ؛

}

//""

وإلا إذا (ك> 220 && ك <240) {

أ()؛

}

// إذا لم يكن كذلك (عند عدم الضغط على أي زر) ، فقم بتشغيل هذا الكود

آخر {

// إعادة تعيين نفسه بحيث يمكن استخدامه في المرة التالية التي يتم فيها الضغط على الزر

نفسه = 0 ؛

// إذا كان العداد يصل إلى رقم معين ، فقم بتشغيل الجزء الموصوف من الكود

إذا (الصراف == 166) {

زيلدا () ؛

}

//""

وإلا إذا (الصراف == 386) {

ساريا () ؛

}

//""

وإلا إذا (الصراف == 266) {

إبونا () ؛

}

//""

وإلا إذا (الصراف == 999) {

// تشغيل هذه النغمة لتمييز الخطأ

نغمة (مكبر صوت ، NOTE_C3 ، BEATTIME) ؛

// إعادة تعيين العداد إلى 0

الصراف = 0 ؛

}

}

// التأخير بين المدخلات والمخرجات

تأخير (100) ؛

// يطبع قيم الإدخال الخاص بك في الشاشة التسلسلية

Serial.println (ك) ؛

}

// هذا هو اللحن الأول

زيلدا باطل () {

// هذا يعين عدادًا يقوم بتحديث نفسه أثناء تشغيل اللحن حتى يتمكن من قراءته والتوقف عند الحاجة

لـ (int i = 0 ؛ i <sizeof (Zelda) ؛ i ++) {

// يقول إلى متى يجب أن تدوم الملاحظة

int ZTime = 1000 / ZeldaTime ؛

// يولد النغمات

نغمة (مكبر صوت ، Zelda ، ZTime) ؛

// يخلق التأخير الصحيح

وقفة int = ZTime * 1.30 ؛

تأخير (وقفة) ؛

// يعيد تعيين العداد

الصراف = 0 ؛

// يطبع قيم الإدخال الخاص بك في الشاشة التسلسلية

Serial.println (الصراف) ؛

}

}

//""

epona باطل () {

لـ (int i = 0 ؛ i <sizeof (Epona) ؛ i ++) {

int ETime = 1000 / EponaTime ؛

نغمة (المتحدث ، Epona ، ETime) ؛

وقفة int = ETime * 1.30 ؛

تأخير (وقفة) ؛

الصراف = 0 ؛

Serial.println (الصراف) ؛

}

}

//""

ساريا باطلة {

لـ (int i = 0 ؛ i <sizeof (Saria) ؛ i ++) {

int STime = 1000 / SariaTime ؛

نغمة (المتحدث ، Saria ، STime) ؛

وقفة int = STime * 1.30 ؛

تأخير (وقفة) ؛

الصراف = 0 ؛

Serial.println (الصراف) ؛

}

}

تسجيل باطل

هتس () {

// إذا لم يكن هذا مضغوطًا بالفعل

إذا (نفس == 0) {

// إذا كان العداد يحتوي حاليًا على إحدى هذه القيم ، فقم بإضافة هذا إليها

إذا (الصراف == 0 || الصراف == 132 || الصراف == 165 || الصراف == 232 || الصراف == 265 || الصراف == 331 || الصراف == 374) {

الصراف = الصراف + 1 ؛

}

// وإلا اضبطه على 999 حتى تسمع ضوضاء خطأ te

آخر {

الصراف = 999 ؛

}

// اضبط نفس الشيء على واحد حتى لا يقرأ Arduino الضغط المطول كمطابع متعددة

نفسه = 1 ؛

}

// عزف النغمة

آخر {

نغمة (مكبر صوت ، NOTE_A4 ، BEATTIME) ؛

}

// يطبع قيم الإدخال الخاص بك في الشاشة التسلسلية

Serial.println (الصراف) ؛ }

//""

روابط باطلة () {

إذا (نفس == 0) {

إذا (الصراف == 133 || الصراف == 254 || الصراف == 244 || الصراف == 332 || الصراف == 375 || الصراف == 221) {

الصراف = الصراف + 11 ؛

}

وإلا إذا (الصراف == 0) {

الصراف = 111 ؛

}

آخر {

الصراف = 999 ؛

}

نفسه = 1 ؛

} آخر{

نغمة (مكبر صوت ، NOTE_B4 ، BEATTIME) ؛

} Serial.println (الصراف) ؛

}

//""

باطلة boven () {

إذا (نفس == 0) {إذا (الصراف == 111 || الصراف == 144 || الصراف == 233) {

الصراف = الصراف + 21 ؛

}

وإلا إذا (الصراف == 0) {

الصراف = 221 ؛

}

آخر {

الصراف = 999 ؛

}

نفسه = 1 ؛

}

آخر {

نغمة (مكبر صوت ، NOTE_D5 ، BEATTIME) ؛

Serial.println (الصراف) ؛

}

}

//""

onder باطل () {

إذا (نفس == 0) {

إذا (الصراف == 343) {

الصراف = الصراف + 31 ؛

}

وإلا إذا (الصراف == 0) {

الصراف = 331 ؛

} آخر {

الصراف = 999 ؛

} نفس = 1 ؛

} آخر {

نغمة (مكبر صوت ، NOTE_F4 ، BEATTIME) ؛

Serial.println (الصراف) ؛

}

}

//""

باطل أ () {

إذا (نفس == 0) {

إذا (الصراف == 0) {

الصراف = 461 ؛

}

آخر {

الصراف = 999 ؛

}

نفسه = 1 ؛

}

نغمة (مكبر صوت ، NOTE_D4 ، BEATTIME) ؛

Serial.println (الصراف) ؛

}

موصى به: