راه اندازی RGB با بلوک دوینو

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

مقدمه

در این بخش می خواهیم راه اندازی RGB با بلوک دوینو را انجام بدیم RGB در واقع سه رنگ قرمز ، سبز و آبی تولید میکند که البته امکان اضافه کردن رنگ های بیشتر به آن وجود دارد در ابتدا شکل و پایه های یک RGB  را بررسی می کنیم.

 

راه اندازی RGB

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

  راه اندازی بازر با بلوک دوینو

راه اندازی RGB

شماتیک پروژه

در ابتدا شماتیک پروژه را با fritzing طراحی کردیم که در تصویر زیر مشخص است، ما در این پروژه قصد داریم از pwm استفاده کنیم برای این کار پورت 9 و 11 ماژول uno را انتخاب کردیم .

 

 

راه اندازی RGB

برنامه نویسی پروژه در بلوک دینو

برای برنامه نویسی و راه اندازی RGBشما باید ابتدا وارد بخش grove شوید در مورد این بخش در مطلب قبلی توضیح دادیم حالا قصد داریم ماژول RGBرا  مثل تصویر زیر انتخاب کنیم.

راه اندازی RGB با بلوک دوینو

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

  راه اندازی آنالوگ به دیجیتال آردوینو و سنسور LM35

بعد از انتخاب رنگ ها به روش بالا حالا شما نیاز دارید در برنامه خود یک تابع تعریف کنید تا بتوانید خروجی آنالوگ ماژول را برای سه رنگ اصلی نمایش دهید برای تعریف تابع کافی است شما به تب function بروید و تابع را انتخاب کنید

راه اندازی RGB با بلوک دوینو

در تصویر بالا ما نیازی به استفاده از تابع بازگشتی (return) نداریم بنا بر این بلوک اول را انتخاب می کنیم اکنون وقت کانفیگ بلوک مورد نظر است برای کانفیگ کافی است یکبار روی تنطیمات کلیک کنید و مانند تصویر زیر ورودی ها را انتخاب کنید.

راه اندازی RGB

اگر بخواهیم برنامه بالا را بررسی کنیم تا اینجا مازول توسط خود پلتفرم کانفیگ شده ما تابع تعریف کردیم که بتوانیم سه رتگ اصلی را با pwm دریافت کنیم همانطور که حدس میزنید ما نیاز داریم خروجی آنالوگ را مشخص کنیم برای این کار به تب input/output می روید و تابع analogWriteرا انتخاب می کنید.

  آردوینو را از کجا شروع کنیم

سورس کد خروجی برنامه بالا به شکل زیر می باشد.راه اندازی RGB با بلوک دوینو

سورس کد خروجی

#define uint8 unsigned char
#define uint16 unsigned int
#define uint32 unsigned long int
void ClkProduce_9(void)
{
digitalWrite(9, LOW);
delayMicroseconds(20);
digitalWrite(9, HIGH);
delayMicroseconds(20);
}

void Send32Zero_9(void)
{
uint8 i;
for (i=0; i<32; i++)
{
digitalWrite(10, LOW);
ClkProduce_9();
}
}

uint8 TakeAntiCode(uint8 dat)
{
uint8 tmp = 0;
if ((dat & 0x80) == 0)
{
tmp |= 0x02; //bitwize oratore//
}

if ((dat & 0x40) == 0)
{
tmp |= 0x01; // bitwize orprator//
}
return tmp;
}

// gray data
void DatSend_9(uint32 dx)
{
uint8 i;
for (i=0; i<32; i++)
{
if ((dx & 0x80000000) != 0)
{
digitalWrite(10, HIGH);
}
else
{
digitalWrite(10, LOW);
}
dx <<= 1;
ClkProduce_9();
}
}

// data processing
void DataDealWithAndSend_9(uint8 r, uint8 g, uint8 b)
{
uint32 dx = 0;
dx |= (uint32)0x03 << 30; // highest two bits 1,flag bits
dx |= (uint32)TakeAntiCode(b) << 28;
dx |= (uint32)TakeAntiCode(g) << 26;
dx |= (uint32)TakeAntiCode(r) << 24;

dx |= (uint32)b << 16;
dx |= (uint32)g << 8;
dx |= r;

DatSend_9(dx);
}

void loop(){
Send32Zero_9(); // begin
DataDealWithAndSend_9(255, 0, 0); // red color//
DataDealWithAndSend_9(0, 255, 0); // green color//
DataDealWithAndSend_9(102, 255, 255); // blue color//
DataDealWithAndSend_9(102, 51, 0); // brown color//
DataDealWithAndSend_9(204, 51, 204); // pincal color//
Send32Zero_9(); // send to update data
}

void setup()
{
pinMode(11, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}

void set_color(int redValue, int greenValue, int blueValue) {
analogWrite(9, redValue);
analogWrite(10, greenValue);
analogWrite(11, blueValue);
}
tags, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
تبدیل میکروکنترلر AVR به Arduino
راه اندازی ماژول PIR با بلوک دوینو

برای حمایت از ما! لطفا این مطلب را به اشتراک بگذارید

پست های مرتبط

8 دیدگاه. ارسال دیدگاه جدید

  • خداداد
    1399-02-28 01:37

    سلام میتونیم به ۱۵RGB تا رنگ اضافه کنیم؟
    در ضمن مطالبتون بد نیست

    پاسخ
    • محمدرضا هلالی
      1399-02-29 20:11

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

      پاسخ
  • میثم
    1399-02-28 01:38

    سلام مطالبتون خوشحالم کرد تونستم بزارم ولی چرا نورش کمه؟

    پاسخ
    • علی حفیظی
      1399-02-28 15:46

      سلام میم عزیز

      باعث خشنودی هستش.
      نور کجا کمه؟

      پاسخ
  • میثم
    1399-02-28 16:08

    نور LED RGB کمه و در ضمن LED درسته چرا خوب و من با توجه به مطالب اینکارو کردم

    پاسخ
  • مصطفی
    1401-02-20 19:05

    با سلام بنده رنگ بیشتر را میخواستم درست بکنم با این ال ای دی ار جی بی ، ولی رنگها خوب ترکیب نمیشن تو ال ای دی مثلا رنگ قهوه‌ای یا زرد یا خاکستری راخوب نمایش نمیده ، مثل تلویزیون که قشنگ ترکیب هر رنگ بوجود میاره اصلا خوب نیست ترکیب رنگ ، آیا راهی داره تو سایت نوشته بود می‌شود از ار جی بی هر رنگی را بدست آورد با ترکیب این سه رنگ پس چرا نمیشه ممنون

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست
خانه
درباره ما
ارتباط با ما
جستجو