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

ربطة عنق مضيئة بالسماء المرصعة بالنجوم: 9 خطوات (بالصور)
ربطة عنق مضيئة بالسماء المرصعة بالنجوم: 9 خطوات (بالصور)

فيديو: ربطة عنق مضيئة بالسماء المرصعة بالنجوم: 9 خطوات (بالصور)

فيديو: ربطة عنق مضيئة بالسماء المرصعة بالنجوم: 9 خطوات (بالصور)
فيديو: Part 3 - The House of Mirth Audiobook by Edith Wharton (Book 1 - Chs 11-15) 2024, شهر نوفمبر
Anonim
Image
Image
سماء نجمية بقيادة ربطة عنق
سماء نجمية بقيادة ربطة عنق
سماء نجمية بقيادة ربطة عنق
سماء نجمية بقيادة ربطة عنق

منذ فترة ، عثرت على لعبة أطفال بها ألياف ضوئية في متجر بالدولار ، وبدأت أفكر فيما يمكنني فعله بها.

كانت إحدى الأفكار المجنونة التي خطرت لي ، هي صنع ربطة عنق مع تأثير السماء المرصعة بالنجوم.

ما زلت أمتلك بعض ألواح arduino pro mini وألواح adafruit والبطاريات التي من المحتمل أن تناسب هذا المشروع.

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

يوضح لك هذا التوجيه كيف صنعته.

يعمل على شاحن arduino pro mini ، شاحن adafruit powerboost 500 ، emmerich icr 18650nh-sp و 5 مصابيح LED بيضاء. يجعل الكود سطوع تغيير LED عشوائيًا. (أول 40 ثانية من الفيديو سرعة 3x)

الخطوة 1: المخططات والأجهزة

المخططات والأجهزة
المخططات والأجهزة
المخططات والأجهزة
المخططات والأجهزة

أنا أستخدم الأجهزة التالية:

- ثنائي الفينيل متعدد الكلور مع مصابيح LED بيضاء ثلجية ومقاومات 220 أوم.

- Arduino pro mini (استخدمت نسخة مقلدة)

- شاحن Adafruit Powerboost 500

- Emmerich Li-ion accu ICR-18650NH-SP

- ألياف بصرية (بأحجام مختلفة)

الخطوة 2: جعل PCB Hosting the LED's

جعل PCB استضافة المصابيح
جعل PCB استضافة المصابيح
جعل PCB استضافة المصابيح
جعل PCB استضافة المصابيح
جعل PCB استضافة المصابيح
جعل PCB استضافة المصابيح

لقد قطعت شريطًا من PCB لعقد مصابيح LED واستخدمت دبابيس LED لتلحيمها في PCB الرئيسي.

قم بتوصيل جميع الكاثودات (-) بـ GND ، واستخدمت نصف المسامير لتوصيلها بلحام ثنائي الفينيل متعدد الكلور الرئيسي.

قم بتوصيل جميع الأنودات (+) بالمقاومات ، وبكابلات اردوينو.

يجب توصيل كل من مصابيح LED بأحد منافذ PWM التالية: 3 ، 5 ، 6 ، 9 ، 10 ، 11

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

لقد بدأت بـ 7 مصابيح LED ، ولكن لم يكن هناك سوى 6 منافذ PWM وتوفي أحد مصابيح LED التي أعيد لحامها. لقد احتفظت للتو بمصابيح LED الخمسة العاملة ولا أستخدم السادس.

الخطوة 3: عمل الصندوق

صنع الصندوق
صنع الصندوق
صنع الصندوق
صنع الصندوق
صنع الصندوق
صنع الصندوق
صنع الصندوق
صنع الصندوق

لقد استخدمت Bosch GRO (مثل Dremel) ومثقابًا لقطع شكل البطارية والزر ومنفذ micro-USB والرؤوس من Arduino والألياف البصرية. (استخدم قناع الغبار!)

تم لصق البطارية على العلبة باستخدام شريطين.

تستخدم البراغي لتركيب لوحة Adafruit و PCB.

تسبب الاحتكاك من الفتح والإغلاق في إتلاف بعض الأسلاك. اضطررت إلى إعادة تشكيلها واستخدام الغراء لمنع حدوثها مرة أخرى.

الخطوة 4: تجهيز ربطة العنق

تحضير ربطة العنق
تحضير ربطة العنق
تحضير ربطة العنق
تحضير ربطة العنق
تحضير ربطة العنق
تحضير ربطة العنق

