ElectroBest
پیچھے

WS2812B ایڈریس ایبل ایل ای ڈی پٹی کو Arduino سے کیسے جوڑیں۔

اشاعت: 02.08.2021
0
2578

ایل ای ڈی پر مبنی لائٹنگ ٹیکنالوجی کی ترقی تیزی سے جاری ہے۔ کل یہ ایک معجزہ لگ رہا تھا کہ RGB ربن ایک کنٹرولر کے ذریعے کنٹرول کیا جاتا ہے، جس کی چمک اور رنگ کو ریموٹ کنٹرول کے ذریعے ایڈجسٹ کیا جا سکتا ہے۔ آج، مارکیٹ میں اور بھی زیادہ امکانات ہیں۔

WS2812B پر مبنی ایل ای ڈی کی پٹی

معیاری سے قابل شناخت ایل ای ڈی پٹی کے فرق آر جی بی یہ ہے کہ ہر عنصر کی چمک اور رنگ کا تناسب الگ سے ایڈجسٹ کیا جا سکتا ہے۔. یہ آپ کو روشنی کے اثرات حاصل کرنے کی اجازت دیتا ہے جو دیگر قسم کے لائٹنگ فکسچر کے لیے دستیاب نہیں ہیں۔ ایل ای ڈی کی پٹی کو ایک معروف طریقے سے کنٹرول کیا جاتا ہے - نبض کی چوڑائی ماڈیولیشن کے ذریعے۔ سسٹم کی خاصیت یہ ہے کہ ہر ایل ای ڈی کا اپنا پی ڈبلیو ایم کنٹرولر ہوتا ہے۔ WS2812B چپ ایک سہ رنگی روشنی خارج کرنے والا ڈائیوڈ اور ایک کنٹرول سرکٹ ہے، جو ایک پیکج میں ملا ہوا ہے۔

WS2812B ایڈریس ایبل ایل ای ڈی پٹی کو Arduino سے کیسے جوڑیں۔
ڈرائیور کے ساتھ ایل ای ڈی کی ظاہری شکل۔

عناصر کو متوازی طور پر پاور سپلائی پر ایک ٹیپ میں ملایا جاتا ہے، اور سیریل بس کے ذریعے کنٹرول کیا جاتا ہے - پہلے عنصر کا آؤٹ پٹ دوسرے کے کنٹرول ان پٹ سے منسلک ہوتا ہے، وغیرہ۔ زیادہ تر معاملات میں سیریل بسیں دو لائنوں پر بنتی ہیں، جن میں سے ایک سٹروب (مطابق پلس) منتقل کرتی ہے، اور دوسری - ڈیٹا۔

قابل شناخت پٹی کی ظاہری شکل۔
ایڈریس ٹیپ کی ظاہری شکل۔

WS2812B چپ کی کنٹرول بس ایک لائن پر مشتمل ہے - یہ ڈیٹا منتقل کرتی ہے۔ڈیٹا کو ایک مستقل فریکوئنسی کی دال کے طور پر انکوڈ کیا جاتا ہے، لیکن مختلف تعدد کے ساتھ۔ ایک نبض ایک سا ہے۔. ہر بٹ کا دورانیہ 1.25 µs ہے، صفر بٹ 0.4 µs کی اعلی سطح اور 0.85 µs کی کم سطح پر مشتمل ہے۔ یونٹ زیادہ 0.8 µs اور کم 0.45 µs لگتا ہے۔ 24 بٹس (3 بائٹس) کا ایک پارسل ہر ایل ای ڈی کو بھیجا جاتا ہے، اس کے بعد 50µs کے لیے کم لیول کی صورت میں ایک وقفہ ہوتا ہے۔ اس کا مطلب یہ ہے کہ اگلی ایل ای ڈی کے لیے ڈیٹا آگے منتقل کیا جائے گا، اور اسی طرح سلسلہ کے تمام عناصر کے لیے۔ ڈیٹا کی منتقلی 100 µs کے وقفے کے ساتھ ختم ہوتی ہے۔ اس کا مطلب ہے کہ ربن پروگرامنگ سائیکل مکمل ہو گیا ہے اور ڈیٹا پیکٹ کا اگلا سیٹ بھیجا جا سکتا ہے۔

ایڈریس ایبل ربن کے لیے ڈیٹا کو کنٹرول کریں۔
ایڈریس ٹیپ کنٹرول کے لیے ڈیٹا۔

یہ پروٹوکول ڈیٹا کی ترسیل کے لیے ایک لائن کی اجازت دیتا ہے، لیکن اس کے لیے درست وقت کی ضرورت ہوتی ہے۔ تضاد 150 این ایس سے زیادہ نہیں ہے۔ اس کے علاوہ اس بس کی شور کی قوت مدافعت بہت کم ہے۔ کافی طول و عرض کی کسی بھی مداخلت کو کنٹرولر ڈیٹا کے طور پر سمجھا جا سکتا ہے۔ یہ کنٹرول سرکٹری سے تاروں کی لمبائی پر پابندیاں عائد کرتا ہے۔ دوسری طرف، یہ کرنے کی صلاحیت فراہم کرتا ہے اس بات کی تصدیق کرنے کے لیے کہ ربن اضافی آلات کے بغیر۔ اگر آپ لیومینیئر پر پاور لگاتے ہیں اور کنٹرول بس کے کانٹیکٹ پیڈ کو اپنی انگلی سے چھوتے ہیں، تو کچھ LEDs افراتفری سے آن اور آف ہو سکتی ہیں۔

WS2812B عناصر کی تکنیکی خصوصیات

ایڈریس ایبل ربن کی بنیاد پر لائٹنگ سسٹم بنانے کے لیے روشنی خارج کرنے والے عناصر کے اہم پیرامیٹرز کو جاننا ضروری ہے۔

ایل ای ڈی کے طول و عرض5x5 ملی میٹر
PWM ماڈیولیشن فریکوئنسی400 ہرٹج
زیادہ سے زیادہ چمک پر موجودہ کھپت60 ایم اے فی عنصر
بجلی کی سپلائی5 وولٹ
ماہر کی نصیحت
luminaire کی طرف سے استعمال کی طاقت کافی زیادہ ہے. اس کا تعین نہ صرف گلو p-n جنکشن شروع کرنے کے لیے درکار کرنٹ سے ہوتا ہے بلکہ PWM کی تشکیل میں سوئچنگ نقصانات سے بھی ہوتا ہے۔ 15 عناصر کے جال کے لیے، پاور سپلائی اور کنڈکٹرز کو کم از کم 1 ایم پی کے کرنٹ کے لیے ڈیزائن کیا گیا ہے۔

Arduino اور WS2812B

دنیا میں مقبول Arduino پلیٹ فارم آپ کو قابل شناخت ربن کو کنٹرول کرنے کے لیے خاکے (پروگرام) بنانے کی اجازت دیتا ہے۔ سسٹم کی صلاحیتیں کافی وسیع ہیں، لیکن اگر کسی سطح پر وہ اب کافی نہیں ہیں، تو حاصل کردہ مہارتیں بغیر کسی رکاوٹ کے C++ یا اسمبلر پر جانے کے لیے کافی ہوں گی۔ اگرچہ، Arduino پر بنیادی معلومات حاصل کرنا آسان ہے۔

WS2812B پر مبنی ربن کو Arduino Uno (نانو) سے جوڑنا

پہلے مرحلے پر، ایک سادہ Arduino Uno یا Arduino Nano بورڈ کافی ہے۔ بعد میں، زیادہ پیچیدہ نظاموں کی تعمیر کے لیے زیادہ پیچیدہ بورڈز استعمال کیے جا سکتے ہیں۔ ایڈریس ایبل ایل ای ڈی پٹی کو جسمانی طور پر Arduino بورڈ سے جوڑتے وقت، آپ کو یہ یقینی بنانا ہوگا کہ چند شرائط پوری ہوئی ہیں:

  • کم شور سے استثنیٰ کی وجہ سے، ڈیٹا لائن کنکشن کنڈکٹرز کو جتنا ممکن ہو چھوٹا ہونا چاہیے (آپ کو انہیں 10 سینٹی میٹر کے اندر بنانے کی کوشش کرنی چاہیے)؛
  • ڈیٹا وائر کو Arduino بورڈ کے مفت ڈیجیٹل آؤٹ پٹ سے جوڑیں - یہ بعد میں سافٹ ویئر کے ذریعے اشارہ کیا جائے گا۔
  • زیادہ بجلی کی کھپت کی وجہ سے بورڈ سے پٹی کو پاور کرنا ضروری نہیں ہے - اس مقصد کے لیے علیحدہ بجلی فراہم کی جاتی ہے۔

luminaire اور Arduino کے مشترکہ پاور سپلائی تار کو جوڑنا ضروری ہے۔

WS2812B وائرنگ ڈایاگرام۔
WS2812B ربن وائرنگ ڈایاگرام۔

یہ بھی پڑھیں

ایل ای ڈی کو آرڈوینو بورڈ سے کیسے جوڑیں۔

 

WS2812B سافٹ ویئر کنٹرول کے بنیادی اصول

یہ پہلے ہی ذکر کیا جا چکا ہے کہ WS2812B چپس کو کنٹرول کرنے کے لیے آپ کو ایک خاص لمبائی کے ساتھ دالیں بنانے کی ضرورت ہے، اعلی درستگی کو برداشت کرتے ہوئے۔ Arduino زبان میں مختصر دالیں بنانے کے احکامات ہیں۔ مائیکرو سیکنڈ میں تاخیر اور مائیکرو. مسئلہ یہ ہے کہ ان کمانڈز کی ریزولوشن 4 مائیکرو سیکنڈز ہے۔ یعنی، دی گئی درستگی کے ساتھ وقت کی تاخیر کو تشکیل دینا ممکن نہیں ہے۔ C++ یا اسمبلر ٹولز پر جانا ضروری ہے۔ خاص طور پر اس مقصد کے لیے بنائی گئی لائبریریوں کی مدد سے Arduino کے ذریعے ایڈریس ایبل LED پٹی کو کنٹرول کرنا ممکن ہے۔ آپ پروگرام Blink کے ساتھ شروع کر سکتے ہیں، جو روشنی خارج کرنے والے عناصر کو جھپکتا ہے۔

فاسٹ لیڈ

یہ لائبریری یونیورسل ہے۔ ایڈریس ایبل ربن کے علاوہ، یہ بہت سے آلات کو سپورٹ کرتا ہے بشمول SPI کنٹرولڈ ربن۔ اس میں خصوصیات کی ایک وسیع رینج ہے۔

سب سے پہلے آپ کو لائبریری کو جوڑنا ہوگا۔ یہ سیٹ اپ بلاک سے پہلے کیا جاتا ہے، اور تار اس طرح لگتا ہے:

#شامل

اگلا مرحلہ ہر روشنی خارج کرنے والے ڈایڈڈ کے رنگوں کو ذخیرہ کرنے کے لیے ایک صف بنانا ہے۔ اس میں 15 عناصر کی نام کی پٹی اور طول و عرض ہوگا۔

CRGB پٹی[15]

سیٹ اپ بلاک میں آپ کو ربن کی وضاحت کرنی ہوگی جس کے ساتھ اسکرپٹ کام کرے گا:

باطل سیٹ اپ() {

FastLED.addLeds<WS2812B, 7, RGB>(پٹی، 15)؛

int g;

}

RGB پیرامیٹر رنگوں کی ترتیب کا تعین کرتا ہے، 15 کا مطلب ہے LEDs کی تعداد، 7 کنٹرول کے لیے تفویض کردہ آؤٹ پٹ کی تعداد ہے (یہ بہتر ہے کہ آخری پیرامیٹر کو بھی مستقل تفویض کیا جائے)۔

لوپ بلاک ایک لوپ سے شروع ہوتا ہے جو ترتیب وار سرخ (سرخ چمک) صف کے ہر حصے کو لکھتا ہے:

کے لیے (g=0; g<15;g++)

{strip[g]=CRGB::Red;}

پھر تیار کردہ صف کو الیومینیٹر کو بھیجا جاتا ہے:

FastLED.show();

تاخیر 1000 ملی سیکنڈز (سیکنڈ):

تاخیر (1000)؛

پھر آپ تمام عناصر کو اسی طرح بند کر سکتے ہیں، ان میں سیاہ لکھ کر۔

کے لیے (int g=0; g<15;g++)

{strip[g]=CRGB::Black;}

FastLED.show();

تاخیر (1000)؛

FastLed کی بنیاد پر چمکتی ہوئی پٹی کے لیے خاکہ۔
فاسٹ لیڈ پر مبنی چمکتی پٹی کا خاکہ۔

خاکہ مرتب کرنے اور لوڈ کرنے کے بعد ربن 2 سیکنڈ کی مدت کے ساتھ چمکے گا۔ اگر آپ ہر رنگ کے اجزاء کو الگ الگ کنٹرول کرنا چاہتے ہیں، تو سٹرنگ کے بجائے {strip[g]=CRGB::Red;} کئی تار استعمال کیے جاتے ہیں:

{

پٹی[g].r=100؛// سرخ عنصر کی luminescence لیول سیٹ کریں۔

پٹی[g].g=11؛// سبز کے لئے ایک ہی

پٹی[g].b=250؛// نیلے کے لئے ایک ہی

}

NeoPixel

یہ لائبریری صرف NeoPixel Ring LEDs کے ساتھ کام کرتی ہے، لیکن یہ کم وسائل کی حامل ہے اور اس میں صرف ضروری چیزیں ہیں۔ Arduino میں پروگرام اس طرح لگتا ہے:

#شامل

جیسا کہ پچھلے کیس میں، لائبریری پلگ ان ہے، اور لینٹا آبجیکٹ کا اعلان کیا گیا ہے:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// جہاں 15 عناصر کی تعداد ہے اور 6 تفویض کردہ آؤٹ پٹ ہے۔

لینٹا کو سیٹ اپ بلاک میں شروع کیا گیا ہے:

باطل سیٹ اپ() {

lenta.begin ()

}

لوپ بلاک میں تمام عناصر کو سرخ رنگ میں روشن کیا جاتا ہے، ایک متغیر کو ٹیپ میں منتقل کیا جاتا ہے اور 1 سیکنڈ کی تاخیر پیدا ہوتی ہے:

کے لیے (int y=0؛ y<15;y++)// 15 - luminaire میں عناصر کی تعداد

{lenta.setPixelColor(y, lenta.Color(255,0,0))}؛

lenta.show();

تاخیر (1000)؛

لینٹا سیاہ لکھ کر چمکنا بند کر دیتا ہے:

کے لیے (int y=0؛ y<15;y++)

{lenta.setPixelColor(y, lenta.Color(0,0,0))};

lenta.show();

تاخیر (1000)؛

NeoPixel پر مبنی Blink پروگرام کے لیے خاکہ۔
NeoPixel پر مبنی Blink پروگرام کے لیے ایک خاکہ۔

ویڈیو سبق: ایڈریس ایبل ربن کا استعمال کرتے ہوئے بصری اثرات کے نمونے۔

ایل ای ڈی فلیش کرنے کا طریقہ سیکھنے کے بعد، آپ اس سبق کو جاری رکھ سکتے ہیں اور ہموار ٹرانزیشن کے ساتھ مقبول "رینبو" اور "ناردرن لائٹس" سمیت رنگین اثرات پیدا کرنے کا طریقہ سیکھ سکتے ہیں۔ WS2812B اور Arduino ایڈریس ایبل ایل ای ڈی آپ کو اس کے لیے تقریباً لامحدود امکانات فراہم کرتے ہیں۔

تبصرے:
ابھی تک کوئی تبصرہ نہیں پہلے بنیں!

پڑھنے کے لیے نکات

خود سے ایل ای ڈی لائٹ فکسچر کی مرمت کیسے کریں۔