جدول المحتويات:
فيديو: شجرة لولبية LED: 4 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
أنا أحب جميع أنواع شرائط LED. لقد صنعت ضوء قوس قزح جميل معهم. حتى تلك التي لا يمكن معالجتها مفيدة. لقد صنعت ضوءًا خارجيًا ساطعًا لمظلة السوق من خلال ربطها بالأضلاع غير المظلية ، لذلك عندما انفجرت شجرتى الحلزونية ، قررت أن ألتف بطول شريط LED حولها.
الخطوة 1: تحكم
قررت استخدام مصابيح RGB غير القابلة للتوجيه. هذا يعني أنه يمكنني الحصول على تأثير مبرمج ولكن كل المصابيح تتغير لونها في وقت واحد. هذا يعني أيضًا أنه ستكون هناك حاجة إلى وحدة تحكم. كان بإمكاني استخدام arduino uno وإجراء الاختبارات الأولية باستخدام درع RGB ولكن انتهى بي الأمر باستخدام لوحة واحدة مخصصة مع شريحة Atmega328 عارية. كان علينا فقط تبديل المبرمج المستهدف وبرمجة الشريحة مباشرة.
لقد تركت الكثير من هذه اللوحات من مشاريع المصابيح الأخرى. لا تتردد في استخدام وحدة تحكم مضمنة ومبرمجة مسبقًا رخيصة الثمن كما فعلت على مظلتي بدلاً من ذلك.
انتهى بي الأمر باستخدام عرض تلاشي بطيء كقاعدة للشجرة.
/ ** رمز التلاشي المتقاطع 3 مصابيح LED ، أحمر وأخضر وأزرق (RGB) * لإنشاء تلاشي ، تحتاج إلى القيام بأمرين: * 1. وصف الألوان التي تريد عرضها * 2. ضع قائمة بالترتيب الذي تريده تتلاشى * * وصف اللون: * اللون هو مجرد مجموعة من ثلاث نسب ، 0-100 ، * التحكم في المصابيح الحمراء والخضراء والزرقاء * * الأحمر هو مؤشر LED الأحمر بالكامل ، والأزرق والأخضر متوقف عن التشغيل * أحمر = {100 ، 0 ، 0} * أبيض خافت هو كل المصابيح الثلاثة بنسبة 30٪ * int dimWhite = {30 ، 30 ، 30} * إلخ. * * بعض الألوان الشائعة متوفرة أدناه ، أو اخترها بنفسك * * قائمة ORDER: * في الجزء الرئيسي من البرنامج ، تحتاج إلى سرد الترتيب * الذي تريد ظهور الألوان فيه ، على سبيل المثال * CrossFade (أحمر) ؛ * CrossFade (أخضر) ؛ * CrossFade (أزرق) ؛ * * ستظهر هذه الألوان بهذا الترتيب ، حيث تتلاشى من * لون واحد وتنتقل إلى اللون التالي * * بالإضافة إلى ذلك ، هناك 5 إعدادات اختيارية يمكنك ضبطها: * 1. يتم ضبط اللون الأولي على الأسود (بحيث يتلاشى اللون الأول in) ، ولكن * يمكنك ضبط اللون الأولي ليكون أي لون آخر * 2. تعمل الحلقة الداخلية لـ 1020 interations ؛ يعيّن متغير "الانتظار" * المدة التقريبية لتلاشي التلاشي الفردي. من الناحية النظرية ، * يجب أن يؤدي "الانتظار" بمقدار 10 مللي ثانية إلى حدوث تلاشي متقاطع بمقدار 10 ثوانٍ تقريبًا. في الممارسة * ، فإن الوظائف الأخرى التي يؤديها الكود بطيء * حتى 11 ثانية تقريبًا على لوحي. YMMV. * 3. إذا تم ضبط "تكرار" على 0 ، فسيقوم البرنامج بالتكرار إلى أجل غير مسمى. * إذا تم ضبطه على رقم ، فسيتم تكرار هذا العدد من المرات ، * ثم يتوقف عند اللون الأخير في التسلسل. (اضبط "return" على 1 ، * واجعل اللون الأخير باللون الأسود إذا كنت تريده أن يتلاشى في النهاية.) * 4. يوجد متغير "Hold" اختياري ، والذي يمرر البرنامج * لـ "Hold" مللي ثانية عندما اكتمال اللون ، * ولكن قبل أن يبدأ اللون التالي. * 5. اضبط علامة DEBUG على 1 إذا كنت تريد إرسال إخراج التصحيح إلى الشاشة التسلسلية. * * الأجزاء الداخلية للبرنامج ليست معقدة ، لكنها * صعبة بعض الشيء - يتم شرح الإجراءات الداخلية * أسفل الحلقة الرئيسية. * * أبريل 2007 ، كلاي شيركي *
/ انتاج
int grnPin = 9 ؛ // أخضر LED ، متصل بالدبوس الرقمي 10 int redPin = 10 ؛ // Red LED ، متصل بالدبوس الرقمي 9 int bluPin = 11 ؛ // LED أزرق ، متصل بالدبوس الرقمي 11
// مصفوفات اللون
int black [3] = {0، 0، 0} ؛ int white [3] = {100، 100، 100} ؛ int red [3] = {100، 0، 0} ؛ int green [3] = {0، 100، 0} ؛ int blue [3] = {0، 0، 100} ؛ int yellow [3] = {40، 95، 0} ؛ int dimWhite [3] = {30، 30، 30} ؛ // إلخ.
// تعيين اللون الأولي
int redVal = أسود [0] ؛ int grnVal = أسود [1] ؛ int bluVal = أسود [2] ؛
انتظر int = 3 ؛ // 10 مللي ثانية تأخير التداخل الداخلي ؛ زيادة يتلاشى بشكل أبطأ
عقد int = 0 ؛ // تعليق اختياري عند اكتمال اللون ، قبل التقاطع التالي int DEBUG = 0 ؛ // عداد DEBUG ؛ إذا تم ضبطه على 1 ، فسيتم إعادة كتابة القيم عبر serial int loopCount = 60 ؛ // كم مرة يجب أن تبلغ DEBUG؟ تكرار int = 0 ؛ // كم مرة يجب أن نكررها قبل التوقف؟ (0 بدون توقف) int j = 0 ؛ // حلقة العداد للتكرار
// تهيئة متغيرات اللون
int prevR = redVal ؛ int prevG = grnVal ؛ int prevB = bluVal ؛
// إعداد نواتج LED
إعداد باطل () {pinMode (redPin ، الإخراج) ؛ // يعين المسامير كإخراج pinMode (grnPin ، الإخراج) ؛ pinMode (bluPin ، الإخراج) ؛
إذا (DEBUG) {// إذا أردنا رؤية قيم لتصحيح الأخطاء …
Serial.begin (9600) ؛ // … إعداد الإخراج التسلسلي}}
// البرنامج الرئيسي: قائمة بترتيب التلاشي المتقاطع
حلقة باطلة () {crossFade (أحمر) ؛ CrossFade (أخضر) ؛ CrossFade (أزرق) ؛ CrossFade (أصفر) ؛
إذا (كرر) {// هل نكرر عددًا محدودًا من المرات؟
ي + = 1 ؛ إذا (j> = كرر) {// هل وصلنا بعد؟ خروج (ي) ؛ // إذا كان الأمر كذلك ، توقف. }}}
/ * يوجد أسفل هذا السطر الرياضيات - يجب ألا تحتاج إلى تغيير هذا من أجل الأساسيات
* * يعمل البرنامج على النحو التالي: * تخيل تلاشيًا متقاطعًا يحرك مؤشر LED الأحمر من 0-10 ، * الأخضر من 0-5 ، والأزرق من 10 إلى 7 ، في * عشر خطوات. * نرغب في حساب 10 خطوات وزيادة أو * تقليل قيم الألوان بزيادات تدريجية متساوية. * تخيل أن a + يشير إلى رفع قيمة بمقدار 1 ، و a - * يساوي خفضها. سيبدو التلاشي المكون من 10 خطوات كما يلي: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + * G + + + + * B - - - * * يرتفع اللون الأحمر من من 0 إلى 10 في عشر خطوات ، والأخضر من * 0-5 في 5 خطوات ، والأزرق يسقط من 10 إلى 7 في ثلاث خطوات. * * في البرنامج الحقيقي ، يتم تحويل نسب الألوان إلى قيم * 0-255 ، وهناك 1020 خطوة (255 * 4). * * لمعرفة حجم الخطوة التي يجب أن تكون بين علامة واحدة لأعلى أو * لأسفل لإحدى قيم LED ، نسمي calculateStep () ، * الذي يحسب الفجوة المطلقة بين قيم البداية والنهاية ، * ثم يقسم هذه الفجوة على 1020 لتحديد حجم الخطوة * بين عمليات الضبط في القيمة. * /
int calculateStep (int prevValue، int endValue) {
خطوة int = endValue - prevValue ؛ // ما هي الفجوة الإجمالية؟ إذا (الخطوة) {// إذا كانت غير صفرية ، الخطوة = 1020 / الخطوة ؛ // قسمة على 1020} خطوة إرجاع ؛ }
/ * الوظيفة التالية هي calculateVal. عندما تكون قيمة الحلقة ، i ،
* يصل إلى حجم الخطوة المناسب لأحد الألوان * ، فهو يزيد أو ينقص قيمة ذلك اللون بمقدار 1. * (يتم حساب كل من R و G و B على حدة.) * /
int calculateVal (int step، int val، int i) {
إذا ((الخطوة) && i٪ step == 0) {// إذا كانت الخطوة غير صفرية ووقتها لتغيير القيمة ،
إذا (الخطوة> 0) {// قم بزيادة القيمة إذا كانت الخطوة موجبة … val + = 1؛ } else if (الخطوة 255) {val = 255 ؛ } else if (val <0) {val = 0 ؛ } إرجاع val؛ }
/ * crossFade () يحول النسبة المئوية للألوان إلى أ
* 0-255 النطاق ، ثم حلقات 1020 مرة ، والتحقق لمعرفة ما إذا كانت * القيمة بحاجة إلى التحديث في كل مرة ، ثم كتابة * قيم اللون على الدبابيس الصحيحة. * /
تلاشي باطل (لون int [3]) {
// تحويل إلى 0-255 int R = (color [0] * 255) / 100 ؛ int G = (color [1] * 255) / 100 ؛ int B = (color [2] * 255) / 100 ؛
int stepR = calculateStep (prevR، R) ؛
int stepG = calculateStep (prevG، G) ؛ int stepB = calculateStep (prevB، B) ؛
لـ (int i = 0 ؛ i <= 1020 ؛ i ++) {redVal = calculateVal (stepR، redVal، i) ؛ grnVal = calculateVal (stepG، grnVal، i) ؛ bluVal = calculateVal (stepB، bluVal، i) ؛
analogWrite (redPin ، redVal) ؛ // اكتب القيم الحالية إلى دبابيس LED
analogWrite (grnPin ، grnVal) ؛ analogWrite (bluPin ، bluVal) ؛
تأخير (انتظر) ؛ // توقف لمدة مللي ثانية "انتظر" قبل استئناف الحلقة
إذا (DEBUG) {// إذا أردنا إخراج تسلسلي ، فقم بطباعته على
إذا (i == 0 أو i٪ loopCount == 0) {// بداية ، وكل حلقة عدد مرات Serial.print ("Loop / RGB: #") ؛ Serial.print (i) ؛ Serial.print ("|") ؛ Serial.print (redVal) ؛ Serial.print ("/") ؛ Serial.print (grnVal) ؛ Serial.print ("/") ؛ Serial.println (bluVal) ؛ } تصحيح + = 1 ، }} // تحديث القيم الحالية للحلقة التالية prevR = redVal ؛ prevG = grnVal ؛ prevB = bluVal ؛ تأخير (تعليق) ؛ // إيقاف مؤقت لملي ثانية "انتظار" اختياري قبل استئناف الحلقة}
الخطوة الثانية: لف الشجرة
لقد استخدمت شرائط مقاومة للماء لأنها ستكون في الهواء الطلق. لقد تمسكوا بمفردهم ولكني سرعان ما تابعت ذلك برباطات سلكية للتأكد من بقائهم في مكانهم. اختراق بسيط وسهل. جعلت قدرة الطاقة المغذية للشريط من السهل تغذية مصدر الطاقة في الأسفل وإخراج الطاقة من الأعلى إلى النجم.
الخطوة 3: لا تنسى النجم في المقدمة
بالنسبة للنجم ، استخدمت زوجًا من شرائح 10 واط لجذب بعض الاهتمام. لقد قمت بلحامهم بصفيحة نحاسية كمبرد. كان بإمكاني استخدام المزيد من الشريط نظرًا لبقاء القليل منه.
الخطوة 4: جربها
المحاولة الأولى كانت السرعة كبيرة جدًا….
بمجرد أن هدأت ، بدا الأمر جيدًا.
موصى به:
شجرة الأسلاك RGB-LED: 9 خطوات (بالصور)
شجرة الأسلاك RGB-LED: أريد أن أشارككم شجرة الأسلاك RGB-LED الخاصة بي. في إحدى الأمسيات تذكرت بناء أشجار الأسلاك عندما كنت طفلاً. في الوقت الحاضر ، أستمتع حقًا ببناء مشاريع إلكترونية صغيرة باستخدام وحدات تحكم دقيقة تشبه Arduino ، خاصةً مع مصابيح LED. لذلك فكرت في نفسي
زينة شجرة عيد الميلاد LED: 3 خطوات (بالصور)
زينة شجرة عيد الميلاد LED: مرحبًا بالجميع. مع اقتراب عيد الميلاد ، قررت إنشاء زخرفة جميلة لشجرة عيد الميلاد مع بعض المصابيح وبعض المقاومات و 555 مؤقتًا IC. جميع المكونات المطلوبة هي مكونات THT ، وهي أسهل في اللحام من مكونات SMD
استخدام ملفات لولبية نابضة مع Wemos D1 Mini و H-Bridge للري: 7 خطوات
استخدام ملفات لولبية نابضة مع Wemos D1 Mini و H-Bridge للري: بالنسبة لهذا التوجيه ، أردت إنشاء حل حتى أتمكن من تشغيل نظام الرش عن بُعد أو ري شتلاتي تلقائيًا. سأستخدم wemos D1 للتحكم ملفات لولبية نابضة. تستخدم هذه الملفات اللولبية طاقة أقل بكثير لأنه عندما يكون لديها استقبال
شجرة عيد الميلاد اللولبية LED: 4 خطوات (بالصور)
شجرة عيد الميلاد ذات الصمام اللولبي: مرحبًا يا أصدقاء في هذا الغامض ، سنصنع شجرة عيد الميلاد اللولبية بقيادة الولايات المتحدة
شجرة عيد الميلاد LED متغيرة اللون: 3 خطوات (بالصور)
شجرة عيد الميلاد LED المتغيرة الألوان: لقد وجدت شجرة الكريسماس هذه في متجر بالدولار العام الماضي ، وأردت أن أضع مصباح LED في الأسفل لإضاءةها ، لكنني لم أتمكن من الوصول إليها إلا بعد عام ، هذا مشروع بسيط للغاية يتطلب لحام صغير جدًا ويجعل نهاية جميلة