Search Code

ESP32-S3 আরজিবি এলইডি ম্যাট্রিক্স প্রজেক্ট ১- মৌলিক ডট

ESP32-S3 আরজিবি এলইডি ম্যাট্রিক্স প্রজেক্ট ১- মৌলিক ডট

প্রজেক্ট ১ – ESP32-S3 RGB LED ম্যাট্রিক্সে চলন্ত বিন্দু ও হার্ট অ্যানিমেশন

এই প্রজেক্টে আমরা ESP32-S3 RGB LED ম্যাট্রিক্সে সবচেয়ে সহজ সম্ভব অ্যানিমেশন দিয়ে শুরু করি: একটি একক বিন্দু যা ৮×৮ RGB ডিসপ্লে জুড়ে চলাচল করে। এর উপরে, আমরা একটি ছোট হার্ট অ্যানিমেশন যোগ করি যাতে বোর্ডটি চালু থাকা অবস্থায় আপনি এটিকে একটি ছোট সাজসজ্জার ডিসপ্লেতে পরিণত করতে পারেন। ম্যাট্রিক্সে পৃথক পিক্সেল, রঙ এবং অ্যানিমেশনের গতি নিয়ন্ত্রণে স্বাচ্ছন্দ্য বোধ করার জন্য এটি একটি দুর্দান্ত প্রথম ধাপ।

এই সিরিজের ছয়টি প্রজেক্টই একটি একক ভিডিওতে প্রদর্শিত ও ব্যাখ্যা করা হয়েছে। একই ভিডিওটি এই পৃষ্ঠায় এমবেড করা আছে, তাই আপনি চলন্ত বিন্দু এবং হার্ট অ্যানিমেশনের সম্পূর্ণ ধাপে ধাপে ব্যাখ্যা এবং লাইভ প্রদর্শন দেখতে পারেন। এই প্রজেক্টের সম্পূর্ণ কোডটি নিবন্ধের নীচে স্বয়ংক্রিয়ভাবে লোড হয় এবং আপনি কোড বিভাগের অধীনে তালিকাভুক্ত অ্যাফিলিয়েট স্টোর থেকে ESP32-S3 RGB LED ম্যাট্রিক্স মডিউলটি কিনতে পারেন।

আপনি যদি এই বোর্ডটি দিয়ে সবেমাত্র শুরু করছেন, তাহলে এই প্রজেক্টটি নিম্নলিখিত কাজের জন্য একটি নিখুঁত উপায়:

  • আপনার ESP32-S3 বোর্ড এবং USB সংযোগ সঠিকভাবে কাজ করছে কিনা তা যাচাই করুন।
  • ৮×৮ RGB ম্যাট্রিক্সটি সঠিক পিনে সংযুক্ত আছে কিনা তা নিশ্চিত করুন।
  • মৌলিক অ্যানিমেশন সময়, রঙ এবং উজ্জ্বলতা নিয়ে পরীক্ষা করুন।

ESP32-S3 RGB LED ম্যাট্রিক্স মডিউল ওভারভিউ

এই প্রজেক্টে ব্যবহৃত বোর্ডটি ESP32-S3 মাইক্রোকন্ট্রোলারের উপর ভিত্তি করে তৈরি, যার সাথে একটি ৮×৮ RGB LED ম্যাট্রিক্স (৬৪টি পৃথকভাবে ঠিকানাযোগ্য RGB LED), পিছনে একটি QMI8658C মোশন সেন্সর এবং পাওয়ার ও প্রোগ্রামিংয়ের জন্য একটি USB পোর্ট রয়েছে।

এই মডিউলটির মূল বৈশিষ্ট্যগুলি:

  • ESP32-S3 ডুয়াল-কোর মাইক্রোকন্ট্রোলার যা Wi-Fi এবং ব্লুটুথ সমর্থন সহ।
  • ৮×৮ RGB LED ম্যাট্রিক্স (৬৪টি RGB LED) বোর্ডের সামনে, যা আইকন, টেক্সট এবং ছোট গেমের জন্য আদর্শ।
  • QMI8658C অ্যাক্সিলেরোমিটার / মোশন সেন্সর পিছনের দিকে, যাতে আপনি ইন্টারঅ্যাকটিভ প্রজেক্টের জন্য কাত, নড়াচড়া এবং অভিযোজন সনাক্ত করতে পারেন।
  • USB পোর্ট প্রোগ্রামিং এবং পাওয়ার উভয়ের জন্য।
  • সহজলভ্য পিন প্রান্তের চারপাশে, তাই বোর্ডটি অন্যান্য IO প্রজেক্টের জন্য নিয়মিত ESP32-এর মতো ব্যবহার করা যেতে পারে।
  • বুট এবং রিসেট বোতাম প্রোগ্রামিং মোডে প্রবেশ এবং আপনার স্কেচ পুনরায় চালু করার জন্য।

এই প্রথম প্রজেক্টে আমরা শুধুমাত্র বোর্ডের LED ম্যাট্রিক্স অংশ ব্যবহার করি, তবে একই হার্ডওয়্যার টেক্সট ডিসপ্লে, ওয়েব-নিয়ন্ত্রিত বার্তা, মোশন-নিয়ন্ত্রিত গেম এবং আরও অনেক কিছু চালানোর জন্য যথেষ্ট শক্তিশালী — যা এই সিরিজের অন্যান্য প্রজেক্টে covered হয়েছে।

ভিডিওতে covered প্রজেক্টসমূহ (টাইমস্ট্যাম্প)

ছয়টি প্রজেক্টই একই YouTube ভিডিও শেয়ার করে। আনুমানিক টাইমস্ট্যাম্পগুলি হল:

  • 00:00 – ভূমিকা
  • 02:01 – ESP32 বোর্ড ইনস্টল করা
  • 03:32 – লাইব্রেরি ইনস্টল করা
  • 05:32 – প্রজেক্ট ১: চলন্ত বিন্দু (এবং মৌলিক রঙ / গতির সেটিংস)
  • 11:11 – প্রজেক্ট ২: টেক্সট স্ক্রল
  • 12:59 – প্রজেক্ট ৩: HTTP টেক্সট
  • 16:41 – প্রজেক্ট ৪: কাত বিন্দু
  • 18:55 – প্রজেক্ট ৫: উপরের তীর
  • 20:02 – প্রজেক্ট ৬: টার্গেট গেম

সেরা বোঝার জন্য, এই নিবন্ধটি অনুসরণ করার সময় ভিডিওটি দেখার জন্য আপনাকে দৃঢ়ভাবে উৎসাহিত করা হচ্ছে। ভিডিওটি ম্যাট্রিক্সে বিন্দু এবং হার্টের লাইভ আচরণ, পাশাপাশি Arduino IDE-এর ভিতরের সমস্ত ধাপ দেখায়।

Arduino IDE-তে ESP32 বোর্ড ইনস্টল করা

ESP32-S3-এ কোনো কোড আপলোড করার আগে, আপনাকে Arduino IDE-তে ESP32 বোর্ড সাপোর্ট প্যাকেজ ইনস্টল করতে হবে। ভিডিওতে, এটি “বোর্ড ইনস্টল করা” বিভাগের চারপাশে প্রদর্শিত হয়েছে।

সাধারণ ধাপগুলি:

  1. Arduino IDE খুলুন এবং File > Preferences-এ যান।
  2. “Additional Boards Manager URLs” ফিল্ডে, অফিসিয়াল ESP32 বোর্ড URL যোগ করুন।
  3. Tools > Board > Boards Manager… খুলুন, ESP32 অনুসন্ধান করুন এবং ESP32 বোর্ডের জন্য প্যাকেজটি ইনস্টল করুন।
  4. ইনস্টলেশনের পরে, Tools > Board-এ যান এবং আপনার ESP32-S3 RGB ম্যাট্রিক্স মডিউলের জন্য সঠিক বোর্ড এন্ট্রি নির্বাচন করুন।
  5. USB-এর মাধ্যমে বোর্ডটি সংযুক্ত করুন এবং Tools > Port-এর অধীনে এর সিরিয়াল পোর্টটি চয়ন করুন।

সঠিক বোর্ড এবং পোর্ট নির্বাচন না করা হলে, আপনার কোড সঠিক হলেও আপনার স্কেচ আপলোড হবে না।

NeoMatrix এবং প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

LED ম্যাট্রিক্সটি অভ্যন্তরীণভাবে Adafruit NeoPixel ড্রাইভার ব্যবহার করে এবং সহজ 2D অঙ্কনের জন্য আমরা Adafruit NeoMatrix লাইব্রেরি ব্যবহার করি। NeoMatrix ইনস্টল করলে স্বয়ংক্রিয়ভাবে নির্ভরতাগুলি টেনে আনা হবে।

NeoMatrix এবং নির্ভরতাসমূহ

লাইব্রেরি ম্যানেজার থেকে নিম্নলিখিতগুলি ইনস্টল করুন:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library

লাইব্রেরি ম্যানেজারে:

  1. Sketch > Include Library > Manage Libraries… খুলুন।
  2. Adafruit NeoMatrix অনুসন্ধান করুন এবং Install-এ ক্লিক করুন।
  3. IDE-কে সমস্ত প্রস্তাবিত নির্ভরতা (Adafruit GFX এবং Adafruit NeoPixel) ইনস্টল করার অনুমতি দিন।

QMI8658C মোশন সেন্সর লাইব্রেরি (পরবর্তী প্রজেক্টের জন্য)

প্রজেক্ট ১ সরাসরি অ্যাক্সিলেরোমিটার ব্যবহার করে না, তবে এখনই মোশন সেন্সর লাইব্রেরিটি ইনস্টল করা একটি ভালো ধারণা কারণ প্রজেক্ট ৪, ৫ এবং ৬-এর জন্য এটি প্রয়োজন হবে।

লাইব্রেরি ম্যানেজার থেকে:

  1. লেখকের নাম দিয়ে QMI8658 লাইব্রেরিটি অনুসন্ধান করুন।
  2. লাইব্রেরিটি ইনস্টল করুন যাতে এটি দ্রুত পরীক্ষার জন্য File > Examples-এর অধীনে প্রদর্শিত হয়।

প্রজেক্ট ১ – কোড সেটিংস (চলন্ত বিন্দু এবং হার্ট)

প্রজেক্ট ১ চালানো সম্পূর্ণ স্কেচটি এই নিবন্ধের নিচে ওয়েবসাইটে স্বয়ংক্রিয়ভাবে লোড করা আছে। এখানে আমরা শুধুমাত্র মূল সেটিংসগুলিতে মনোযোগ দিচ্ছি যা আপনি পরিবর্তন করার সম্ভাবনা বেশি: পিন, পিক্সেলের সংখ্যা, উজ্জ্বলতা, রঙ এবং অ্যানিমেশনের গতি। হার্ট অ্যানিমেশনের জন্য আমরা রঙ নিয়ন্ত্রণ এবং হার্টটি কঠিন বা আউটলাইনযুক্ত কিনা তা দেখানোরও উপায় দেখাই।

LED পিন এবং পিক্সেলের সংখ্যা

এই মডিউলে, 8×8 RGB ম্যাট্রিক্সটি ESP32-S3 এর GPIO 14 এর সাথে সংযুক্ত। মোট পিক্সেলের সংখ্যা 64 (8 × 8)। আপনার কোডে, আপনার অনুরূপ কিছু দেখা উচিত:

 
// 8×8 RGB ম্যাট্রিক্সের সাথে সংযুক্ত পিন 
const int MATRIX_PIN = 14;
 // এই মডিউলে অবশ্যই 14 হতে হবে 
// মোট LED সংখ্যা (8 × 8 ম্যাট্রিক্স) 
const int NUMPIXELS = 64; // শুধুমাত্র ভিন্ন ম্যাট্রিক্স সাইজ ব্যবহার করলে পরিবর্তন করুন 

যদি আপনি দুর্ঘটনাবশত NUMPIXELS 16 এ রেখে দেন (মূল NeoPixel উদাহরণ থেকে), ম্যাট্রিক্সের মাত্র এক চতুর্থাংশ ব্যবহার হবে এবং অ্যানিমেশনটি সম্পূর্ণ 8×8 স্ক্রিন পূরণ করবে না।

রঙের ক্রম এবং LED ধরন

বিভিন্ন LED স্ট্রিপ এবং ম্যাট্রিক্স ভিন্ন রঙের ক্রম ব্যবহার করতে পারে (উদাহরণস্বরূপ, RGB এর পরিবর্তে GRB)। এই বোর্ডের ম্যাট্রিক্স RGB ক্রম আশা করে। NeoPixel বা NeoMatrix কনস্ট্রাক্টরে, নিশ্চিত করুন যে রঙের ধরন সঠিকভাবে সেট করা আছে:


 // NeoPixel-স্টাইল অবজেক্টের জন্য উদাহরণ: 
Adafruit_NeoPixel pixels( NUMPIXELS, MATRIX_PIN, NEO_RGB + NEO_KHZ800 // নিশ্চিত করুন এটি ম্যাট্রিক্সের রঙের ক্রমের সাথে মেলে ); 

যদি আপনি লক্ষ্য করেন যে ডিসপ্লেতে লাল এবং সবুজ অদলবদল হয়েছে, প্রথমে এই লাইনটি পরীক্ষা করুন এবং রঙের ক্রম সংশোধন করুন।

অ্যানিমেশনের গতি (ধাপগুলির মধ্যে বিলম্ব)

চলন্ত বিন্দুর গতি সাধারণত মিলিসেকেন্ডে একটি সাধারণ বিলম্ব মান দ্বারা নিয়ন্ত্রিত হয়। ছোট বিলম্ব মানে দ্রুত গতি; বড় বিলম্ব মানে ধীর গতি। অনুরূপ একটি ভেরিয়েবল খুঁজুন:

 
// বিন্দু চলার মধ্যে বিলম্ব (মিলিসেকেন্ডে)
 int dotDelayMs = 50; // 50 ms মোটামুটি দ্রুত 

সাধারণ সমন্বয়:

  • খুব দ্রুত চলন্ত বিন্দুর জন্য dotDelayMs = 20; সেট করুন।
  • ধীর, শান্ত অ্যানিমেশনের জন্য dotDelayMs = 100; বা তার বেশি সেট করুন।

loop() ফাংশনে, এই মানটি সাধারণত প্রতিটি ফ্রেম আপডেটের পরে delay(dotDelayMs); এ পাস করা হয়।

বিন্দুর রঙ এবং উজ্জ্বলতা

চলন্ত বিন্দুর RGB রঙ 0–255 পরিসরের তিনটি মান (লাল, সবুজ, নীল) দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ:

 
// বিন্দুর রঙ (R, G, B) 0–255 থেকে uint8_t dotRed = 255; // সম্পূর্ণ লাল 
uint8_t dotGreen = 0; // সবুজ নেই 
uint8_t dotBlue = 0; // নীল নেই 

এটি একটি উজ্জ্বল লাল বিন্দু তৈরি করবে। কিছু দরকারী সংমিশ্রণ:

  • খাঁটি লাল: (255, 0, 0)
  • খাঁটি সবুজ: (0, 255, 0)
  • খাঁটি নীল: (0, 0, 255)
  • হলুদ: (255, 255, 0)
  • সাদা: (255, 255, 255)

সামগ্রিক উজ্জ্বলতা প্রায়শই একটি পৃথক উজ্জ্বলতা ফাংশন দ্বারা নিয়ন্ত্রিত হয়:

 
// সামগ্রিক ম্যাট্রিক্স উজ্জ্বলতা (0–255) 
uint8_t matrixBrightness = 40; // অতিরিক্ত ঝলক এড়াতে কম রাখুন // setup() এ: matrix.setBrightness(matrixBrightness); 

ইনডোর ব্যবহারের জন্য 30–60 এর কাছাকাছি একটি মান সাধারণত আরামদায়ক।

হার্ট আকৃতির সেটিংস

চলন্ত বিন্দু ছাড়াও, বোর্ড প্রথমবার চালু হলে আপনি ম্যাট্রিক্সে একটি ছোট হার্ট প্রদর্শন করতে পারেন। নিবন্ধের নমুনা কোডে (নিচে লোড করা) অনুরূপ সেটিংস অন্তর্ভুক্ত রয়েছে:

 
// হার্টের রঙ (কঠিন হার্ট) 
uint8_t heartRed = 255; 
uint8_t heartGreen = 0; 
uint8_t heartBlue = 0; 
// ঐচ্ছিক: রেইনবো বা আউটলাইন মোড 
bool showOutlinedHeart = false; 
// true = শুধুমাত্র আউটলাইন 
bool useRainbowHeart = false; 
// true = সময়ের সাথে রঙ পরিবর্তন 

সাধারণ ব্যবহার:

  • কঠিন লাল হার্টের জন্য showOutlinedHeart = false; এবং useRainbowHeart = false; সেট করুন।
  • শুধুমাত্র হার্টের আউটলাইন দেখাতে showOutlinedHeart = true; সেট করুন।
  • হার্টের রঙ রেইনবো প্রভাবে ক্রমাগত পরিবর্তন করতে useRainbowHeart = true; সেট করুন।

হার্টটি নিবন্ধের নিচের কোডের ভিতরে NeoMatrix স্থানাঙ্ক ফাংশন ব্যবহার করে আঁকা হয়। এর চেহারা কাস্টমাইজ করতে আপনাকে শুধুমাত্র উপরের ভেরিয়েবলগুলি পরিবর্তন করতে হবে।

সারাংশ

প্রজেক্ট ১ আপনাকে ESP32-S3 RGB LED ম্যাট্রিক্সের সাথে একটি সহজ কিন্তু শক্তিশালী শুরু বিন্দু দেয়: আপনি শিখবেন কীভাবে সমস্ত 64 পিক্সেল ঠিকানা করতে হয়, রঙ নিয়ন্ত্রণ করতে হয়, উজ্জ্বলতা সামঞ্জস্য করতে হয় এবং অ্যানিমেশনের গতি সেট করতে হয়। আপনি আরও দেখতে পান যে একই হার্ডওয়্যারে চলন্ত বিন্দু থেকে স্থির বা অ্যানিমেটেড হার্টে স্যুইচ করা কত সহজ।

চলন্ত বিন্দু এবং হার্ট অ্যানিমেশনের সম্পূর্ণ, ধাপে ধাপে প্রদর্শনের জন্য এই পৃষ্ঠায় এমবেড করা সম্পূর্ণ ভিডিওটি দেখতে ভুলবেন না, সাথে বাকি পাঁচটি প্রজেক্টও। সম্পূর্ণ সোর্স কোড এই নিবন্ধের নিচে উপলব্ধ, এবং আপনি কোড বিভাগের নিচে তালিকাভুক্ত অ্যাফিলিয়েট লিঙ্কগুলির মাধ্যমে মডিউলটি কিনে ভবিষ্যতের প্রজেক্টগুলিকে সমর্থন করতে পারেন।

ছবি

ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32 S3 Matrix displaying green heart
ESP32 S3 Matrix displaying green heart
ESP32 S3 Matrix displaying rainbow heart
ESP32 S3 Matrix displaying rainbow heart
ESP32-S3 RGB Matrix- Mobile Phone Text
ESP32-S3 RGB Matrix- Mobile Phone Text
ESP32-S3-Mtrix - Alway Up
ESP32-S3-Mtrix - Alway Up
799-ESP32-S3 RGB LED Matrix Project 1 - Dot
ভাষা: C++
/* 
  Project 1: the Dot – ESP32-S3 RGB LED Matrix (Waveshare)

  dialysis a dot on scree and moves it
  
  ▶️ Video Tutorial:
  https://youtu.be/JKLuYrRcLMI

  📚⬇️ Resources & Code Page:
  https://robojax.com/RJT829

  QMI8658_RGB_2
*/

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN        14 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 64 // Popular NeoPixel ring size

// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);

#define DELAYVAL 50 // Time (in milliseconds) to pause between pixels

void setup() {
  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
  // Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  pixels.clear(); // Set all pixel colors to 'off'

  // The first NeoPixel in a strand is #0, second is 1, all the way up
  // to the count of pixels minus one.
  for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    // Here we're using a moderately bright green color:
    pixels.setPixelColor(i, pixels.Color(255, 255, 0));

    pixels.show();   // Send the updated pixel colors to the hardware.

    delay(DELAYVAL); // Pause before next pass through loop
    pixels.clear();
  }



}

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

ফ্রিটজিং ফাইল