Search Code

ESP32 سبق 34/55 - آر جی بی ایل ای ڈی اور نوب کے ساتھ رنگ کا گریڈینٹ | سن فاؤنڈر کا ESP32 IoT لرننگ کٹ

ESP32 سبق 34/55 - آر جی بی ایل ای ڈی اور نوب کے ساتھ رنگ کا گریڈینٹ | سن فاؤنڈر کا ESP32 IoT لرننگ کٹ

اس ٹیوٹوریل میں، ہم ایک آر جی بی ایل ای ڈی کا استعمال کرتے ہوئے رنگ گریڈینٹ اثر بنائیں گے جو پوٹینشیومیٹر (نوب) کی پوزیشن کی بنیاد پر ایڈجسٹ ہوتا ہے۔ یہ پروجیکٹ ESP32 مائیکروکنٹرولر استعمال کرتا ہے، جو بلٹ ان وائی فائی اور بلوٹوتھ صلاحیتیں فراہم کرتا ہے، جس سے یہ IoT پروجیکٹس کے لیے ایک ورسٹائل انتخاب بنتا ہے۔ پوٹینشیومیٹر کو گھما کر، ہم مختلف رنگوں کے درمیان آسانی سے منتقل ہو سکتے ہیں، جس سے آر جی بی ایل ای ڈی کی فعالیت اور پوٹینشیومیٹر سے اینالاگ ویلیوز پڑھنے کی صلاحیت دونوں کا مظاہرہ ہوتا ہے۔

ESO32-34_-Color-Gradient-main

یہ پروجیکٹ PWM (پلس وڈتھ ماڈیولیشن) اور مائیکروکنٹرولر کے ساتھ اینالاگ ڈیوائسز کو کنٹرول کرنے کے بارے میں سیکھنے کے لیے مثالی ہے۔ اس پورے ٹیوٹوریل میں، ہم ضروری ہارڈویئر اجزاء، وائرنگ ہدایات پر بحث کریں گے، اور پروجیکٹ کو لاگو کرنے میں مدد کے لیے کوڈ سنیپٹس فراہم کریں گے۔ مزید بصری وضاحت کے لیے، متعلقہ ویڈیو (ویڈیو میں 02:15 پر) ضرور دیکھیں۔

ہارڈویئر کی وضاحت

ESO32-34_-Color-Gradient-schematic

اس پروجیکٹ میں استعمال ہونے والے اہم اجزاء میں ESP32 مائیکروکنٹرولر، ایک آر جی بی ایل ای ڈی، اور ایک پوٹینشیومیٹر شامل ہیں۔ ESP32 ایک طاقتور مائیکروکنٹرولر ہے جو وائرلیس کمیونیکیشن سمیت مختلف کاموں کو سنبھال سکتا ہے، جس سے یہ IoT ایپلیکیشنز کے لیے موزوں ہے۔ آر جی بی ایل ای ڈی تین انفرادی ایل ای ڈیز (سرخ، سبز، اور نیلا) پر مشتمل ہے جنہیں ملا کر رنگوں کی ایک وسیع رینج تیار کی جا سکتی ہے۔ پوٹینشیومیٹر ایک ایڈجسٹ ایبل ریزسٹر کے طور پر کام کرتا ہے جو اپنی پوزیشن کی بنیاد پر متغیر وولٹیج آؤٹ پٹ فراہم کرتا ہے۔

ESP32_rgb_pin

آر جی بی ایل ای ڈی کو دو کنفیگریشنز میں جوڑا جا سکتا ہے: کامن اینوڈ یا کامن کیتھوڈ۔ اس پروجیکٹ میں، ہم کامن اینوڈ کنفیگریشن استعمال کریں گے، جہاں تمام اینوڈز ایک مثبت وولٹیج سے منسلک ہوتے ہیں، جس سے ہم PWM کے ساتھ ہر ایل ای ڈی کی چمک کو انفرادی طور پر کنٹرول کر سکتے ہیں۔ پوٹینشیومیٹر ESP32 پر ایک اینالاگ ان پٹ سے منسلک ہوگا تاکہ اس کی پوزیشن پڑھی جا سکے اور آر جی بی ویلیوز کو اس کے مطابق ایڈجسٹ کیا جا سکے۔

ڈیٹاشیٹ تفصیلات

مینوفیکچرر سن فاؤنڈر
پارٹ نمبر آر جی بی ایل ای ڈی
لاجک/آئی او وولٹیج 3.3 V
سپلائی وولٹیج 5 V
آؤٹ پٹ کرنٹ (فی چینل) 20 ایم اے
پیک کرنٹ (فی چینل) 30 ایم اے
PWM فریکوئنسی رہنمائی 5 کلو ہرٹز
ان پٹ لاجک تھریشولڈز 0.3 V (کم) / 2.7 V (زیادہ)
وولٹیج ڈراپ / RDS(on) / سیچوریشن 1.8 V (عام)
تھرمل حدود آپریٹنگ درجہ حرارت: -40°C سے +85°C
پیکیج تھرو ہول
نوٹس / ویریئنٹس کامن اینوڈ کنفیگریشن

 

  • کرنٹ محدود کرنے کے لیے ہر ایل ای ڈی چینل کے لیے 220 اوہم ریزسٹر استعمال کریں۔
  • آر جی بی ایل ای ڈی کے لیے مناسب پاور سپلائی وولٹیج (5V) یقینی بنائیں۔
  • کامن اینوڈ کو مثبت وولٹیج سپلائی سے جوڑیں۔
  • ہر ایل ای ڈی رنگ کی چمک کو کنٹرول کرنے کے لیے PWM استعمال کریں۔
  • فلوٹنگ ان پٹس سے بچنے کے لیے پوٹینشیومیٹر کے کنکشن سے محتاط رہیں۔
  • کوڈ اپ لوڈ کرنے سے پہلے تصدیق کریں کہ ESP32 صحیح طریقے سے پاورڈ ہے۔

وائرنگ ہدایات

آر جی بی ایل ای ڈی اور پوٹینشیومیٹر کو ESP32 سے وائر کرنے کے لیے، آر جی بی ایل ای ڈی کے کامن اینوڈ پن کو ESP32 پر 3.3V پاور پن سے جوڑ کر شروع کریں۔ آر جی بی ایل ای ڈی کے سرخ، سبز، اور نیلے پن بالترتیب پنوں 27، 26، اور 25 سے منسلک ہوں گے۔ کرنٹ محدود کرنے اور ایل ای ڈی کی حفاظت کے لیے ہر ایل ای ڈی رنگ پن کے ساتھ سیریز میں 220 اوہم ریزسٹر رکھنا یقینی بنائیں۔

اگلا، پوٹینشیومیٹر کو ESP32 سے جوڑیں بائیں پن کو 3.3V پاور پن، دائیں پن کو گراؤنڈ، اور درمیانی پن کو ESP32 پر 14 سے منسلک کر کے۔ یہ کنفیگریشن ESP32 کو پوٹینشیومیٹر سے اینالاگ وولٹیج پڑھنے کی اجازت دیتی ہے، جو اس کی پوزیشن کی بنیاد پر آر جی بی ایل ای ڈی کا رنگ ایڈجسٹ کرنے کے لیے استعمال ہوگا۔

کوڈ مثالیں اور واک تھرو

سیٹ اپ فنکشن میں، ہم آر جی بی ایل ای ڈی اور پوٹینشیومیٹر کے لیے پنوں کی وضاحت کرتے ہیں، نیز PWM سیٹنگز کو انیشیالائز کرتے ہیں۔ درج ذیل کوڈ سنیپٹ دکھاتا ہے کہ ہم آر جی بی ایل ای ڈی پنوں کو کیسے سیٹ اپ کرتے ہیں:

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);
}

اس سنیپٹ میں، ہم سرخ، سبز، اور نیلے ایل ای ڈیز کے لیے پنوں کی وضاحت کرتے ہیں، اور انہیں ایک متعین فریکوئنسی اور ریزولوشن کے ساتھ PWM چینلز سے منسلک کرتے ہیں۔

لوپ فنکشن پوٹینشیومیٹر کی ویلیو پڑھتا ہے اور اسے ہیو ویلیو میں تبدیل کرتا ہے، جو پھر آر جی بی ویلیوز کا تعین کرنے کے لیے استعمال ہوتی ہے۔ درج ذیل اقتباس اس عمل کو ظاہر کرتا ہے:

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 روشن نہ ہو یا غیر متوقع رویہ دکھائے، تو وائرنگ چیک کریں اور یقینی بنائیں کہ پوٹینشیومیٹر درست طریقے سے جڑا ہوا ہے (ویڈیو میں 10:45 پر)۔

ویڈیو ٹائم اسٹیمپس

  • 00:00 آغاز
  • 2:11 پروجیکٹ کا تعارف
  • 4:31 RGB LED
  • 8:18 RGB رنگ
  • 12:18 وائرنگ کی وضاحت
  • 17:59 Arduino کوڈ کی وضاحت
  • 24:12 Arduino IDE میں ESP32 بورڈ اور COM پورٹ کا انتخاب
  • 25:54 ڈیمونسٹریشن

تصاویر

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
potentiometer
potentiometer
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-main
ESO32-34_-Color-Gradient-main
835-ESP32 Tutorial 34/55- Arduino code for color gradient
زبان: C++
// 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);
}

وسائل اور حوالہ جات

فائلیں📁

کوئی فائلیں دستیاب نہیں ہیں۔