جدول المحتويات:
- الخطوة الأولى: تخطيط البناء:
- الخطوة 2: الظل المصنوع يدويًا
- الخطوة 3: الظل المصنوع يدويًا
- الخطوة 4: الدائرة الكهربائية:
- الخطوة الخامسة: الكود:
- الخطوة 6: احصل عليه بشكل مستقل مع أداة تحميل التشغيل المحترقة من PonyProg
- الخطوة 7: هذا هو My Arduino Moodlamp
فيديو: مصباح RGB Moodlamp مصنوع يدويًا يعمل بتقنية Arduino: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:42
تنقسم هذه التعليمات إلى 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
كيفية استخدام منفذ paralell الخاص بك لنسخ محمل إقلاع اردوينو على ATmega168 أو ATmega8 لاستخدام شريحة فارغة رخيصة مع arduino environment.com قريبًا … ربما على تعليمات منفصلة وإليك أيضًا تعليمات جيدة لاستخدام الشريحة المستقلة: https: / /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/؟ALLSTEPS
الخطوة 7: هذا هو My Arduino Moodlamp
إذا أعجبك ذلك ، من فضلك قيمني.
موصى به:
ماوس يعمل بتقنية DIY Lipo: 6 خطوات
ماوس يعمل بالطاقة ليبو DIY: في مشروع التعديل هذا ، سنقوم بتعديل الماوس اللاسلكي الذي يعمل ببطارية aa ونتحول إلى ماوس لاسلكي قابل للشحن عبر USB. أريد أن أقوم بهذا المشروع لأن بطارية aa لا تدوم طويلاً بالنسبة لي. ونفاد البطارية بسرعة. لذلك اخترت
سخان مياه يعمل بالبلوتوث يعمل بتقنية البلوتوث من اردوينو: 4 خطوات
جهاز تسخين المياه بتقنية البلوتوث DIY مدعوم من Arduino: ملاحظة: هذا مخصص للاختبار فقط (واجهة المستخدم باستخدام remotexy.com) للتحكم في سخان المياه بجهد 12 فولت (في الأصل للاستخدام داخل السيارة - مقبس طاقة ولاعة بجهد 12 فولت). هذا المشروع & quot؛ ليس الخيار الأفضل & quot؛ لغرضه ، ولكن مرة أخرى
MIA-1 مفتوح المصدر متقدم مصنوع يدويًا روبوت بشري!: 4 خطوات
MIA-1 مفتوح المصدر متقدم مصنوع يدويًا روبوت بشري!: مرحبًا بالجميع ، سأعرض اليوم كيف صنعت الروبوت MIA-1 ، وهو ليس فقط متقدمًا وفريدًا ولكنه أيضًا مفتوح المصدر ويمكن صنعه بدون طباعة ثلاثية الأبعاد !! نعم ، هذا الروبوت مصنوع يدويًا بالكامل. والمصدر المفتوح يعني - تحصل على
مفتاح الضوء الذي يتم التحكم فيه عن بعد بتقنية البلوتوث - التعديل التحديثي. مفتاح الضوء لا يزال يعمل ، لا توجد كتابة إضافية: 9 خطوات (بالصور)
مفتاح الضوء الذي يتم التحكم فيه عن بعد بتقنية البلوتوث - التعديل التحديثي. مفتاح الضوء لا يزال يعمل ، لا توجد كتابة إضافية: تحديث 25 نوفمبر 2017 - للحصول على إصدار عالي الطاقة من هذا المشروع يمكنه التحكم في كيلووات من الحمل ، راجع التعديل التحديثي للتحكم في BLE لأحمال الطاقة العالية - لا يلزم وجود أسلاك إضافية - تحديث 15 نوفمبر 2017 & ndash؛ بعض لوحات BLE / أكوام البرامج تقدم
جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء يدويًا: 5 خطوات (مع صور)
Hand Made IR Remote: في مشروعي السابق ، استخدمت هذا الجهاز كجهاز إرسال بالأشعة تحت الحمراء ووعدت بتحميل وصف المشروع هذا في التعليمات التالية ، لذلك أقدم لكم هنا IR Transmitter باستخدام 555 Timer. آخر مشروع فيه هذا التحكم عن بعد نريد تصميم مستقر متعدد