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

مصباح RGB Moodlamp مصنوع يدويًا يعمل بتقنية Arduino: 7 خطوات
مصباح RGB Moodlamp مصنوع يدويًا يعمل بتقنية Arduino: 7 خطوات

فيديو: مصباح RGB Moodlamp مصنوع يدويًا يعمل بتقنية Arduino: 7 خطوات

فيديو: مصباح RGB Moodlamp مصنوع يدويًا يعمل بتقنية Arduino: 7 خطوات
فيديو: УЛУЧШИТЬ | Свет настроения — Учебное пособие 2024, يوليو
Anonim
مصباح RGB Moodlamp مصنوع يدويًا من Arduino
مصباح RGB Moodlamp مصنوع يدويًا من Arduino
مصباح RGB Moodlamp مصنوع يدويًا من Arduino
مصباح RGB Moodlamp مصنوع يدويًا من Arduino

تنقسم هذه التعليمات إلى 5 أجزاء: - تخطيط البناء (الخطوة 1) - الظل المصنوع يدويًا (الخطوة 2 + 3) - الدائرة الإلكترونية لقيادة مصابيح LED 3 وات مع وحدة التحكم ATmega8 (الخطوة 4) - الرمز (الخطوة 5) - كيفية الحصول عليها مستقل (وميض محمل الإقلاع من Arduino مع PonyProg وحرق الرسم) (الخطوة 6) قريبًا Vid: بعض الانطباعات

de.youtube.com/watch؟v=apZ9NpaUG84 Pic1: Moodlamp Pic2: مصباح LED قوي بقوة 3 وات

الخطوة الأولى: تخطيط البناء:

تخطيط البناء
تخطيط البناء
تخطيط البناء
تخطيط البناء

أحب أن أفعل مفهومًا على ورقة واحدة فقط ، في الورقة الأولى ترى بعض الأفكار المبكرة. اخترت التصميم السفلي الأيمن. تعرض الصفحة الثانية بعض التفاصيل الخاصة بالبناء. القياسات تجريبية مثل كل مرة ، ولكن لا بأس بها بالنسبة لي ؛-) كانت أفكاري في الأجهزة: - هل يمكنني التعامل مع المواد؟ - هل يضيء الضوء من خلال الظل؟ - ما النسبة التي يجب أن تحتوي عليها؟ - كم عدد المقابض والأواني التي سأحتاجها لواجهة بسيطة؟ كانت أفكاري في البرنامج: كم عدد الوظائف المختلفة التي يجب أن يحتوي عليها المصباح؟ - تلاشي RGB التلقائي مع سرعة متغيرة - ضبط اللون يدويًا - أبيض مع سطوع قابل للتعديل

الخطوة 2: الظل المصنوع يدويًا

الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا

جمع المواد: الظل: عثرت على لوح 3 أقدام × 3 أقدام من 30 مطحنة بلاستيك في المتجر (صورة 1-3) ، استخدم سكينًا حادًا لقطعه ، وقمت بتجميد البلاستيك باستخدام ورق الصنفرة (صورة 4-6). احصل على أسطوانة ملساء قمت بربطها معًا بعد حفر الثقوب اليمنى (Pic7-8). قم بتركيب الظلال البلاستيكية على الدعامات النحاسية الملولبة. يبدو لطيفًا ويسهل الحصول عليه والتعامل معه ، لقد قمت بحفر الثقوب واستغلالها لتتناسب مع الشريط الملولب 1/8 (Pic9-10) ، وفي الوقت نفسه ، قمت بعمل غرفة تبريد لتبريد مصابيح LED 3W والحصول على قاعدة صلبة من أجل عدم الحصول على الكثير من الظلال من العمود ، أقوم ببناء قفص صغير من قضيب اللحام مع صمولة M8 في الأعلى (Pic12). كانت البراغي والصواميل الصغيرة صعبة بعض الشيء ، لكن بعد 30 دقيقة أنجزتها.

الخطوة 3: الظل المصنوع يدويًا

الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا
الظل المصنوع يدويا

