فهرست مطالب:

درخت مارپیچ LED: 4 مرحله (همراه با تصاویر)
درخت مارپیچ LED: 4 مرحله (همراه با تصاویر)

تصویری: درخت مارپیچ LED: 4 مرحله (همراه با تصاویر)

تصویری: درخت مارپیچ LED: 4 مرحله (همراه با تصاویر)
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, جولای
Anonim
درخت مارپیچ LED
درخت مارپیچ LED
درخت مارپیچ LED
درخت مارپیچ LED
درخت مارپیچ LED
درخت مارپیچ LED

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

مرحله 1: کنترل کننده

کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده

تصمیم گرفتم از led های RGB غیر آدرس پذیر استفاده کنم. این بدان معناست که من می توانم یک اثر برنامه ریزی شده داشته باشم اما همه LED ها به طور همزمان تغییر رنگ می دهند. این همچنین بدان معنی است که به یک کنترل کننده نیاز است. من می توانستم از arduino uno استفاده کنم و آزمایشات اولیه را با استفاده از سپر RGB انجام دادم اما در نهایت از یک تخته سفارشی با تراشه برهنه Atmega328 استفاده کردم. فقط باید برنامه نویس مورد نظر را تغییر دهید و تراشه را مستقیماً برنامه ریزی کنید.

تعداد زیادی از این تخته ها از پروژه های دیگر لامپ باقی مانده بود. در صورت تمایل می توانید از یک کنترلر ارزان قیمت از پیش برنامه ریزی شده مانند من روی چتر خود استفاده کنید.

در نهایت از یک نسخه ی نمایشی آهسته crossfade به عنوان پایه درخت استفاده کردم.

/** کد رنگ آمیزی 3 LED ، قرمز ، سبز و آبی (RGB) * برای ایجاد محو شدن ، باید دو کار را انجام دهید: * 1. توصیف رنگ هایی که می خواهید نمایش داده شوند * 2. فهرست ترتیب مورد نظر * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * قرمز = {100 ، 0 ، 0} * سفید کم رنگ هر سه LED در 30٪ * int dimWhite = {30 ، 30 ، 30} * و غیره * * برخی از رنگهای رایج در زیر ارائه شده است ، یا خودتان * * لیست سفارش: * در قسمت اصلی برنامه ، باید ترتیب * مورد نظر خود را در لیست مورد نظر قرار دهید ، به عنوان مثال * crossFade (قرمز) ؛ * crossFade (سبز) ؛ * crossFade (آبی) ؛ * * آن رنگها به ترتیب نمایش داده می شوند ، از یک رنگ به رنگ دیگر محو می شوند * * علاوه بر این ، 5 تنظیم اختیاری وجود دارد که می توانید تنظیم کنید: * 1. رنگ اولیه روی سیاه تنظیم شده است (بنابراین اولین رنگ محو می شود در) ، اما * می توانید رنگ اولیه را به هر رنگ دیگری تنظیم کنید * 2. حلقه داخلی برای 1020 ادغام اجرا می شود. متغیر 'wait' مدت زمان تقریبی یک crossfade را تعیین می کند. از نظر تئوری ، * "انتظار" 10 میلی ثانیه ای باید 10 ثانیه cross متقاطع ایجاد کند. در عمل * ، سایر عملکردهای کد با سرعت پایین * تا seconds 11 ثانیه در برد من انجام می شود. YMMV * 3. اگر "repeat" روی 0 تنظیم شود ، برنامه به طور نامحدود حلقه می شود. * اگر روی یک عدد تنظیم شود ، این تعداد بار حلقه می شود ، * سپس روی آخرین رنگ دنباله متوقف شوید. ("بازگشت" را روی 1 ، * قرار دهید و آخرین رنگ را سیاه کنید اگر می خواهید در پایان محو شود.) یک رنگ کامل است ، * اما قبل از شروع رنگ بعدی. * 5. اگر می خواهید خروجی اشکال زدایی * به مانیتور سریال ارسال شود ، پرچم DEBUG را روی 1 تنظیم کنید. * * قسمت داخلی برنامه پیچیده نیست ، اما * اندکی آشفته است - عملکردهای داخلی در زیر حلقه اصلی توضیح داده شده است. * * آوریل 2007 ، کلی شرکی *

/ خروجی

int grnPin = 9؛ // LED سبز ، متصل به پین دیجیتال 10 int redPin = 10؛ // LED قرمز ، متصل به پین دیجیتال 9 int bluPin = 11؛ // LED آبی ، متصل به پین دیجیتال 11

// آرایه های رنگی

int سیاه [3] = {0 ، 0 ، 0} ؛ int سفید [3] = {100 ، 100 ، 100} ؛ int قرمز [3] = {100 ، 0 ، 0} ؛ int سبز [3] = {0 ، 100 ، 0} ؛ int blue [3] = {0، 0، 100}؛ int زرد [3] = {40 ، 95 ، 0} ؛ int dimWhite [3] = {30 ، 30 ، 30} ؛ // و غیره.

// تنظیم رنگ اولیه

int redVal = سیاه [0]؛ int grnVal = سیاه [1]؛ int bluVal = سیاه [2]؛

int انتظار = 3؛ // 10 میلی ثانیه تاخیر crossFade داخلی ؛ افزایش می یابد تا کندتر محو شود

int hold = 0؛ // هنگامی که رنگ کامل شد ، قبل از crossFade int DEBUG = 0 نگه دارید. // شمارنده DEBUG ؛ اگر روی 1 تنظیم شود ، مقادیر را از طریق سریال int loopCount = 60 باز می گرداند ؛ // DEBUG هر چند وقت یکبار باید گزارش دهد؟ int تکرار = 0؛ // قبل از توقف چند بار باید حلقه کنیم؟ (0 بدون توقف) int j = 0؛ // حلقه شمارنده برای تکرار

// مقداردهی اولیه متغیرهای رنگ

int prevR = redVal؛ int prevG = grnVal؛ int prevB = bluVal؛

// خروجی های LED را تنظیم کنید

void setup () {pinMode (redPin ، OUTPUT) ؛ // پین ها را به عنوان pinMode خروجی (grnPin ، OUTPUT) تنظیم می کند ؛ pinMode (bluPin ، OUTPUT) ؛

if (DEBUG) {// اگر می خواهیم مقادیری را برای اشکال زدایی ببینیم…

Serial.begin (9600)؛ //… تنظیم خروجی سریال}}

// برنامه اصلی: ترتیب مرتفع سازی ها را لیست کنید

void loop () {crossFade (قرمز) ؛ crossFade (سبز) ؛ crossFade (آبی) ؛ crossFade (زرد) ؛

if (تکرار) {// آیا تعداد محدودی بار حلقه می کنیم؟

j += 1 ؛ if (j> = تکرار) {// آیا هنوز آنجا هستیم؟ خروج (j) ؛ // اگر چنین است ، متوقف شوید. }}}

/* در زیر این خط ریاضی است - شما نباید برای اصول اولیه این را تغییر دهید

* * برنامه به این شکل عمل می کند: * یک crossfade را تصور کنید که 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 مرحله از 10 به 7 کاهش می یابد. * * در برنامه واقعی ، درصد رنگها به مقادیر 0-255 * تبدیل می شوند و 1020 مرحله (4 * 255) وجود دارد. * * برای درک اینکه یک گام بین یک تیک بالا یا * پایین یکی از مقادیر LED باید وجود داشته باشد ، ما CalcStep () را * می نامیم ، * که فاصله مطلق بین مقادیر شروع و پایان را محاسبه می کند ، * و سپس این فاصله را بر 1020 تقسیم می کند تا اندازه مرحله * بین تنظیمات در مقدار مشخص شود. */