تمت إزالة الغرز من الجزء السفلي للربطة لتلائم الصفيحة المطاطية.

لإخفاء الجهاز ولا يزال بإمكانك الوصول إليه إذا لزم الأمر ، قررت استخدام سحاب.

أنا لست جيدًا مع ماكينة الخياطة ، لذلك وضعت أمي الحلوة سحابًا على ظهر ربطة العنق.

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

تم الانتهاء من الصندوق وربطة العنق الآن. حان الوقت للصق الألياف الضوئية!

الخطوة 5: لصق الألياف الضوئية

لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية
لصق الألياف الضوئية

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

تأكد من استخدام غراء شفاف! الذي استخدمته جفت ببطء شديد والغراء سريع التجفيف الذي جربته على أول مؤشر LED تحول إلى اللون الأبيض ، مما يجعل بعض الألياف من أول مؤشر LED أقل سطوعًا.

لقد قمت بلصق صفائح مطاطية سوداء صغيرة لمنع تسرب الضوء من الأعلى وفصل مصابيح LED.

منعت إحدى الأوراق العلبة من الإغلاق لذا أضفت شريطًا مطاطيًا لإبقاء الغطاء مغلقًا.

الخطوة 6: وضع الألياف الضوئية من خلال التعادل

وضع الألياف الضوئية من خلال التعادل
وضع الألياف الضوئية من خلال التعادل
وضع الألياف الضوئية من خلال التعادل
وضع الألياف الضوئية من خلال التعادل
وضع الألياف الضوئية من خلال التعادل
وضع الألياف الضوئية من خلال التعادل

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

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

نظرًا لأن أسلاك الألياف الضوئية من اللعبة كانت قصيرة جدًا ، كان من الصعب تركيبها في جميع أنحاء ربطة العنق. كنت مقيدًا في وضع الصندوق وواجهت صعوبة في جعل كل شيء مسطحًا كما أريد.

الخطوة 7: لصق الألياف الضوئية بالرباط

لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط
لصق الألياف الضوئية بالرباط

لقد قمت بلصق جميع أسلاك الألياف الضوئية على الصفيحة المطاطية لمنع سحب الأسلاك من الصفائح المطاطية ولجعل ربطة العنق مسطحة.

للتأكد من أنني لم ألصق المشبك بالربطة عند الضغط عليه ، وضعت بعض الورق بينهما. لا يبدو هذا رائعًا ولكنه يعمل بشكل جيد. ولا تراه عندما يكون مغلقًا.

بعد أن يجف الصمغ ، قمت بقطع الأسلاك الموجودة في المقدمة وقطعت قليلاً من الصفيحة المطاطية فوق أعلى سلك ، لأن ربطة العنق كانت طويلة جدًا.

يتم عمل الصور مع القميص الأبيض قبل أن أقطع الجزء الأخير من المطاط.

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

تحت الرمز كتبت لربطة العنق.

تحتوي جميع مصابيح LED على "متوسط" محدد (ليس في الواقع متوسطًا ولكن سطوع متوسط).

بمجرد أن تصل إلى هذا المتوسط ، ستقرر مع فرصة 3/4 للانتقال إلى سطوع أقل. كما أنه يحدد بشكل عشوائي حدًا أدنى جديدًا للسطوع ، وأقصى سطوع ، ووقت انتظار للسطوع الأدنى والأقصى والسرعة التي يزيدها أو ينقص كل جولة (1-255) من 5 قيم محددة مسبقًا. ثم تقوم بدورة حتى تصل إلى المتوسط مرة أخرى. يمكن أن يكون فقط 2 LED في دورة عالية في نفس الوقت.

يتم تمثيل كل حالة بقيمة عددية (1-7) تحدد ما إذا كانت ستنخفض ، أو منخفضة ، أو منخفضة ، أو يتم تحديثها ، وما إلى ذلك.

للحصول على معلومات حول تحميل الكود على اردوينو ، يرجى إلقاء نظرة على www.arduino.cc

/ * Starry Sky Tie * * هذا البرنامج النصي لتتلاشى بشكل عشوائي 5 مصابيح LED من متوسط إلى سطوع أقل * أو أعلى مع إعدادات عشوائية أقل وأعلى وتوقيت * لتبدو وكأنها سماء مرصعة بالنجوم عند استخدامها مع الألياف الضوئية. * في هذه الحالة سيتم تنفيذ ذلك بالتعادل. * * فرصة أعلى / لأسفل = 1/4 لأعلى ، 3/4 لأسفل ، بحد أقصى 2 * ترتفع إلى الحد الأقصى في نفس الوقت. * * يبقى المتوسط كما هو. * تتغير خيارات الحد الأدنى والحد الأقصى والتوقيت بشكل عشوائي * من 5 خيارات في كل مرة يصل فيها مؤشر LED إلى المتوسط مرة أخرى. * * من إعداد بيلي جاسبرز ، مايو 2019. *

/ إعلان دبابيس

كثافة العمليات LED01 = 3 ؛ كثافة العمليات LED02 = 5 ؛ كثافة العمليات LED03 = 6 ؛ كثافة العمليات LED04 = 9 ؛ كثافة العمليات LED05 = 11 ؛

// متغيرات الوقت

الوقت الحالي الطويل بدون توقيع ؛ وقت الانتظار الطويل بدون توقيع [5] ؛ غير موقعة لفترة طويلة الجولة الأخيرة ؛

// متغيرات LED

int brightMin [5] = {10، 10، 10، 10، 10} ؛ // الحد الأدنى للسطوع int brightAvg [5] = {200، 200، 200، 200، 200} ؛ // متوسط السطوع int brightMax [5] = {240، 240، 240، 240، 240} ؛ // أقصى سطوع int timeWaitLow [5] = {1000، 1000، 1000، 1000، 1000} ؛ // وقت الانتظار int timeWaitAvg [5] = {5000، 5000، 5000، 5000، 5000} ؛ // وقت الانتظار int timeWaitMax [5] = {4000، 3000، 3000، 3000، 3000} ؛ // زيادة وقت الانتظار [5] = {2، 5، 4، 5، 2} ؛ // زيادة السطوع int currentBright [5] = {200، 230، 210، 210، 235} ؛ // السطوع الحالي

// إمكانيات متغيرات LED

int brightMinPos [5] = {5، 20، 40، 5، 20} ؛ // الحد الأدنى من احتمالات السطوع int brightMaxPos [5] = {240، 245، 230، 225، 245} ؛ // احتمالات السطوع القصوى int timeLowPos [5] = {3000، 5000، 4000، 2000، 1000} ؛ // وقت الانتظار عند احتمالات السطوع المنخفض int timeHighPos [5] = {3000، 1000، 500، 2000، 4000} ؛ // وقت الانتظار على احتمالات السطوع العالي int timeAvgPos [5] = {3000، 5000، 4000، 7000، 8000} ؛ // انتظار متوسط احتمالات السطوع int incrementPos [5] = {2، 4، 5، 3، 1}؛ // زيادة في احتمالات السطوع

// المتغيرات

بدء تشغيل منطقي = صحيح ؛ // هل يجب أن تبدأ إعدادات البدء؟

// متغيرات الاتجاه

/ * 0 = الانتظار عند المتوسط 1 = الانتقال إلى المتوسط إلى الأدنى 2 = انتظار منخفض 3 = الانتقال من المستوى المنخفض إلى المتوسط 4 = الانتقال من المتوسط إلى الحد الأقصى 5 = الانتظار عند الحد الأقصى 6 = الارتفاع إلى المتوسط 7 = تحديث المتغيرات * / int statusLED [5] = {0 ، 0 ، 0 ، 0 ، 0} ؛ كمية intHighLED = 0 ؛ معدل التحديث الداخلي = 50 ؛ bool statusWaiting [5] = {false، false، false، false، false} ؛ // هل الصمام ينتظر؟

// المتغيرات العشوائية

رقم عشوائي طويل // طويل لتخزين رقم عشوائي طويل randomNumberTwo ؛ // طويل لتخزين الرقم العشوائي الثاني

// العدادات

كثافة العمليات أنا = 0 ؛ // عداد للحلقة الرئيسية

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

Serial.begin (115200) ؛ // بدء تشغيل تسلسلي عشوائي (analogRead (A0)) ؛ // مجموعة البذور العشوائية

// نعلن النواتج

pinMode (LED01 ، الإخراج) ؛ pinMode (LED02 ، الإخراج) ؛ pinMode (LED03 ، الإخراج) ؛ pinMode (LED04 ، الإخراج) ؛ pinMode (LED05 ، الإخراج) ؛ }

// اكتب البيانات إلى المصابيح

باطل writeToLED () {analogWrite (LED01، currentBright [0]) ؛ analogWrite (LED02 ، CurrentBright [1]) ؛ analogWrite (LED03 ، CurrentBright [2]) ؛ analogWrite (LED04 ، CurrentBright [3]) ؛ analogWrite (LED05 ، CurrentBright [4]) ؛ }

// الحلقة الرئيسية

حلقة باطلة () {إذا (بدء التشغيل) {// إعدادات بدء التشغيل lastRound = ميليس () ؛ // تعيين lastRound للتمهيد writeToLED () ؛ // اكتب بيانات البدء لبدء تشغيل LED = خطأ ؛ // إيقاف تشغيل بدء التشغيل} currentTime = مللي () ؛ // ضبط الوقت الحالي

إذا (currentTime - lastRound> = RefreshRate) {

لـ (i = 0؛ i <5؛ i ++) {if (statusLED == 7) {// -7- تحديث Led randomNumber = random (5) ؛ brightMin = brightMinPos [randomNumber] ؛ // تعيين قيمة عشوائية للحد الأدنى للسطوع randomNumber = عشوائي (5) ؛ brightMax = brightMaxPos [randomNumber] ؛ // قم بتعيين قيمة عشوائية لأقصى سطوع randomNumber = عشوائي (5) ؛ timeWaitLow = timeLowPos [randomNumber] ؛ // تعيين قيمة عشوائية لوقت الانتظار المنخفض randomNumber = عشوائي (5) ؛ timeWaitMax = timeHighPos [randomNumber] ؛ // تعيين قيمة عشوائية لوقت الانتظار العالي randomNumber = عشوائي (5) ؛ timeWaitAvg = timeAvgPos [randomNumber] ؛ // تعيين قيمة عشوائية لمتوسط وقت الانتظار randomNumber = عشوائي (5) ؛ increment = incrementPos [randomNumber] ؛ // تعيين قيمة عشوائية لزيادة قيمة randomNumber = عشوائي (2) ؛ // تعيين قيمة عشوائية للاتجاه randomNumberTwo = random (2) ؛ // عيّن قيمة عشوائية للاتجاه إذا (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0؛ // If عند أدنى نقطة: اذهب إلى Waiting Avg} else {currentBright = currentBright + increment ؛ // Else: Higher Brightness}} else if (statusLED == 2) {// -2- Waiting Low if (! statusWaiting ) {// If not waiting: waitingTime = millis () ؛ // تعيين حالة انتظار الانتظار = صحيح ؛ // بدء الانتظار} وإلا إذا (statusWaiting && currentTime-waitingTime > = timeWaitLow ) {// If waiting AND timeWaitAvg has over: statusWaiting = false؛ // إيقاف حالة الانتظار LED = 3 ؛ // Set statusLed to Waiting for update}} else if (statusLED == 1) {// -1- Going Avg to Low if (currentBright <= brightMin ) {statusLED = 2 ؛ // إذا كان عند أدنى نقطة: اذهب إلى Waiting Low} وإلا {currentBright = currentBright -increment ؛ // Else: Lower Brightness}} else if (statusLED == 6) {// -6- Going Max to Avg if (currentBright = timeWaitMax ) {// If waiting AND timeWaitAvg قد مر: statusWaiting = false ؛ // إيقاف حالة الانتظار LED = 6 ؛ // Set statusLed to Waiting for update}} else if (statusLED == 4) {// -4- Going Avg to Max if (currentBright > = brightMax ) {statusLED = 5 ؛ // If عند أدنى نقطة: اذهب إلى Waiting High} وإلا {currentBright = currentBright + increment ؛ // Else: Higher Brightness}} else if (statusLED == 0) {// -0- Waiting at Average if (! statusWaiting ) {// If not waiting: waitingTime = millis () ؛ // تعيين حالة انتظار الانتظار = صحيح ؛ // بدء الانتظار} وإلا إذا (statusWaiting && currentTime-waitingTime > = timeWaitAvg ) {// If waiting AND timeWaitAvg has over: statusWaiting = false؛ // إيقاف حالة الانتظار LED = 7 ؛ // Set statusLed to Waiting for update}}} i = 0 ؛ lastRound = مللي () ؛ // تعيين عند انتهاء الجولة الأخيرة. writeToLED () ، // اكتب كل البيانات إلى LED}}

الخطوة 9: المنتج النهائي

Image
Image
المنتج النهائي
المنتج النهائي
المنتج النهائي
المنتج النهائي

اعتقد انها عملت بشكل جيد ربطة العنق ليست سميكة جدًا أو قاسية أو طويلة أو ثقيلة ويبدو تأثير النجمة مذهلاً.

موصى به: