ESP32 টিউটোরিয়াল ৩৪/৫৫ - RGB LED এবং নব দিয়ে কালার গ্রেডিয়েন্ট | SunFounder-এর ESP32 IoT লার্নিং কিট
এই টিউটোরিয়ালে, আমরা একটি RGB LED ব্যবহার করে একটি রঙের গ্রেডিয়েন্ট ইফেক্ট তৈরি করব যা একটি পটেনশিওমিটার (নব) এর অবস্থানের উপর ভিত্তি করে সামঞ্জস্য হয়। প্রকল্পটি একটি ESP32 মাইক্রোকন্ট্রোলার ব্যবহার করে, যা বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা প্রদান করে, এটিকে IoT প্রকল্পের জন্য একটি বহুমুখী পছন্দ করে তোলে। পটেনশিওমিটার ঘোরানোর মাধ্যমে, আমরা মসৃণভাবে বিভিন্ন রঙের মধ্যে পরিবর্তন করতে পারি, যা RGB LED-এর কার্যকারিতা এবং পটেনশিওমিটার থেকে অ্যানালগ মান পড়ার ক্ষমতা উভয়ই প্রদর্শন করে।

এই প্রকল্পটি PWM (পালস উইডথ মডুলেশন) এবং একটি মাইক্রোকন্ট্রোলার দিয়ে অ্যানালগ ডিভাইস নিয়ন্ত্রণ সম্পর্কে শেখার জন্য আদর্শ। এই টিউটোরিয়াল জুড়ে, আমরা প্রয়োজনীয় হার্ডওয়্যার উপাদান, ওয়্যারিং নির্দেশাবলী নিয়ে আলোচনা করব এবং প্রকল্পটি বাস্তবায়নে আপনাকে সাহায্য করার জন্য কোড স্নিপেট প্রদান করব। আরও ভিজ্যুয়াল ব্যাখ্যার জন্য, সংশ্লিষ্ট ভিডিওটি (ভিডিওতে ০২:১৫ সময়ে) দেখতে ভুলবেন না।
হার্ডওয়্যার ব্যাখ্যা
এই প্রকল্পে ব্যবহৃত প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, একটি RGB LED এবং একটি পটেনশিওমিটার। ESP32 একটি শক্তিশালী মাইক্রোকন্ট্রোলার যা ওয়্যারলেস যোগাযোগ সহ বিভিন্ন কাজ পরিচালনা করতে পারে, এটিকে IoT অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে। RGB LED-তে তিনটি পৃথক LED (লাল, সবুজ এবং নীল) থাকে যা বিস্তৃত রঙ তৈরি করতে মিশ্রিত করা যেতে পারে। পটেনশিওমিটার একটি সামঞ্জস্যযোগ্য রোধ হিসাবে কাজ করে যা তার অবস্থানের উপর ভিত্তি করে একটি পরিবর্তনশীল ভোল্টেজ আউটপুট প্রদান করে।
RGB LED দুটি কনফিগারেশনে সংযুক্ত করা যেতে পারে: সাধারণ অ্যানোড বা সাধারণ ক্যাথোড। এই প্রকল্পে, আমরা একটি সাধারণ অ্যানোড কনফিগারেশন ব্যবহার করব, যেখানে সমস্ত অ্যানোড একটি ধনাত্মক ভোল্টেজের সাথে একসাথে সংযুক্ত থাকে, যা আমাদের PWM দিয়ে প্রতিটি LED-এর উজ্জ্বলতা পৃথকভাবে নিয়ন্ত্রণ করতে দেয়। পটেনশিওমিটারটি ESP32-এর একটি অ্যানালগ ইনপুটের সাথে সংযুক্ত থাকবে যাতে এর অবস্থান পড়া যায় এবং সেই অনুযায়ী RGB মানগুলি সামঞ্জস্য করা যায়।
ডেটাশিট বিবরণ
| প্রস্তুতকারক | SunFounder |
|---|---|
| পার্ট নম্বর | RGB LED |
| লজিক/IO ভোল্টেজ | ৩.৩ V |
| সাপ্লাই ভোল্টেজ | ৫ V |
| আউটপুট কারেন্ট (প্রতি চ্যানেল) | ২০ mA |
| পিক কারেন্ট (প্রতি চ্যানেল) | ৩০ mA |
| PWM ফ্রিকোয়েন্সি নির্দেশিকা | ৫ kHz |
| ইনপুট লজিক থ্রেশহোল্ড | ০.৩ V (নিম্ন) / ২.৭ V (উচ্চ) |
| ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন | ১.৮ V (সাধারণ) |
| থার্মাল সীমা | অপারেটিং তাপমাত্রা: -৪০°C থেকে +৮৫°C |
| প্যাকেজ | থ্রু-হোল |
| নোট / ভেরিয়েন্ট | সাধারণ অ্যানোড কনফিগারেশন |
- প্রতিটি LED চ্যানেলে কারেন্ট সীমিত করতে একটি ২২০ ওহম রোধ ব্যবহার করুন।
- RGB LED-এর জন্য সঠিক পাওয়ার সাপ্লাই ভোল্টেজ (৫V) নিশ্চিত করুন।
- সাধারণ অ্যানোডটি ধনাত্মক ভোল্টেজ সাপ্লাইয়ের সাথে সংযুক্ত করুন।
- প্রতিটি LED রঙের উজ্জ্বলতা নিয়ন্ত্রণের জন্য PWM ব্যবহার করুন।
- ফ্লোটিং ইনপুট এড়াতে পটেনশিওমিটারের সংযোগ সম্পর্কে সতর্ক থাকুন।
- কোড আপলোড করার আগে ESP32 সঠিকভাবে চালিত হয়েছে কিনা যাচাই করুন।
ওয়্যারিং নির্দেশাবলী
RGB LED এবং পটেনশিওমিটারকে ESP32-এর সাথে ওয়্যার করতে, প্রথমে RGB LED-এর সাধারণ অ্যানোড পিনটি ESP32-এর ৩.৩V পাওয়ার পিনের সাথে সংযুক্ত করুন। RGB LED-এর লাল, সবুজ এবং নীল পিনগুলি যথাক্রমে ২৭, ২৬ এবং ২৫ পিনের সাথে সংযুক্ত হবে। প্রতিটি LED রঙের পিনের সাথে সিরিজে একটি ২২০ ওহম রোধ রাখতে ভুলবেন না যাতে কারেন্ট সীমিত হয় এবং LED সুরক্ষিত থাকে।
এরপর, পটেনশিওমিটারটিকে ESP32-এর সাথে সংযুক্ত করুন বাম পিনটি ৩.৩V পাওয়ার পিনের সাথে, ডান পিনটি গ্রাউন্ডের সাথে এবং মাঝের পিনটি ESP32-এর ১৪ নম্বর পিনের সাথে যুক্ত করে। এই কনফিগারেশনটি ESP32-কে পটেনশিওমিটার থেকে অ্যানালগ ভোল্টেজ পড়তে দেয়, যা তার অবস্থানের উপর ভিত্তি করে RGB LED-এর রঙ সামঞ্জস্য করতে ব্যবহৃত হবে।
কোড উদাহরণ ও ওয়াকথ্রু
সেটআপ ফাংশনে, আমরা RGB LED এবং পটেনশিওমিটারের জন্য পিনগুলি সংজ্ঞায়িত করি, সেইসাথে PWM সেটিংস initialize করি। নিম্নলিখিত কোড স্নিপেটটি দেখায় যে আমরা কীভাবে RGB LED পিনগুলি সেট আপ করি:
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
এই স্নিপেটে, আমরা লাল, সবুজ এবং নীল LED-এর জন্য পিনগুলি সংজ্ঞায়িত করি এবং একটি নির্দিষ্ট ফ্রিকোয়েন্সি এবং রেজোলিউশন সহ PWM চ্যানেলগুলির সাথে সংযুক্ত করি।
লুপ ফাংশনটি পটেনশিওমিটারের মান পড়ে এবং এটিকে একটি হিউ মানে রূপান্তর করে, যা পরে RGB মান নির্ধারণ করতে ব্যবহৃত হয়। নিম্নলিখিত অংশটি এই প্রক্রিয়াটি প্রদর্শন করে:
void loop() {
int knobValue = analogRead(KNOB_PIN);
float hueValue = (float)knobValue / 4095.0;
int hue = (int)(hueValue * 360);
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
setColor(red, green, blue);
}এই কোডটি পটেনশিওমিটার থেকে অ্যানালগ মান পড়ে, এটিকে স্বাভাবিক করে এবং সংশ্লিষ্ট হিউ হিসাব করে। তারপর এটি HUEtoRGB ফাংশনকে কল করে হিউকে RGB মানে রূপান্তর করতে, যা setColor ফাংশনে পাঠানো হয় LED আপডেট করার জন্য।
প্রদর্শন / কী আশা করবেন
ওয়্যারিং সম্পন্ন করে এবং কোড আপলোড করার পরে, আপনার পটেনশিওমিটার ঘুরিয়ে RGB LED-এর রঙ মসৃণভাবে পরিবর্তন করতে সক্ষম হওয়া উচিত। আপনি নব ঘোরানোর সাথে সাথে LED বিভিন্ন রঙের মধ্যে পরিবর্তিত হবে, যা নব অবস্থান থেকে হিসাব করা হিউ মানের উপর ভিত্তি করে। যদি LED আলো না জ্বলে বা অপ্রত্যাশিত আচরণ করে, তাহলে ওয়্যারিং পরীক্ষা করুন এবং নিশ্চিত করুন যে পটেনশিওমিটার সঠিকভাবে সংযুক্ত আছে (ভিডিওতে ১০:৪৫ মিনিটে)।
ভিডিও টাইমস্ট্যাম্প
- ০০:০০ শুরু
- ২:১১ প্রকল্পের পরিচিতি
- ৪:৩১ RGB LED
- ৮:১৮ RGB রঙ
- ১২:১৮ ওয়্যারিং ব্যাখ্যা
- ১৭:৫৯ Arduino কোড ব্যাখ্যা
- ২৪:১২ Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
- ২৫:৫৪ প্রদর্শন
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;
// Define the pin for the knob
#define KNOB_PIN 14
void setup() {
Serial.begin(115200);
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
// Read the value of the knob
int knobValue = analogRead(KNOB_PIN);
Serial.println(knobValue);
// Normalize the knob value to the range 0-1
float hueValue = (float)knobValue / 4095.0;
// Convert the normalized value to a HUE value (0-360)
int hue = (int)(hueValue * 360);
// Convert the HUE value to RGB values
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
// Update the RGB LED with the new color values
setColor(red, green, blue);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
// Convert a HUE value to RGB values
void HUEtoRGB(int hue, int* red, int* green, int* blue) {
float h = (float)hue / 60.0;
float c = 1.0;
float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0));
float r, g, b;
if (h < 1.0) {
r = c;
g = x;
b = 0;
} else if (h < 2.0) {
r = x;
g = c;
b = 0;
} else if (h < 3.0) {
r = 0;
g = c;
b = x;
} else if (h < 4.0) {
r = 0;
g = x;
b = c;
} else if (h < 5.0) {
r = x;
g = 0;
b = c;
} else {
r = c;
g = 0;
b = x;
}
float m = 1.0 - c;
*red = (int)((r + m) * 255);
*green = (int)((g + m) * 255);
*blue = (int)((b + m) * 255);
}
Common Course Links
Common Course Files
সম্পদ ও রেফারেন্সসমূহ
-
ডকুমেন্টেশনESP32 Tutorial 34/55 - SunFounder doc page for color gradientdocs.sunfounder.com
ফাইলসমূহ📁
কোনো ফাইল উপলব্ধ নেই।