int calcStep (int prevValue ، int endValue) {

int step = endValue - prevValue؛ // فاصله کلی چقدر است؟ if (مرحله) {// اگر غیر صفر باشد ، مرحله = 1020/step ؛ // تقسیم بر 1020} مرحله بازگشت ؛ }

/* تابع بعدی calcVal است. وقتی مقدار حلقه ، i ،

* به اندازه مرحله مناسب برای یکی از * رنگها می رسد ، مقدار آن رنگ را 1 برابر افزایش یا کاهش می دهد. * (R ، G و B هر کدام جداگانه محاسبه می شوند.) */

int calcVal (مرحله int ، int val ، int i) {

if ((گام) && i٪ step == 0) {// اگر مرحله غیر صفر است و زمان تغییر مقدار آن فرا رسیده است ،

if (مرحله> 0) {// اگر مرحله مثبت است مقدار را افزایش دهید … val += 1؛ } else if (مرحله 255) {val = 255؛ } else if (val <0) {val = 0؛ } val Value؛ }

/* crossFade () درصد رنگها را به a تبدیل می کند

* محدوده 0-255 ، سپس 1020 بار حلقه می کند ، بررسی می کند که آیا * مقدار باید هر بار به روز شود ، سپس مقادیر رنگ * را در پین های صحیح بنویسید. */

void crossFade (رنگ int [3]) {

// تبدیل به 0-255 int R = (رنگ [0] * 255) / 100 ؛ int G = (رنگ [1] * 255) / 100 ؛ int B = (رنگ [2] * 255) / 100 ؛

int stepR = calcStep (prevR ، R) ؛

int stepG = calcStep (prevG ، G) ؛ int stepB = calcStep (prevB ، B) ؛

برای (int i = 0؛ i <= 1020؛ i ++) {redVal = calcVal (stepR، redVal، i)؛ grnVal = calcVal (stepG ، grnVal ، i) ؛ bluVal = calcVal (stepB ، bluVal ، i) ؛

analogWrite (redPin ، redVal) ؛ // مقادیر فعلی را برای پین های LED بنویسید

analogWrite (grnPin ، grnVal) ؛ analogWrite (bluPin ، bluVal) ؛

تأخیر (صبر) ؛ // قبل از از سرگیری حلقه ، چند ثانیه صبر کنید

if (DEBUG) {// اگر خروجی سریال می خواهیم ، آن را در

if (i == 0 یا i٪ loopCount == 0) {// ابتدا ، و هر loopCount بار Serial.print ("Loop/RGB: #") ؛ Serial.print (i) ؛ Serial.print ("|")؛ Serial.print (redVal) ؛ Serial.print (" /") ؛ Serial.print (grnVal) ؛ Serial.print (" /") ؛ Serial.println (bluVal) ؛ } DEBUG += 1؛ }} // به روز رسانی مقادیر جاری برای حلقه بعدی prevR = redVal؛ prevG = grnVal؛ prevB = bluVal؛ تأخیر (نگه داشتن) ؛ // قبل از از سرگیری حلقه ، میلی ثانیه اختیاری را منتظر بمانید}

مرحله 2: بسته بندی درخت

پیچیدن درخت
پیچیدن درخت
پیچیدن درخت
پیچیدن درخت
پیچیدن درخت
پیچیدن درخت
پیچیدن درخت
پیچیدن درخت

من از نوارهای ضد آب استفاده کردم زیرا اینها در خارج از منزل هستند. آنها خود به خود می چسبیدند ، اما من به سرعت با سیم کشی پیگیری کردم تا از ثابت ماندن آنها اطمینان حاصل کنم. هک ساده و آسان. قابلیت تغذیه نوار نوار ، تغذیه منبع تغذیه را به پایین و انتقال نیرو به بالا به ستاره را آسان کرده است.

مرحله 3: ستاره بالا را فراموش نکنید

ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید
ستاره بالا را فراموش نکنید

برای ستاره از یک جفت تراشه 10 واتی برای جلب توجه استفاده کردم. آنها را به عنوان یک هیت سینک روی یک صفحه مس لحیم کردم. من می توانستم از نوار بیشتری استفاده کنم زیرا مقدار کمی باقی مانده بود.

مرحله 4: آزمایش آن

Image
Image

اولین تلاش سرعت بسیار زیاد بود….

وقتی آرامش کردم خیلی خوب به نظر می رسید.

توصیه شده: