فهرست مطالب:

بهبود آردوینو LED حالت مکعب (ساده) (شامل ویدیو): 4 مرحله
بهبود آردوینو LED حالت مکعب (ساده) (شامل ویدیو): 4 مرحله

تصویری: بهبود آردوینو LED حالت مکعب (ساده) (شامل ویدیو): 4 مرحله

تصویری: بهبود آردوینو LED حالت مکعب (ساده) (شامل ویدیو): 4 مرحله
تصویری: EPS 7 DC Motor Series - Turbo Intercooler Fan Speed Management (Subtittled) 2024, جولای
Anonim
بهبود Arduino LED Mood Cube (ساده) (شامل ویدیو)
بهبود Arduino LED Mood Cube (ساده) (شامل ویدیو)

پس از دیدن پروژه LED کوچک مکعب خلق و خوی ایجاد شده توسط 'ارل ، تصمیم گرفتم نسخه بهبود یافته ای از Mood Cube LED را انجام دهم. نسخه من پیچیده تر از نسخه اصلی خواهد بود ، زیرا کمی بزرگتر از نسخه اصلی خواهد بود ، دارای دو رنگ بیشتر در مقایسه با مکعب اصلی (اضافه شده زرد و سفید) ، دارای چرخش نامحدود رنگ ها و غیره است. باید پروژه خوبی برای استفاده بیشتر از چراغ های LED برای کسانی باشد که مفهوم اتصال چراغ های LED با سیم را درک کرده اند.

مرحله 1: مواد

مواد
مواد
مواد
مواد

در اینجا برخی از مواد مورد نیاز برای ساخت این مکعب خلق آمده است:

  • تخته نان
  • آردوینو - (من لئوناردو را اینجا دارم)
  • منبع تغذیه آردوینو / کابل USB
  • تخته نان
  • Jumper Wires (بسیاری از آنها ، من از 29 سیم استفاده کردم)
  • LED قرمز x 2
  • LED آبی x 2
  • LED سبز x 2
  • LED زرد x 2
  • LED سفید x 1
  • 9 مقاومت
  • جعبه ای به اندازه کافی مناسب برای نان برد (من از جعبه کفش استفاده کردم)
  • ابزار چاقو
  • کاغذ

مرحله 2: کد

توضیحاتی در مورد کد ارائه شده در اینجا:

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

من همچنین نسخه ای از کد را در Arduino Creator دارم.

/* کد مربوط به محو شدن 3 LED ، قرمز ، سبز و آبی (RGB) برای ایجاد محو شدن ، باید دو کار را انجام دهید: 1. توصیف رنگ هایی که می خواهید نمایش داده شوند 2. ترتیب ترتیب مورد نظر برای محو شدن آنها را لیست کنید

توصیف یک رنگ:

یک رنگ فقط یک آرایه از سه درصد ، 0-100 است که LED های قرمز ، سبز و آبی را کنترل می کند

قرمز LED کامل قرمز ، آبی و سبز خاموش است

int red = {100، 0، 0} سفید کم نور هر سه LED در 30٪ int dimWhite = {30 ، 30 ، 30} و غیره است.

برخی از رنگهای رایج در زیر ارائه شده است ، یا خودتان آن را بسازید

لیست سفارش:

در قسمت اصلی برنامه ، باید ترتیبی را که می خواهید رنگ ها در آن ظاهر شوند ، ذکر کنید ، به عنوان مثال. crossFade (قرمز) ؛ crossFade (سبز) ؛ crossFade (آبی) ؛

آن رنگها به همان ترتیب ظاهر می شوند و از بین می روند

یک رنگ و به رنگ دیگر

علاوه بر این ، 5 تنظیم اختیاری وجود دارد که می توانید آنها را تنظیم کنید:

1. رنگ اولیه بر روی سیاه تنظیم شده است (بنابراین اولین رنگ کم رنگ می شود) ، اما می توانید رنگ اولیه را به هر رنگ دیگری تنظیم کنید. متغیر 'wait' مدت تقریبی یک crossfade را تعیین می کند. از لحاظ تئوری ، "انتظار" 10 میلی ثانیه باید 10 ثانیه cross را ایجاد کند. در عمل ، سایر عملکردهایی که کد انجام می دهد ، سرعت آن را تا 11 ثانیه کاهش می دهد. YMMV 3. اگر "repeat" روی 0 تنظیم شود ، برنامه به طور نامحدود حلقه می شود. اگر روی یک عدد تنظیم شود ، این تعداد بار حلقه می شود ، سپس روی آخرین رنگ دنباله متوقف می شود. ("بازگشت" را روی 1 قرار دهید ، و اگر می خواهید در انتها رنگ ناپدید شود ، آخرین رنگ را سیاه کنید.) 4. یک متغیر "نگه" اختیاری وجود دارد ، که برنامه را برای نگه داشتن "میلی ثانیه" هنگامی که یک رنگ است ، قرار می دهد. کامل است ، اما قبل از شروع رنگ بعدی. 5. اگر می خواهید خروجی اشکال زدایی به مانیتور سریال ارسال شود ، پرچم DEBUG را روی 1 تنظیم کنید.

داخلی برنامه پیچیده نیست ، اما آنها

کمی سر و صدا دارند - عملکرد داخلی در زیر حلقه اصلی توضیح داده شده است.

آوریل 2007 ، کلی شرکی

*

/ خروجی

int ylwPin = 5 ؛ // LED زرد ، متصل به پین دیجیتال 5 // 改 int redPin = 6؛ // LED قرمز ، متصل به پین دیجیتال 6 // 改 int grnPin = 7؛ // LED سبز ، متصل به پین دیجیتال 7 // 改 int bluPin = 8؛ // LED آبی ، متصل به پین دیجیتال 8 // 改 int whiPin = 9؛ // LED سفید ، متصل به پین دیجیتال 9 // 改 int ylwPin2 = 10؛ // LED زرد ، متصل به پین دیجیتال 10 // 改 int redPin2 = 11؛ // LED قرمز ، متصل به پین دیجیتال 11 // 改 int grnPin2 = 12؛ // LED سبز ، متصل به پین دیجیتال 12 // 改 int bluPin2 = 13؛ // LED آبی ، متصل به پین دیجیتال 13 // 改

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

int سیاه [9] = {0، 0، 0، 0، 0، 0، 0، 0، 0}؛ // 改 int سفید [9] = {100، 100، 100، 100، 100، 100، 100، 100، 100}؛ // 改 int قرمز [9] = {0، 0، 100، 0، 0، 0، 100، 0، 0}؛ // 改 int سبز [9] = {0، 100، 0، 0، 0، 0، 0، 100، 0}؛ // 改 int آبی [9] = {0، 0، 0، 100، 0، 0، 0، 0، 100}؛ // 改 int زرد [9] = {100 ، 0 ، 0 ، 0 ، 0 ، 100 ، 0 ، 0 ، 0} ؛ // 改 int purple [9] = {0، 50، 0، 50، 0، 0، 50، 0، 50}؛ // 改 int نارنجی [9] = {50 ، 50 ، 0 ، 0 ، 0 ، 50 ، 50 ، 0 ، 0} ؛ // 改 int pink [9] = {0، 50، 0، 0، 50، 0، 0، 50، 0،}؛ // 改 // و غیره

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

int redVal = سیاه [0]؛ int grnVal = سیاه [1]؛ int bluVal = سیاه [2]؛ int ylwVal = سیاه [3]؛ // 改 int whiVal = سیاه [4]؛ //

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

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

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

int prevR = redVal؛ int prevG = grnVal؛ int prevB = bluVal؛ int prevY = ylwVal؛ int prevW = whiVal؛ //

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

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

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

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

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

void loop () {crossFade (قرمز) ؛ crossFade (سبز) ؛ crossFade (آبی) ؛ crossFade (زرد) ؛ 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 - - -

قرمز در 10 مرحله از 0 به 10 افزایش می یابد ، سبز از آن

در 5 مرحله 0-5 ، و آبی در سه مرحله از 10 به 7 کاهش می یابد.

در برنامه واقعی ، درصد رنگ به تبدیل می شود

0-255 مقدار ، و 1020 مرحله (255*4) وجود دارد.

برای اینکه بفهمید یک گام بزرگ بین یک صعود یا بالا باید چقدر باشد

با پایین آوردن یکی از مقادیر 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 ) {// 改

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

int stepR = calcStep (prevR ، R) ؛

int stepG = calcStep (prevG ، G) ؛ int stepB = calcStep (prevB ، B) ؛ int stepY = calcStep (prevY ، Y) ؛ // step int stepW = calcStep (prevW ، W) ؛ //

برای (int i = 0؛ i <= 1020؛ i ++) {redVal = calcVal (stepR، redVal، i)؛ grnVal = calcVal (stepG ، grnVal ، i) ؛ bluVal = calcVal (stepB ، bluVal ، i) ؛ ylwVal = calcVal (stepY ، ylwVal ، i) ؛ // 改 whiVal = calcVal (stepW ، whiVal ، i) ؛ //

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

analogWrite (grnPin ، grnVal) ؛ analogWrite (bluPin ، bluVal) ؛ analogWrite (ylwPin ، ylwVal) ؛ // 改 analogWrite (whiPin ، whiVal) ؛ // 改 analogWrite (grnPin2 ، grnVal) ؛ // 改 analogWrite (bluPin2 ، bluVal) ؛ // 改 analogWrite (ylwPin2 ، ylwVal) ؛ // 改 analogWrite (redPin2 ، redVal) ؛ //

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

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

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

مرحله 3: تنظیم کنید

برپایی
برپایی
برپایی
برپایی
برپایی
برپایی
  1. تخته نان را بگیرید.
  2. نمایشی از سیم های اتصال دهنده به طوری که یک چراغ LED می تواند بدرخشد:

    1. LED را روی تخته نان بگذارید. انتهای بلندتر را در سمت چپ و انتهای کوتاه را در سمت راست قرار دهید.
    2. یک سر سیم جامپر را در نقطه ای قرار دهید که در انتهای بلندتر LED قرار دارد. انتهای دیگر را روی قسمت Digital PWM قرار دهید. در کد مشخص شده بود که LED های زرد باید به 10 و 5 ، قرمزها به 6 و 11 ، رنگهای آبی به 8 و 13 ، سبزها به 7 و 12 و در نهایت LED سفید به 9 متصل شوند.
    3. یک انتهای مقاومت را در انتهای کوتاهتر LED در همان ردیف قرار دهید. انتهای دیگر را در جایی نزدیک قرار دهید.
    4. انتهای یک سیم جامپر دیگر را با همان ردیف با انتهای مقاومت که در انتهای کوتاه تر LED قرار ندارد ، قرار دهید. انتهای دیگر سیم را روی ردیف بار منفی قرار دهید.
    5. انتهای یک سیم جامپر دیگر را روی ردیف بار منفی قرار دهید و انتهای دیگر آن را روی GND قرار دهید.
  3. مرحله 2 را 8 بار تکرار کنید تا 9 LED روشن شود
  4. تخته نان را داخل جعبه قرار دهید. چند یادآوری در اینجا:

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

توصیه شده: