فهرست مطالب:

کاوش در فضای رنگ: 6 مرحله
کاوش در فضای رنگ: 6 مرحله

تصویری: کاوش در فضای رنگ: 6 مرحله

تصویری: کاوش در فضای رنگ: 6 مرحله
تصویری: رنگ کردن کابین روشویی پی وی سی در 7 مرحله 2024, نوامبر
Anonim
کاوش در فضای رنگی
کاوش در فضای رنگی

چشم ما نور را از طریق گیرنده هایی که در طیف بصری به رنگهای قرمز ، سبز و آبی حساس هستند ، درک می کند. مردم در صد سال گذشته از این واقعیت برای ارائه تصاویر رنگی از طریق فیلم ، تلویزیون ، رایانه و سایر دستگاه ها استفاده کرده اند.

در صفحه نمایش رایانه یا تلفن ، تصاویر با تغییر رنگ شدید LED های قرمز ، سبز و آبی کوچک که در کنار یکدیگر روی صفحه قرار دارند ، در رنگ های مختلف نمایش داده می شوند. میلیون ها رنگ مختلف را می توان با تغییر شدت نور از LED های قرمز ، سبز یا آبی نشان داد.

این پروژه به شما کمک می کند تا با استفاده از آردوینو ، LED RGB و کمی ریاضی ، فضای رنگ قرمز ، سبز و آبی (RGB) را کشف کنید.

می توانید شدت سه رنگ قرمز ، سبز و آبی را مختصات مکعب در نظر بگیرید ، جایی که هر رنگ در یک محور قرار دارد و هر سه محور عمود بر یکدیگر هستند. هرچه به نقطه صفر یا مبدأ محور نزدیکتر باشید ، کمتر آن رنگ نشان داده می شود. وقتی مقادیر هر سه رنگ در نقطه صفر یا مبدأ باشد ، رنگ سیاه است و LED RGB به طور کامل خاموش است. وقتی مقادیر هر سه رنگ تا حد ممکن بالا باشد (در مورد ما 255 برای هر یک از سه رنگ) ، LED RGB به طور کامل روشن است و چشم این ترکیب رنگها را سفید می داند.

مرحله 1: فضای رنگ RGB

فضای رنگ RGB
فضای رنگ RGB

از کنت مورلند برای اجازه استفاده از تصویر زیباش تشکر می کنم.

ما می خواهیم گوشه های مکعب فضای رنگی سه بعدی را با استفاده از LED RGB متصل به آردوینو کاوش کنیم ، اما همچنین می خواهیم این کار را به روشی جالب انجام دهیم. ما می توانیم این کار را با لانه سازی سه حلقه (هر یک برای قرمز ، سبز و آبی) انجام دهیم و هر ترکیب رنگی را انجام دهیم ، اما این واقعاً خسته کننده خواهد بود. آیا تا به حال الگوی دو بعدی Lissajous را در یک اسیلوسکوپ یا نمایش نور لیزری؟ بسته به تنظیمات ، یک الگوی Lissajous می تواند مانند یک خط مورب ، یک دایره ، یک شکل 8 ، یا یک الگوی شبیه پروانه نوک تیز به آرامی بچرخد. الگوهای لیساژوس با ردیابی سیگنال های سینوسی دو (یا بیشتر) نوسان ساز که در محورهای x-y (یا در مورد ما x-y-z یا R-G-B) ترسیم شده اند ، ایجاد می شوند.

مرحله 2: کشتی خوب Lissajous

کشتی خوب Lissajous
کشتی خوب Lissajous

جالب ترین الگوهای Lissajous زمانی ظاهر می شوند که فرکانس سیگنال های سینوسی به مقدار کمی متفاوت باشد. در عکس اسیلوسکوپ در اینجا ، فرکانس ها با نسبت 5 به 2 (هر دو عدد اول هستند) متفاوت است. این الگو مربع خود را به خوبی پوشش می دهد و به زیبایی به گوشه ها می رسد. اعداد اول بالاتر حتی بهتر می توانند مربع را بپوشانند و حتی بیشتر به گوشه ها بروند.

مرحله 3: صبر کنید - چگونه می توانیم LED را با موج سینوسی هدایت کنیم؟

من را گیر انداختی! ما می خواهیم فضای رنگی سه بعدی را که از خاموش (0) تا کامل (255) برای هر یک از سه رنگ متغیر است ، کاوش کنیم ، اما امواج سینوسی از -1 تا +1 متغیر است. ما قصد داریم در اینجا کمی ریاضی و برنامه نویسی انجام دهیم تا به آنچه می خواهیم برسیم.

  • هر مقدار را در 127 ضرب کنید تا مقادیری از -127 تا +127 را دریافت کنید
  • مقدار 127 را اضافه کرده و هر مقدار را گرد کنید تا مقادیری از 0 تا 255 را دریافت کنید (برای ما به اندازه کافی نزدیک به 255 است)

مقادیر بین 0 تا 255 را می توان با اعداد تک بایت (نوع داده "char" در زبان برنامه نویسی Arduino شبیه C) نشان داد ، بنابراین ما با استفاده از نمایش تک بایت حافظه را ذخیره می کنیم.

اما زوایا چطور؟ اگر از درجه استفاده می کنید ، زوایای سینوسی از 0 تا 360 متغیر است. اگر از رادیان استفاده می کنید ، زاویه ها از 0 تا 2 برابر π ("pi") متغیر هستند. ما قصد داریم کاری انجام دهیم که حافظه را دوباره در آردوینو حفظ کند ، و دایره ای را که به 256 قسمت تقسیم شده است ، در نظر بگیریم و دارای "زاویه های دوتایی" بین 0 تا 255 باشیم ، بنابراین "زاویه" برای هر یک از رنگها می تواند در اینجا نیز با اعداد تک بایت یا کاراکتر نشان داده می شود.

آردوینو بسیار شگفت انگیز است ، و اگرچه می تواند مقادیر سینوسی را محاسبه کند ، اما ما به چیزی سریعتر نیاز داریم. ما مقادیر را از قبل محاسبه کرده و آنها را در یک آرایه طولانی 256 ورودی از یک بایت یا مقادیر char در برنامه خود قرار می دهیم (به اعلان SineTable […] در برنامه آردوینو مراجعه کنید).

مرحله 4: بیایید یک الگوی سه بعدی LIssajous بسازیم

بیایید یک الگوی سه بعدی LIssajous بسازیم
بیایید یک الگوی سه بعدی LIssajous بسازیم

برای دور زدن جدول با فرکانس متفاوت برای هر یک از سه رنگ ، ما یک شاخص را برای هر رنگ نگه می داریم و با مرور رنگ ها ، به هر شاخص ، افست های نسبتاً اولیه اضافه می کنیم. ما 2 ، 5 و 11 را بعنوان جبران نسبتاً اصلی مقادیر شاخص قرمز ، سبز و آبی انتخاب می کنیم. توانایی های ریاضی داخلی خود آردوینو با افزودن مقدار افست به هر شاخص به ما کمک می کند.

مرحله 5: همه اینها را روی آردوینو قرار دهید

همه اینها را روی آردوینو قرار دهید
همه اینها را روی آردوینو قرار دهید

اکثر آردوینوها دارای تعدادی کانال PWM (یا مدولاسیون عرض پالس) هستند. ما در اینجا به سه مورد نیاز داریم Arduino UNO برای این کار عالی است. حتی یک میکروکنترلر کوچک 8 بیتی Atmel (ATTiny85) فوق العاده کار می کند.

هر یک از کانال های PWM یک رنگ LED RGB را با استفاده از عملکرد "AnalogWrite" آردوینو هدایت می کند ، جایی که شدت رنگ در هر نقطه در اطراف چرخه سینوسی با عرض پالس یا چرخه وظیفه از 0 (همه خاموش) نشان داده می شود.) تا 255 (همه روشن است). چشمان ما این عرض های مختلف نبض را که به اندازه کافی سریع تکرار می شوند ، به عنوان شدت یا روشنایی های مختلف LED درک می کنند. با ترکیب هر سه کانال PWM که هریک از سه رنگ را در LED RGB هدایت می کنیم ، این قابلیت را داریم که 256*256*256 یا بیش از شانزده میلیون رنگ را نمایش دهیم!

شما باید Arduino IDE (محیط توسعه تعاملی) را راه اندازی کرده و آن را با استفاده از کابل USB آن به برد Arduino خود متصل کنید. جهش ها را از خروجی های PWM 3 ، 5 و 6 (پایه های پردازنده 5 ، 11 و 12) تا سه مقاومت 1 کیلو اهم (هزار اهم) روی برد اولیه یا محافظ اولیه خود و از مقاومت ها به LED R ، G اجرا کنید. ، و پین B

  • اگر LED RGB یک کاتد معمولی (ترمینال منفی) است ، سیم را از کاتد به پین GND در آردوینو باز کنید.
  • اگر LED RGB یک آند معمولی (ترمینال مثبت) است ، یک سیم را از آند به پشت به پین +5V در آردوینو منتقل کنید.

طرح آردوینو به هر صورت کار می کند. من به طور اتفاقی از یک LED کاتد معمولی SparkFun Electronics / COM-11120 RGB (در تصویر بالا ، از وب سایت SparkFun) استفاده کردم. طولانی ترین پین کاتد معمولی است.

طرح RGB-Instructable.ino را بارگیری کنید ، آن را با Arduino IDE باز کنید و آن را کامپایل کنید. مطمئن شوید که تخته یا تراشه Arduino را به درستی مشخص کرده اید ، سپس برنامه را در Arduino بارگذاری کنید. باید فوراً راه اندازی شود.

چرخه LED RGB را تا آنجا که می توانید نامگذاری کنید و میلیون ها را نمی توانید مشاهده کنید!

مرحله ششم: بعد چیست؟

ما به تازگی کاوش در RGB Color Color با آردوینو خود را آغاز کرده ایم. برخی از کارهای دیگری که من با این مفهوم انجام داده ام عبارتند از:

به جای استفاده از AnalogWrite ، مستقیماً روی ثبت های روی تراشه بنویسید تا واقعاً سرعت بخشید

  • تغییر مدار به گونه ای که حسگر مجاورت IR بسته به میزان نزدیک شدن شما ، چرخه را افزایش داده یا کند کند
  • برنامه نویسی میکروکنترلر Atmel ATTiny85 8 پین با بوت لودر آردوینو و این طرح

توصیه شده: