فهرست مطالب:

چراغ Rood Moodlamp مجهز به آردوینو: 7 مرحله
چراغ Rood Moodlamp مجهز به آردوینو: 7 مرحله

تصویری: چراغ Rood Moodlamp مجهز به آردوینو: 7 مرحله

تصویری: چراغ Rood Moodlamp مجهز به آردوینو: 7 مرحله
تصویری: بهترین داش کم برای شما؟ FineVu GX33 باید دارای ویژگی‌ها، بررسی داشبورد و تست دقیق باشد 2024, جولای
Anonim
Moodlamp RGB مجهز به دست آردوینو
Moodlamp RGB مجهز به دست آردوینو
مود لامپ RGB مجهز به دست آردوینو
مود لامپ RGB مجهز به دست آردوینو

این دستورالعمل به 5 قسمت تقسیم می شود:- برنامه ریزی ساخت (مرحله 1)- سایه دست ساز (مرحله 2+3)- مدار الکترونیکی رانندگی LED های 3W با کنترلر ATmega8 (مرحله 4)- کد (مرحله 5)- نحوه بدست آوردن آن به تنهایی (بوت لودر آردوینو را با PonyProg فلش کرده و طرح را بسوزانید) (مرحله 6) به زودی ویدئو: برخی از برداشتها

de.youtube.com/watch؟v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: LED 3W قدرتمند

مرحله 1: برنامه ریزی ساخت و ساز:

برنامه ریزی ساخت و ساز
برنامه ریزی ساخت و ساز
برنامه ریزی ساخت و ساز
برنامه ریزی ساخت و ساز

من دوست دارم فقط در یک ورق کاغذ مفهومی را انجام دهم. در اولین ورق ایده های اولیه را مشاهده می کنید. من طرح پایین سمت راست را انتخاب کردم. صفحه دوم جزئیات مربوط به ساختمان را نشان می دهد. اندازه گیری ها مانند هر بار آزمایشی هستند ، اما برای من خوب است ؛-) افکار سخت افزاری من این بود:- آیا می توانم مواد را اداره کنم؟- آیا نور می درخشد از طریق سایه؟ - چه نسبت باید داشته باشد؟ - برای یک رابط کاربری ساده به چند دستگیره و قابلمه نیاز دارم؟ افکار نرم افزاری من این بود: چراغ باید چند عملکرد مختلف داشته باشد؟ - محو شدن خودکار RGB با سرعت قابل تغییر - تنظیم رنگ دستی - سفید با روشنایی قابل تنظیم

مرحله 2: سایه دست ساز

سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز

جمع آوری مواد: سایه: من یک ورق 3 پا در 3 پا از 30 میلی متر پلاستیک در فروشگاه پیدا کردم (عکس 1-3). برای برش آن از یک چاقوی تیز استفاده کنید. من پلاستیک را با استفاده از کاغذ سنباده (Pic4-6) مات کردم. بعد از حفر سوراخ های مناسب (Pic7-8) ، همه را با هم پیچ کردم. سایه های پلاستیکی را روی پایه های برنجی رزوه شده نصب کنید. به نظر می رسد بسیار راحت است و به دست آوردن و اداره کردن آن بسیار آسان است. من سوراخ ها را سوراخ کردم و با نوار رزوه 1/8 (Pic9-10) مطابقت داشت. در همین حال ، من یک خنک کننده خنک کننده برای خنک کردن LED های 3W و برای داشتن یک پایه محکم ساخته ام. برای گرفتن سایه های زیاد از شافت ، یک قفس کوچک از میله جوش با مهره M8 در بالا (P12) ایجاد می کنم. در پایان ، همه را با هم مونتاژ کردم. پیچ و مهره های کوچک کمی مشکل بود ، اما 30 دقیقه بعد این کار را انجام دادم.

مرحله 3: سایه دست ساز

سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز
سایه دست ساز

پایه: دیسک ها در تراش چسبانده شده اند تا صاف و گرد شوند. پس از آن ، من آن را با لکه چوب ماهون رنگ آمیزی کردم تا کاج خوب به نظر برسد. بعد؟!؟ تصمیم گرفتم با استفاده از همان پایه بسازم پلاستیک مات به عنوان سایه ، و نور پس زمینه آن را با RGB microLED (Pic5). دستگیره ها: من دکمه را از قطعه ای از چوب ماهون و دستگیره ها را از یک قطعه چوب گردویی تهیه کردم.

مرحله 4: مدار الکتریکی:

مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی
مدار الکتریکی

در اولین تصویر شماتیک من را مشاهده می کنید. و در اینجا یک ویدیو دیگر وجود دارد: https://de.youtube.com/watch؟ v = xkiYzQAYf_A & NR = 1

مرحله 5: کد:

کد
کد
کد
کد
کد
کد

در عکسها مراحل کار من با آردوینو را مشاهده می کنید. ابتدا چند ماه پیش با ProtoShield خودم ، بسته باتری و انواع LED ها سعی کردم با "پروژه های شبح وار" و "BionicArduino" توسط TodEKurt شروع کنم. https://todbot.com/blog/spookyarduino/ کد من فقط یک ترکیب پیچیده از کد پروژه او. "RGBMoodlight" ، "RGBPotMixer" و برخی از برنامه های افزودنی. سه عدد آنالوگ و. یک عدد دیجیتال به عنوان سوئیچ حالت (با تشکر از Ju. برای روال وقفه:). LED ها متصل هستند به D9 ، D10 و D11 که از PulseWithModulation پشتیبانی می کنند. اگر دوست دارید ، می توانم طرح را منتشر کنم ، اما این واقعا ترکیبی از این دو کد عالی است. در اینجا کد اصلی لامپ است. این کمی کثیف به نظر می رسد ، زیرا این من بود مرحله اولیه برنامه نویسی … اما اگر آن را کپی کنید ، باید عالی کار کند. صلح های خوبی وجود دارد ، مانند "PotColorMixer" ، "RGBfadingFunction" و Interrupt-Routine برای تغییر حالت./*** nejo ژوئن 2008

کد مربوط به "Moodlamp" من ، بر اساس "dimmingLEDs" توسط Clay Shirky

*nejo سپتامبر 2008

  • کد نهایی برای چراغ خلقی با سوئیچ حالت وقفه ، شماره گیری سریع آنالوگ برای محو شدن RGB و تغییر رنگ RGB.
  • عملکرد کم نور فقط برای رنگ سفید کار می کند

*nejo اکتبر 2008

  • افزونه صدا برای چراغ خلق و خو:
  • میکروفون متراکم با آمپر LM368 کوچک ، یک گیرنده و یک فیلتر RC کم گذر
  • با یک ورودی آنالوگ دیگر ، از تابع RGBPotMixer برای تغییر رنگ با دریافت سیگنال میکروفون استفاده می کنم.

* * * کد رنگ آمیزی 3 LED ، قرمز ، سبز و آبی ، یا یک LED سه رنگ ، با استفاده از PWM

  • این برنامه به آرامی از قرمز به سبز ، سبز به آبی و آبی به قرمز محو می شود
  • کد اشکال زدایی Arduino 0004 را فرض می کند ، زیرا از توابع جدید Serial.begin ()-استفاده می کند
  • در اصل "dimmingLEDs" توسط Clay Shirky

*

  • AnalogRead برای تغییر سرعت محو شدن RGB در پین A0 فعال شده است
  • AnalogRead برای تغییر رنگ hueRGB در پین A2 فعال شده است

* * */#شامل // خروجی ledPin = 13؛ // controlPin for debuggingint redPin = 9؛ // LED قرمز ، متصل به پین دیجیتال 9int greenPin = 10؛ // LED سبز ، متصل به پین دیجیتال 10int bluePin = 11؛ // LED آبی ، متصل به پین دیجیتال 11int dimredPin = 3 ؛ // پین برای مقدار کم نور آنالوگ ، متصل به درایور ترانزیستور dimgreenPin = 5 ؛ int dimbluePin = 6 ؛ // سوئیچ ورودی Pin = 2 ؛ // سوئیچ به پین D2int val = 0 متصل است؛ // متغیر برای خواندن pin statusint buttonState؛ // متغیر برای نگه داشتن دکمه stateint button Presses = 0؛ // 3 فشار برای رفتن! int potPin0 = 0؛ // قابلمه برای تنظیم تاخیر بین محو شدن در Moodlamp ؛ int potPin2 = 2؛ // خروجی پتانسیومتر برای تغییر hueRGB colorint potVal = 0؛ // متغیر برای ذخیره ورودی از potentiometerint maxVal = 0؛ // مقدار ذخیره شده به عنوان پیش فرض ضعیف کننده 255 است ، در صورت عدم اتصال Potint dimPin = 4؛ // قابلمه متصل به A4 برای کاهش روشنایی // متغیرهای برنامه sintVal = 255؛ // متغیرها برای ذخیره مقادیر برای ارسال به pinsint greenVal = 1؛ // مقادیر اولیه قرمز کامل ، سبز و آبی offint blueVal = 1 ؛ int i = 0 ؛ // شمارنده حلقه int wait؛ // = 15؛ // 50ms (.05 ثانیه) تاخیر ؛ کوتاه کردن برای fadesint سریعتر k = 0؛ // مقدار برای controlLED در blink-functionint DEBUG = 0؛ // شمارنده DEBUG ؛ اگر روی 1 تنظیم شود ، مقادیر را از طریق LCD serialint = 0 بازنویسی می کند. // شمارنده LCD ؛ اگر روی 1 تنظیم شود ، مقادیر را از طریق serialvoid setup () {pinMode (ledPin ، OUTPUT) باز می گرداند ؛ pinMode (redPin ، OUTPUT) ؛ // پین ها را به عنوان pinMode خروجی تنظیم می کند (greenPin ، OUTPUT) ؛ pinMode (bluePin ، OUTPUT) ؛ pinMode (dimredPin ، OUTPUT) ؛ pinMode (dimgreenPin ، OUTPUT) ؛ // پین ها را به عنوان pinMode خروجی (dimbluePin، OUTPUT) تنظیم می کند ؛ pinMode (potPin2 ، INPUT) ؛ // pinMode (potPin0 ، INPUT) ؛ // pinMode (dimPin ، INPUT) ؛ // pinMode (switchPin ، INPUT) ؛ // پین سوئیچ را به عنوان input attachInterrupt تنظیم کنید (0 ، isr0 ، RISING) ؛ if (DEBUG) {// اگر می خواهیم مقادیر پین را برای اشکال زدایی ببینیم … Serial.begin (9600)؛ //… خروجی سریال را روی سبک 0004 تنظیم کنید}} // حلقه اصلی programvoid () {if (buttonPresses == 0) {Moodlamp ()؛ // تابع Moodlight} را فراخوانی می کند اگر (buttonPresses == 1) {RGBPotMixer ()؛ // تابع manuel mix} if (buttonPresses == 2) {سفید ()؛ // اینجا همه سفید است} 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) ؛ // مقدار دکمه را به مانیتور می نویسد}}} void dim () // تابع برای کم رنگ شدن سفید // شاید بعداً برای همه حالت ها {maxVal = analogRead (dimPin) ؛ maxVal /= 4 ؛ // محدوده آنالوگ از 0..1024 بسیار زیاد برای کم کردن مقدار 0..255 analogWrite (dimredPin ، maxVal) ؛ analogWrite (dimgreenPin ، maxVal) ؛ analogWrite (dimbluePin، maxVal)؛} void Moodlamp () {wait = analogRead (potPin0)؛ // به دنبال مقدار potPin0 باشید ؛ // اگر هیچ Pot متصل نیست: منتظر 255 i += 1 باشید ؛ // شمارنده افزایش // i = i - maxVal؛ if (i <255) // فاز اول محو می شود {redVal -= 1؛ // قرمز پایین greenVal += 1؛ // سبز شدن blueVal = 1؛ // آبی کم} else if (i <509) // مرحله دوم محو شدن {redVal = 1؛ // قرمز کم greenVal -= 1 ؛ // سبز پایین blueVal += 1؛ // آبی دیگر} اگر (i <763) // مرحله سوم محو شدن {redVal += 1؛ // سبز کردن greenVal = 1؛ // سبز lo2 blueVal -= 1 ؛ // آبی پایین} else // شمارنده را دوباره تنظیم کنید و محو شدن را دوباره شروع کنید {i = 1؛ } // ما "255 -redVal" را به جای "redVal" انجام می دهیم زیرا // LED ها به جای Gnd analogWrite به +5V متصل می شوند (redPin ، 255 - redVal) ؛ // مقادیر فعلی را برای پین های LED analogWrite بنویسید (greenPin، 255 - greenVal)؛ analogWrite (bluePin، 255 - blueVal)؛ /* dimredVal = دقیقه (redVal - maxVal ، 255) ؛ // کم نور شدن dimredVal = max (redVal - maxVal، 0)؛ dimgreenVal = دقیقه (greenVal - maxVal ، 255) ؛ dimgreenVal = max (greenVal - maxVal، 0)؛ dimblueVal = دقیقه (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)؛ // مقدار پتانسیومتر را در پین ورودی potVal = potVal / 4 بخوانید ؛ // تبدیل از 0-1023 به 0-255 hue_to_rgb (potVal) ؛ // potVal را به عنوان رنگ در نظر بگیرید و به rgb vals تبدیل کنید // "255-" به این دلیل است که ما LED های آند معمولی داریم ، نه analogWrite با کاتد معمولی (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 (byte hue) {if (hue> 252) hue = 252؛ // بازگشت به 252 !! nejo byte hd = hue / 42؛ // 36 == 252/7 ، 252 == H_MAX بایت hi = hd٪ 6؛ // 0-5 بایت f = hue٪ 42 می دهد ؛ بایت fs = f * 6؛ switch (hi) {case 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 بدون وقفه / n")؛ buttonState = digitalRead (switchPin) ؛ // خواندن حالت اولیه delayMicroseconds (100000) ؛ // if (val! = buttonState) {// حالت دکمه تغییر کرده است! // if (buttonState == HIGH) {// بررسی کنید که آیا دکمه اکنون فشرده شده است button Presses ++؛ //} // val = buttonState؛ // ذخیره حالت جدید در متغیر ما اگر (buttonPresses == 3) {// zur cksetzen buttonPresses = 0؛ }} //} مرحله بعدی رانندگان ترانزیستور بودند. من از 3 ترانزیستور PNP با حداکثر جریان در 3 آمپر استفاده کردم. پس از تنظیم جریان جلو و ولتاژ ، LEDemitter با شدت کامل عالی کار کرد.

مرحله 6: آن را با بوت لودر سوخته PonyProg دریافت کنید

با بوت لودر سوخته PonyProg آن را به صورت مستقل دریافت کنید
با بوت لودر سوخته PonyProg آن را به صورت مستقل دریافت کنید

چگونه می توان از پورت paralell خود برای سوزاندن بوت لودر آردوینو در ATmega168 یا ATmega8 برای استفاده از تراشه خالی ارزان قیمت با محیط arduino استفاده کرد. بزودی….. شاید در دستورالعمل های جداگانه. /www.instructables.com/id/uDuino-Very-Low-Lost-Cost-Arduino-Compatible-Developme/؟ALLSTEPS

مرحله 7: بنابراین این Arduino Moodlamp من است

بنابراین این Arduino Moodlamp من است
بنابراین این Arduino Moodlamp من است

اگر دوست داشتید ، لطفاً به من امتیاز دهید.

توصیه شده: