কীভাবে অ্যাড্রেসযোগ্য LED স্ট্রিপ WS2812B কে Arduino এর সাথে সংযুক্ত করবেন
LEDs উপর ভিত্তি করে আলো প্রযুক্তির উন্নয়ন দ্রুত অব্যাহত। ঠিক গতকাল, কন্ট্রোলার-নিয়ন্ত্রিত আরজিবি ফিতা, যার উজ্জ্বলতা এবং রঙ একটি রিমোট কন্ট্রোল ব্যবহার করে সামঞ্জস্য করা যেতে পারে, এটি একটি অলৌকিক ঘটনা বলে মনে হয়েছিল। আজ, বাজারে আরও বেশি বৈশিষ্ট্য সহ ল্যাম্প উপস্থিত হয়েছে।
WS2812B এর উপর ভিত্তি করে LED স্ট্রিপ
ঠিকানাযোগ্য LED স্ট্রিপ এবং স্ট্যান্ডার্ডের মধ্যে পার্থক্য আরজিবি ব্যাপারটা হলো প্রতিটি উপাদানের উজ্জ্বলতা এবং রঙের অনুপাত আলাদাভাবে সামঞ্জস্য করা হয়. এটি আপনাকে আলোক প্রভাবগুলি পেতে দেয় যা অন্যান্য ধরণের আলো ডিভাইসের জন্য মৌলিকভাবে অ্যাক্সেসযোগ্য নয়। ঠিকানাযোগ্য LED স্ট্রিপের আভা একটি পরিচিত উপায়ে নিয়ন্ত্রিত হয় - পালস-প্রস্থ মড্যুলেশন ব্যবহার করে। সিস্টেমের একটি বৈশিষ্ট্য হল প্রতিটি LED এর নিজস্ব PWM কন্ট্রোলার দিয়ে সজ্জিত করা। WS2812B চিপ একটি ত্রি-রঙা আলো নির্গত ডায়োড এবং একটি একক প্যাকেজে মিলিত একটি নিয়ন্ত্রণ সার্কিট।

উপাদানগুলি সমান্তরালভাবে একটি পাওয়ার টেপে একত্রিত হয় এবং একটি সিরিয়াল বাসের মাধ্যমে নিয়ন্ত্রিত হয় - প্রথম উপাদানটির আউটপুট দ্বিতীয়টির নিয়ন্ত্রণ ইনপুটের সাথে সংযুক্ত থাকে ইত্যাদি। বেশিরভাগ ক্ষেত্রে, সিরিয়াল বাস দুটি লাইনে নির্মিত হয়, যার মধ্যে একটি স্ট্রোব (ঘড়ির ডাল) প্রেরণ করে এবং অন্যটি ডেটা।

WS2812B চিপের কন্ট্রোল বাসে একটি লাইন থাকে - এর মাধ্যমে ডেটা প্রেরণ করা হয়। ডেটা ধ্রুবক ফ্রিকোয়েন্সির ডাল হিসাবে এনকোড করা হয়, কিন্তু বিভিন্ন ডিউটি চক্রের সাথে। এক নাড়ি - এক বিট. প্রতিটি বিটের সময়কাল হল 1.25 µs, শূন্য বিট 0.4 µs এবং নিম্ন স্তরের 0.85 µs সহ একটি উচ্চ স্তর নিয়ে গঠিত। ইউনিটটি 0.8 µs এর জন্য একটি উচ্চ স্তরের এবং 0.45 µs-এর জন্য একটি নিম্ন স্তরের মতো দেখাচ্ছে৷ একটি 24-বিট (3-বাইট) বিস্ফোরণ প্রতিটি এলইডিতে পাঠানো হয়, তারপরে 50 µs এর জন্য একটি নিম্ন-স্তরের বিরতি দেওয়া হয়। এর মানে হল যে পরবর্তী LED-এর জন্য ডেটা প্রেরণ করা হবে, এবং তাই চেইনের সমস্ত উপাদানগুলির জন্য। ডাটা ট্রান্সফার 100 µs বিরতি দিয়ে শেষ হয়। এটি নির্দেশ করে যে টেপ প্রোগ্রামিং চক্র সম্পূর্ণ হয়েছে এবং পরবর্তী ডেটা প্যাকেট পাঠানো যেতে পারে।

এই ধরনের প্রোটোকল ডেটা ট্রান্সমিশনের জন্য এক লাইন দিয়ে যাওয়া সম্ভব করে, কিন্তু সময়ের ব্যবধান বজায় রাখার জন্য সঠিকতা প্রয়োজন। পার্থক্য 150 এনএসের বেশি অনুমোদিত নয়। উপরন্তু, এই ধরনের বাসের শব্দ প্রতিরোধ ক্ষমতা খুব কম। পর্যাপ্ত প্রশস্ততার কোনো হস্তক্ষেপ নিয়ামক দ্বারা ডেটা হিসাবে অনুভূত হতে পারে। এটি কন্ট্রোল সার্কিট থেকে কন্ডাক্টরের দৈর্ঘ্যের উপর সীমাবদ্ধতা আরোপ করে। অন্যদিকে, এটি এটি সম্ভব করে তোলে ফিতা স্বাস্থ্য পরীক্ষা অতিরিক্ত ডিভাইস ছাড়া।আপনি যদি বাতিতে শক্তি প্রয়োগ করেন এবং আপনার আঙুল দিয়ে কন্ট্রোল বাসের কন্টাক্ট প্যাড স্পর্শ করেন, কিছু LED এলোমেলোভাবে আলোকিত হতে পারে এবং নিভে যেতে পারে।
WS2812B উপাদানের স্পেসিফিকেশন
একটি ঠিকানা টেপের উপর ভিত্তি করে আলো সিস্টেম তৈরি করতে, আপনাকে আলো নির্গত উপাদানগুলির গুরুত্বপূর্ণ পরামিতিগুলি জানতে হবে।
| LED মাত্রা | 5x5 মিমি |
| PWM মড্যুলেশন ফ্রিকোয়েন্সি | 400 Hz |
| সর্বাধিক উজ্জ্বলতায় বর্তমান খরচ | প্রতি কক্ষে 60 mA |
| সরবরাহ ভোল্টেজ | 5 ভোল্ট |
Arduino এবং WS2812B
বিশ্বের জনপ্রিয় Arduino প্ল্যাটফর্ম, আপনাকে ঠিকানা টেপ পরিচালনার জন্য স্কেচ (প্রোগ্রাম) তৈরি করতে দেয়। সিস্টেমের ক্ষমতাগুলি যথেষ্ট প্রশস্ত, তবে যদি সেগুলি আর কিছু স্তরে পর্যাপ্ত না হয় তবে অর্জিত দক্ষতাগুলি ব্যথাহীনভাবে C ++ বা এমনকি অ্যাসেম্বলারে স্যুইচ করার জন্য যথেষ্ট হবে। যদিও প্রাথমিক জ্ঞান আরডুইনোতে পাওয়া সহজ।
WS2812B রিবনকে Arduino Uno (Nano) এর সাথে সংযুক্ত করা হচ্ছে
প্রথম পর্যায়ে, সাধারণ Arduino Uno বা Arduino Nano বোর্ডই যথেষ্ট। ভবিষ্যতে, আরও জটিল বোর্ডগুলি আরও জটিল সিস্টেম তৈরি করতে ব্যবহার করা যেতে পারে। অ্যাড্রেসযোগ্য এলইডি স্ট্রিপটিকে আরডুইনো বোর্ডের সাথে শারীরিকভাবে সংযুক্ত করার সময়, বেশ কয়েকটি শর্ত অবশ্যই পালন করা উচিত:
- কম শব্দ প্রতিরোধ ক্ষমতার কারণে, ডেটা লাইনের সংযোগকারী কন্ডাক্টরগুলি যতটা সম্ভব ছোট হওয়া উচিত (আপনি তাদের 10 সেন্টিমিটারের মধ্যে তৈরি করার চেষ্টা করবেন);
- আপনাকে আরডুইনো বোর্ডের বিনামূল্যের ডিজিটাল আউটপুটে ডেটা কন্ডাক্টর সংযোগ করতে হবে - এটি তারপর প্রোগ্রাম্যাটিকভাবে নির্দিষ্ট করা হবে;
- উচ্চ শক্তি খরচের কারণে, বোর্ড থেকে টেপটি পাওয়ার প্রয়োজন হয় না - এই উদ্দেশ্যে পৃথক বিদ্যুৎ সরবরাহ করা হয়।
ল্যাম্প এবং আরডুইনোর সাধারণ পাওয়ার ওয়্যার অবশ্যই সংযুক্ত থাকতে হবে।

WS2812B প্রোগ্রাম কন্ট্রোল বেসিক
এটি ইতিমধ্যে উল্লেখ করা হয়েছে যে WS2812B মাইক্রোসার্কিটগুলি নিয়ন্ত্রণ করার জন্য, উচ্চ নির্ভুলতা বজায় রেখে একটি নির্দিষ্ট দৈর্ঘ্যের সাথে ডাল তৈরি করা প্রয়োজন। সংক্ষিপ্ত ডাল গঠনের জন্য Arduino ভাষায় কমান্ড আছে বিলম্ব মাইক্রোসেকেন্ড এবং মাইক্রোস. সমস্যা হল এই কমান্ডগুলির রেজোলিউশন হল 4 মাইক্রোসেকেন্ড। অর্থাৎ, এটি একটি প্রদত্ত নির্ভুলতার সাথে সময় বিলম্ব তৈরি করতে কাজ করবে না। সি ++ বা অ্যাসেম্বলার টুলগুলিতে স্যুইচ করা প্রয়োজন। এবং আপনি এর জন্য বিশেষভাবে তৈরি করা লাইব্রেরিগুলি ব্যবহার করে Arduino এর মাধ্যমে ঠিকানাযোগ্য LED স্ট্রিপের নিয়ন্ত্রণ সংগঠিত করতে পারেন। আপনি ব্লিঙ্ক প্রোগ্রামের সাথে আপনার পরিচিতি শুরু করতে পারেন, যা আলো-নিঃসরণকারী উপাদানগুলিকে জ্বলজ্বল করে।
দ্রুত নেতৃত্বে
এই গ্রন্থাগারটি সর্বজনীন। ঠিকানা টেপ ছাড়াও, এটি SPI ইন্টারফেস দ্বারা নিয়ন্ত্রিত টেপ সহ বিভিন্ন ডিভাইস সমর্থন করে। এর ব্যাপক সম্ভাবনা রয়েছে।
প্রথমত, লাইব্রেরি অন্তর্ভুক্ত করা আবশ্যক। এটি সেটআপ ব্লকের আগে করা হয় এবং লাইনটি এইরকম দেখায়:
# অন্তর্ভুক্ত <FastLED.h>
পরবর্তী ধাপ হল প্রতিটি আলো নির্গত ডায়োডের রং সংরক্ষণ করার জন্য একটি অ্যারে তৈরি করা। এটির নাম স্ট্রিপ এবং মাত্রা থাকবে 15 - উপাদানের সংখ্যা দ্বারা (এই প্যারামিটারে একটি ধ্রুবক বরাদ্দ করা ভাল)।
CRGB স্ট্রিপ[15]
সেটআপ ব্লকে, স্কেচটি কোন টেপের সাথে কাজ করবে তা আপনাকে নির্দিষ্ট করতে হবে:
অকার্যকর সেটআপ() {
FastLED.addLeds< WS2812B, 7, RGB>(স্ট্রিপ, 15);
intg;
}
আরজিবি প্যারামিটার রঙের ক্রম ক্রম সেট করে, 15 মানে এলইডির সংখ্যা, 7 হল নিয়ন্ত্রণের জন্য নির্ধারিত আউটপুটের সংখ্যা (শেষ প্যারামিটারে একটি ধ্রুবক বরাদ্দ করাও ভাল)।
লুপ ব্লকটি একটি লুপ দিয়ে শুরু হয় যা রেড (লাল আভা) এর প্রতিটি বিভাগে ক্রমানুসারে লেখে:
জন্য (g=0; g<15; g++)
{স্ট্রিপ[জি]=CRGB::লাল;}
এর পরে, গঠিত অ্যারেটি ল্যাম্পে পাঠানো হয়:
FastLED.show();
বিলম্ব 1000 মিলিসেকেন্ড (সেকেন্ড):
বিলম্ব (1000);
তারপরে আপনি কালো লিখে একইভাবে সমস্ত উপাদান বন্ধ করতে পারেন।
জন্য (int g=0; g<15; g++)
{স্ট্রিপ[জি]=CRGB::কালো;}
FastLED.show();
বিলম্ব (1000);

স্কেচটি কম্পাইল এবং আপলোড করার পরে, টেপটি 2 সেকেন্ডের মধ্যে ফ্ল্যাশ হবে। আপনি যদি প্রতিটি রঙের উপাদান আলাদাভাবে পরিচালনা করতে চান তবে লাইনের পরিবর্তে {স্ট্রিপ[জি]=CRGB::লাল;} বেশ কয়েকটি লাইন ব্যবহার করা হয়:
{
ফালা [g].r=100;// লাল উপাদানের গ্লো লেভেল সেট করুন
ফালা [g].g=11;// সবুজ জন্য একই
ফালা [g].b=250;// নীল জন্য একই
}
নিওপিক্সেল
এই লাইব্রেরিটি শুধুমাত্র নিওপিক্সেল রিং এলইডি রিংগুলির সাথে কাজ করে, তবে এটি কম সংস্থান নিবিড় এবং এতে শুধুমাত্র প্রয়োজনীয় জিনিস রয়েছে৷ আরডুইনো ভাষায়, প্রোগ্রামটি এইরকম দেখায়:
#অন্তর্ভুক্ত <Adafruit_NeoPixel.h>
আগের ক্ষেত্রে যেমন, লাইব্রেরি সংযুক্ত, এবং লেন্টা অবজেক্ট ঘোষণা করা হয়েছে:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// যেখানে 15 হল উপাদানের সংখ্যা এবং 6 হল নির্ধারিত আউটপুট
সেটআপ ব্লকে, টেপটি আরম্ভ করা হয়:
অকার্যকর সেটআপ() {
lenta.begin()
}
লুপ ব্লকে, সমস্ত উপাদান লাল রঙে হাইলাইট করা হয়, ভেরিয়েবলটি ফিডে পাঠানো হয় এবং 1 সেকেন্ডের বিলম্ব তৈরি হয়:
জন্য (int y=0; y<15; y++)// 15 - বাতিতে উপাদানের সংখ্যা
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
বিলম্ব (1000);
একটি কালো রেকর্ডের সাথে আলো থেমে যায়:
জন্য (int y=0; y<15; y++)
{ lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
বিলম্ব (1000);

ভিডিও টিউটোরিয়াল: ঠিকানা টেপ ব্যবহার করে ভিজ্যুয়াল এফেক্টের নমুনা।
একবার আপনি কীভাবে LED ফ্ল্যাশ করতে হয় তা শিখে গেলে, আপনি মসৃণ রূপান্তর সহ জনপ্রিয় রেইনবো এবং অরোরা বোরিয়ালিস সহ রঙের প্রভাবগুলি কীভাবে তৈরি করতে হয় তা শেখা চালিয়ে যেতে পারেন। ঠিকানাযোগ্য LEDs WS2812B এবং Arduino এর জন্য প্রায় সীমাহীন সম্ভাবনা প্রদান করে।