القاعدة: تم رمي الأقراص في المخرطة لجعلها ناعمة ودائرية ، وبعد ذلك قمت بتلطيخها ببقعة من خشب الماهوجني حتى أجعل خشب الصنوبر يبدو جيدًا. من البلاستيك المصنفر كالظل ، والإضاءة الخلفية باستخدام RGB microLED (Pic5). المقابض: صنعت الزر من قطعة من خشب الماهوجني والمقابض من قطعة من خشب الجوز.

الخطوة 4: الدائرة الكهربائية:

الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية
الدائرة الكهربائية

في الصورة الأولى ترى المخطط الخاص بي ، وهنا مقطع فيديو آخر: https://de.youtube.com/watch؟ v = xkiYzQAYf_A & NR = 1

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

الرمز
الرمز
الرمز
الرمز
الرمز
الرمز

في الصور ، ترى عملي مع Arduino. أولاً ، جربت استخدام ProtoShield الخاص بي ، وحزمة بطارية وبعض أنواع المصابيح. لقد بدأت مع "Spooky Projects" و "BionicArduino" بواسطة TodEKurt منذ بضعة أشهر. https://todbot.com/blog/spookyarduino/ مجرد مزيج صعب من كود مشروعه. "RGBMoodlight" و "RGBPotMixer" وبعض الامتدادات. ثلاثة تمثيلي في و. دخل رقمي واحد كمفتاح وضع (بفضل Ju. لروتين المقاطعة:). المصابيح متصلة إلى D9 و D10 و D11 التي تدعم PulseWithModulation ، وإذا أردت ، يمكنني نشر الرسم التخطيطي ، لكنه مزيج من هذين الرمزين الرائعين ، هذا هو الكود الأصلي للمصباح ، ويبدو فوضويًا بعض الشيء ، لأنه كان مرحلة مبكرة جدًا في البرمجة … ولكن إذا قمت بنسخها ، فيجب أن تعمل بشكل رائع. هناك قطع جيدة ، مثل "PotColorMixer" و "RGBfadingFunction" و Interrupt-Routine للوضع- التبديل. / * nejo June 2008

رمز "Moodlamp" الخاص بي ، استنادًا إلى "dimmingLEDs" بواسطة Clay Shirky

* نيجو سبتمبر 2008

  • الكود النهائي لمصباح الحالة المزودة بمفتاح وضع المقاطعة والاتصال السريع التناظري لتلاشي RGB وتغيير لون RGB.
  • تعمل وظيفة التعتيم مع اللون الأبيض فقط

* نيجو أكتوبر 2008

  • تمديد الصوت للمزودلامب:
  • ميكروفون مكثف مع LM368 Amp صغير جدًا ، وجهاز إعادة ، ومرشح تمرير منخفض RC
  • مع إدخال تناظري آخر ، أستخدم وظيفة RGBPotMixer لتغيير اللون عن طريق الحصول على إشارة الميكروفون.

* * * رمز لـ 3 مصابيح LED متداخلة باللون الأحمر والأخضر والأزرق أو مؤشر LED ثلاثي الألوان باستخدام PWM

  • يتلاشى البرنامج ببطء من الأحمر إلى الأخضر ، ومن الأخضر إلى الأزرق ، ومن الأزرق إلى الأحمر
  • يفترض رمز تصحيح الأخطاء Arduino 0004 ، لأنه يستخدم وظائف نمط Serial.begin () الجديدة
  • أصلاً "dimmingLEDs" لكلاي شيركي

*

  • تم تمكين AnalogRead على Pin A0 لتغيير سرعة خبو RGB
  • تم تمكين AnalogRead في Pin A2 لتغيير لون hueRGB

* * * / # تشمل // Outputint ledPin = 13 ؛ // controlPin لتصحيح الأخطاء redPin = 9 ؛ // أحمر LED ، متصل بالدبوس الرقمي 9int greenPin = 10 ؛ // أخضر LED ، متصل بالدبوس الرقمي 10int bluePin = 11 ؛ // LED أزرق ، متصل بالدبوس الرقمي 11int dimredPin = 3 ؛ // دبابيس لقيمة التعتيم التناظرية ، متصلة بمحرك الترانزستورint dimgreenPin = 5 ؛ int dimbluePin = 6 ؛ // Inputint switchPin = 2 ؛ // التبديل متصل بـ pin D2int val = 0 ؛ // متغير لقراءة حالة الدبوس buttonState ؛ // متغير للضغط على زر Stateint buttonPresses = 0 ؛ // 3 ضغطات للذهاب! int potPin0 = 0 ؛ // وعاء لضبط التأخير بين الخبو في Moodlamp ؛ int potPin2 = 2 ؛ // ناتج مقياس الجهد لتغيير وعاء تلوين hueRGB = 0 ؛ // متغير لتخزين المدخلات من مقياس الجهد maxVal = 0 ؛ // قيمة حفظ عامل التعتيم الافتراضي هي 255 ، إذا لم يتم توصيل وعاء ، dimPin = 4 ؛ // وعاء متصل بـ A4 لتعتيم السطوع // متغيرات البرنامجint redVal = 255 ؛ // المتغيرات لتخزين القيم لإرسالها إلى pinint greenVal = 1 ؛ // القيم الأولية هي الأحمر ممتلئ ، والأخضر والأزرق الأزرق ، فال = 1 ؛ int i = 0 ؛ // Loop counter int wait ؛ // = 15 ؛ // 50 مللي ثانية (0.05 ثانية) تأخير ؛ تقصير من أجل تلاشي أسرع k = 0 ؛ // قيمة عنصر التحكم في DEBUG-functionint blink = 0 ؛ // عداد DEBUG ؛ إذا تم الضبط على 1 ، فسوف تكتب القيم مرة أخرى عبر شاشة LCD التسلسلية = 0 ؛ // عداد LCD ؛ إذا تم التعيين على 1 ، فسيتم إعادة كتابة القيم عبر إعداد serialvoid () {pinMode (ledPin ، OUTPUT) ؛ pinMode (redPin ، الإخراج) ؛ // يعين الدبابيس على أنها pinMode الإخراج (greenPin ، الإخراج) ؛ pinMode (bluePin ، الإخراج) ؛ pinMode (dimredPin ، الإخراج) ؛ pinMode (dimgreenPin ، الإخراج) ؛ // يعين المسامير كإخراج pinMode (dimbluePin ، OUTPUT) ؛ pinMode (potPin2 ، INPUT) ؛ // pinMode (potPin0 ، INPUT) ؛ // pinMode (dimPin ، INPUT) ؛ // pinMode (switchPin ، INPUT) ؛ / / تعيين دبوس التبديل كمدخلات attachInterrupt (0 ، isr0 ، RISING) ؛ if (DEBUG) {// إذا أردنا رؤية قيم الدبوس لتصحيح الأخطاء… Serial.begin (9600)؛ //… إعداد المسلسل ouput على 0004 style}} // Main programvoid loop () {if (buttonPresses == 0) {Moodlamp ()؛ // يستدعي وظيفة Moodlight} إذا (buttonPresses == 1) {RGBPotMixer ()؛ // يستدعي وظيفة manuel mix} إذا (buttonPresses == 2) {White ()؛ // كل شيء أبيض هنا} if (buttonPresses == 3) {} // Moodlamp ()؛ // RGBPotMixer () ؛ //أبيض()؛ مراقب()؛ dim ()؛} void Monitor () {// Send State to the monitor if (DEBUG) {// إذا أردنا قراءة الإخراج DEBUG + = 1 ؛ // زيادة عداد DEBUG إذا (DEBUG> 10) {// طباعة كل 10 حلقات DEBUG = 1 ؛ // إعادة تعيين العداد Serial.print (i) ؛ // أوامر تسلسلية بأسلوب 0004 Serial.print ("\ t") ؛ // طباعة علامة تبويب Serial.print ("R:") ؛ // تشير إلى أن الإخراج ذو قيمة حمراء Serial.print (redVal) ؛ // طباعة قيمة حمراء Serial.print ("\ t") ؛ // طباعة علامة تبويب Serial.print ("G:") ؛ // كرر للأخضر والأزرق… Serial.print (greenVal) ؛ Serial.print ("\ t") ؛ Serial.print ("B:") ؛ Serial.print (blueVal) ؛ // println ، لتنتهي بحرف إرجاع Serial.print ("\ t") ؛ Serial.print ("dimValue:") ؛ Serial.print (maxVal) ؛ // println ، لتنتهي بحرف إرجاع Serial.print ("\ t") ؛ Serial.print ("انتظر:") ؛ Serial.print (انتظر) ؛ // يكتب قيمة potPin0 إلى الشاشة Serial.print ("\ t") ؛ Serial.print ("hueRGBvalue") ؛ Serial.print (potVal) ؛ // يكتب قيمة potPin0 إلى الشاشة Serial.print ("\ t") ؛ Serial.print ("buttonState:") ؛ Serial.print (buttonState) ؛ // يكتب قيمة potPin0 إلى الشاشة Serial.print ("\ t") ؛ Serial.print ("buttonPresses:") ؛ Serial.println (buttonPresses) ؛ // يكتب قيمة buttonPresses إلى الشاشة}}} void dim () // وظيفة تعتيم الأبيض // ربما لاحقًا لجميع الأوضاع {maxVal = analogRead (dimPin)؛ maxVal / = 4 ؛ // النطاق التناظري من 0..1024 كثيرًا لتعتيم القيمة 0..255 analogWrite (dimredPin ، maxVal) ؛ analogWrite (dimgreenPin ، maxVal) ؛ analogWrite (dimbluePin، maxVal) ؛} باطل Moodlamp () {wait = analogRead (potPin0) ؛ // ابحث عن القيمة من potPin0 ؛ // إذا لم يكن هناك وعاء متصل: انتظر 255 i + = 1 ؛ // عداد الزيادة // i = i - maxVal ؛ إذا (i <255) // المرحلة الأولى من التلاشي {redVal - = 1 ؛ // أحمر أسفل أخضر Val + = 1 ؛ // Green up blueVal = 1 ؛ // Blue low} else if (i <509) // المرحلة الثانية من الخبو {redVal = 1 ؛ // أحمر منخفض أخضر Val - = 1 ؛ // أخضر لأسفل أزرق Val + = 1 ؛ // Blue up} else if (i <763) // المرحلة الثالثة من الخبو {redVal + = 1 ؛ // أحمر يصل أخضر Val = 1 ؛ // Green lo2 blueVal - = 1 ؛ // Blue down} else // أعد ضبط العداد وابدأ الخبو مرة أخرى {i = 1؛ } // نقوم بعمل "255-redVal" بدلاً من "redVal" فقط لأن // LEDs موصولة بـ + 5V بدلاً من Gnd analogWrite (redPin، 255 - redVal)؛ // اكتب القيم الحالية إلى دبابيس LED analogWrite (greenPin ، 255 - greenVal) ؛ analogWrite (bluePin ، 255 - blueVal) ؛ / * dimredVal = min (redVal - maxVal ، 255) ؛ // يعتم dimredVal = max (redVal - maxVal ، 0) ؛ dimgreenVal = min (greenVal - maxVal ، 255) ؛ dimgreenVal = max (greenVal - maxVal ، 0) ؛ dimblueVal = min (blueVal - maxVal، 255) ؛ dimblueVal = max (blueVal - maxVal ، 0) ؛ analogWrite (redPin ، 255 - dimredVal) ؛ // اكتب القيم الحالية إلى دبابيس LED analogWrite (greenPin ، 255 - dimgreenVal) ؛ analogWrite (bluePin ، 255 - dimblueVal) ؛ * / انتظر / = 4 ؛ تأخير (انتظر) ؛ // توقف لمدة مللي ثانية "انتظر" قبل استئناف الحلقة} void RGBPotMixer () {potVal = analogRead (potPin2)؛ // اقرأ قيمة مقياس الجهد في وعاء الإدخال pin potVal = potVal / 4 ؛ // تحويل من 0-1023 إلى 0-255 hue_to_rgb (potVal) ؛ // تعامل مع potVal كتدرج وتحويل إلى vals rgb // "255-" لأن لدينا مصابيح LED مشتركة الأنود ، وليست أنالوج الكاثود المشترك (redPin ، 255-redVal) ؛ // اكتب القيم إلى دبابيس LED analogWrite (greenPin ، 255-greenVal) ؛ analogWrite (bluePin ، 255-blueVal) ؛ } void White () {analogWrite (redPin، maxVal)؛ // اكتب القيم إلى دبابيس LED analogWrite (greenPin ، maxVal) ؛ analogWrite (bluePin ، maxVal) ؛ } / *

  • بالنظر إلى متغير تدرج اللون "h" ، والذي يتراوح من 0-252 ،
  • اضبط قيمة ألوان RGB بشكل مناسب.
  • يفترض الحد الأقصى للتشبع والقيمة القصوى (السطوع)
  • ينفذ رياضيات أعداد صحيحة بحتة ، بدون فاصلة عائمة.

* / void hue_to_rgb (بايت hue) {if (hue> 252) hue = 252 ؛ // stetback إلى 252 !! nejo بايت hd = hue / 42 ؛ // 36 == 252/7 ، 252 == H_MAX بايت hi = hd٪ 6 ؛ // يعطي 0-5 بايت f = hue٪ 42 ؛ البايت fs = f * 6 ؛ التبديل (مرحبًا) {الحالة 0: redVal = 252 ؛ greenVal = fs ؛ blueVal = 0 ؛ استراحة؛ الحالة 1: redVal = 252-fs ؛ greenVal = 252 ؛ blueVal = 0 ؛ استراحة؛ الحالة 2: redVal = 0 ؛ greenVal = 252 ؛ blueVal = fs ؛ استراحة؛ الحالة 3: redVal = 0 ؛ greenVal = 252-fs ؛ blueVal = 252 ؛ استراحة؛ الحالة 4: redVal = fs ؛ greenVal = 0 ؛ blueVal = 252 ؛ استراحة؛ الحالة 5: redVal = 252 ؛ greenVal = 0 ؛ blueVal = 252-fs ؛ استراحة؛ }} void isr0 () {Serial.println ("\ n / n inerrupt / n")؛ buttonState = digitalRead (switchPin) ؛ // قراءة تأخير الحالة الأولية Microseconds (100000) ؛ // if (val! = buttonState) {// حالة الزر قد تغيرت! // if (buttonState == HIGH) {// تحقق مما إذا كان الزر مضغوطًا الآن buttonPresses ++ ؛ //} // val = buttonState ؛ // احفظ الحالة الجديدة في المتغير إذا (buttonPresses == 3) {// zur cksetzen buttonPresses = 0 ؛ }} //} المرحلة التالية كانت محركات الترانزستور. لقد استخدمت 3 ترانزستورات PNP بحد أقصى 3 أمبير. بعد تنظيم التيار الأمامي والجهد الكهربائي ، عمل LEDemitter بشكل رائع بكثافة كاملة.

الخطوة 6: احصل عليه بشكل مستقل مع أداة تحميل التشغيل المحترقة من PonyProg

احصل عليه بشكل مستقل مع أداة تحميل الإقلاع المحترقة من PonyProg
احصل عليه بشكل مستقل مع أداة تحميل الإقلاع المحترقة من PonyProg

كيفية استخدام منفذ paralell الخاص بك لنسخ محمل إقلاع اردوينو على ATmega168 أو ATmega8 لاستخدام شريحة فارغة رخيصة مع arduino environment.com قريبًا … ربما على تعليمات منفصلة وإليك أيضًا تعليمات جيدة لاستخدام الشريحة المستقلة: https: / /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/؟ALLSTEPS

الخطوة 7: هذا هو My Arduino Moodlamp

هذا هو My Arduino Moodlamp
هذا هو My Arduino Moodlamp

إذا أعجبك ذلك ، من فضلك قيمني.

موصى به: