کوڈ تلاش کریں

ESP32 سبق 33/55 - سن فاؤنڈر کے ESP32 IoT لرننگ کٹ کا استعمال کرتے ہوئے ڈیجیٹل ڈائس

ESP32 سبق 33/55 - سن فاؤنڈر کے ESP32 IoT لرننگ کٹ کا استعمال کرتے ہوئے ڈیجیٹل ڈائس

اس ٹیوٹوریل میں، ہم سات حصوں والی ڈسپلے اور SunFounder کے IoT لرننگ کٹ سے ESP32 کا استعمال کرتے ہوئے ایک ڈیجیٹل ڈائس بنائیں گے۔ یہ پروجیکٹ آپ کو بٹن دبانے پر 1 سے 6 تک نمبر پیدا کرکے ورچوئل ڈائس رول کرنے کی اجازت دے گا۔ یہ ESP32 کی صلاحیتوں کو دریافت کرنے کا ایک شاندار طریقہ ہے جبکہ ڈسپلے اور بٹن کے ساتھ انٹرفیس کرنے کا سیکھتے ہیں۔ مزید وضاحت کے لیے، ویڈیو (ویڈیو میں 0:00 پر) ضرور دیکھیں۔

ESP32-33_ڈیجیٹل-ڈائس-مین

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

اس پروجیکٹ کے اہم اجزاء میں ESP32 مائیکروکنٹرولر، 74HC595 شفٹ رجسٹر، سات حصوں والی ڈسپلے، اور ایک پش بٹن شامل ہیں۔ ESP32 ایک طاقتور مائیکروکنٹرولر ہے جو Wi-Fi اور Bluetooth کو مربوط کرتا ہے، جو اسے IoT ایپلیکیشنز کے لیے موزوں بناتا ہے۔ 74HC595 شفٹ رجسٹر ہمیں سات حصوں والی ڈسپلے کو ہر حصے کو براہ راست جوڑنے کے مقابلے میں کم پنوں کا استعمال کرکے کنٹرول کرنے کی اجازت دیتا ہے۔

سات حصوں والی ڈسپلے نمبر دکھاتی ہے اور شفٹ رجسٹر سے ڈیٹا بھیج کر کنٹرول ہوتی ہے۔ پش بٹن ڈائس رول کو متحرک کرنے کے لیے استعمال ہوتا ہے، جو ایک بے ترتیب نمبر پیدا کرتا ہے جو ڈسپلے پر دکھایا جائے گا۔ جب دبایا جاتا ہے، بٹن ESP32 پر پن 13 سے جڑتا ہے، جس میں اندرونی پل-اپ ریزسٹر ہوتا ہے تاکہ نہ دبانے پر اسے ہائی حالت میں رکھے۔

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

مینوفیکچرر Texas Instruments
پارٹ نمبر 74HC595
لاجک/IO وولٹیج 2 V سے 6 V
سپلائی وولٹیج 4.5 V سے 5.5 V
آؤٹ پٹ کرنٹ (فی چینل) زیادہ سے زیادہ 6 mA
پیک کرنٹ (فی چینل) زیادہ سے زیادہ 35 mA
PWM فریکوئنسی رہنمائی لاگو نہیں
ان پٹ لاجک تھریشولڈز VIH ≥ 2 V، VIL ≤ 0.8 V
وولٹیج ڈراپ / RDS(on) / سنترپتی زیادہ سے زیادہ 0.5 V
تھرمل حدود 150 °C
پیکیج DIP-16
نوٹس / مختلف قسمیں ڈیجیٹل ڈسپلے میں عام طور پر استعمال ہوتا ہے

 

  • قابل اعتماد آپریشن کے لیے مناسب وولٹیج کی سطح (4.5 V سے 5.5 V) یقینی بنائیں۔
  • شفٹ رجسٹر کو نقصان پہنچانے سے بچنے کے لیے آؤٹ پٹ کرنٹ کو محدود کریں۔
  • وولٹیج کو مستحکم کرنے کے لیے پاور پنوں کے قریب ڈیکپلنگ کیپسیٹرز استعمال کریں۔
  • نمبروں کی غلط نمائندگی سے بچنے کے لیے سات حصوں والی ڈسپلے کو درست طریقے سے جوڑیں۔
  • ڈھیلے کنکشنز کے لیے وائرنگ چیک کریں جو غیر متوقع رویے کا سبب بن سکتے ہیں۔

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

ESP32-33_digital-dice-wiring

ڈیجیٹل ڈائس کو وائر کرنے کے لیے، پاور کنکشن قائم کرکے شروع کریں۔ اپنے بریڈ بورڈ پر گراؤنڈ (نیلی لائن) کو ESP32 کے گراؤنڈ پن سے جوڑیں اور یقینی بنائیں کہ تمام گراؤنڈ پوائنٹس آپس میں جڑے ہوئے ہیں۔ اگلا، ESP32 سے 3.3V پن کو بریڈ بورڈ پر پاور ریل (سرخ لائن) سے جوڑیں۔

ESP32-33_ڈیجیٹل-ڈائس-اسکیمیٹک

74HC595 شفٹ رجسٹر کے لیے، یقینی بنائیں کہ پن 1 3.3V ریل سے جڑا ہے، اور پن 8 گراؤنڈ سے۔ ڈیٹا آؤٹ پٹ پن (DS) کو ESP32 پر پن 25 سے، شفٹ کلاک پن (SHCP) کو پن 26 سے، اور اسٹوریج کلاک پن (STCP) کو پن 27 سے جوڑیں۔ پش بٹن کو ESP32 پر پن 13 اور گراؤنڈ کے درمیان جوڑا جانا چاہیے، تاکہ دبانے پر یہ پن کو لو کر دے۔

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

کوڈ میں، ہم پہلے شفٹ رجسٹر اور بٹن کے لیے استعمال ہونے والے پنوں کی وضاحت کرتے ہیں۔ بٹن پن کو buttonPin کے طور پر بیان کیا گیا ہے اور ESP32 پر پن 13 پر سیٹ کیا گیا ہے۔ ڈیٹا اری datArray میں سات حصوں والی ڈسپلے کے لیے نمبر 0-9 کی بائنری نمائندگی ہوتی ہے۔


const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

setup() فنکشن میں، ہم بٹن پن کو ان پٹ موڈ پر اور شفٹ رجسٹر پنوں کو آؤٹ پٹ موڈ پر سیٹ کرتے ہیں۔ یہ بٹن سے ان پٹ پڑھنے اور ڈسپلے کو ڈیٹا بھیجنے کے لیے پنوں کو تیار کرتا ہے۔


void setup ()
{
  pinMode(buttonPin,INPUT); 
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

پروگرام کی مرکزی منطق loop() فنکشن میں پائی جاتی ہے۔ یہ چیک کرتا ہے کہ آیا بٹن دبایا گیا ہے، ایک بے ترتیب نمبر پیدا کرتا ہے، اور نمبر کو سات حصوں والی ڈسپلے پر دکھانے کے لیے show_number() فنکشن کو کال کرتا ہے۔


void loop()
{
  if(digitalRead(buttonPin) == LOW)
  {
    int diceNumber = random(1, 7);
    show_number(diceNumber);
    delay(50);
  }
}

show_number() فنکشن ڈیٹا اری سے مناسب قدر شفٹ رجسٹر کو بھیجتا ہے، جو پھر پیدا شدہ نمبر دکھانے کے لیے ڈسپلے کے حصوں کو کنٹرول کرتا ہے۔ یہ فنکشن بٹن دبانے پر بصری فیڈ بیک کے لیے اہم ہے۔

74HC595 LED Display: Seven-Segment Explained
74HC595 LED ڈسپلے: سات حصوں کی وضاحت

مظاہرہ / کیا توقع کریں

جب سیٹ اپ مکمل ہو جائے اور کوڈ اپ لوڈ ہو جائے، بٹن دبانے سے 1 سے 6 کے درمیان ایک تصادفی نمبر پیدا ہوگا، جو سیون-سیگمنٹ ڈسپلے پر ظاہر ہوگا۔ اگر سب کچھ درست طریقے سے وائر کیا گیا ہو، تو ڈسپلے پر بٹن دبانے کے ساتھ ہی ایک نمبر نظر آنا چاہیے۔ فلوٹنگ ان پٹس سے ہوشیار رہیں؛ یقینی بنائیں کہ بٹن زمین سے مناسب طریقے سے جڑا ہوا ہے تاکہ غیر متوقع رویے سے بچا جا سکے (ویڈیو میں 1:30 پر)۔

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

  • 00:00 آغاز
  • 1:48 پروجیکٹ کا تعارف
  • 3:40 ڈیجیٹل ڈائس کے لیے وائرنگ کی وضاحت
  • 13:16 ڈیجیٹل ڈائس کے لیے آرڈوینو کوڈ کی وضاحت
  • 19:19 آرڈوینو آئی ڈی ای میں ESP32 بورڈ اور COM پورٹ کا انتخاب
  • 21:00 ڈیجیٹل ڈائس کا مظاہرہ
  • 22:15 آرڈوینو کوڈ کی اصلاح

تصاویر

74HC595 LED Display: Seven-Segment Explained
74HC595 LED Display: Seven Segment explained
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-wiring
ESP32-33_digital-dice-main
ESP32-33_digital-dice-main
ESP32-33_digital-dice-schematic
ESP32-33_digital-dice-schematic
834-ESP32 Tutorial 33/55- Arduino code for digital dice
زبان: C++
// Define the pins used for the 74hc595 and button
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 
const int buttonPin = 13;

// Define an array of values to display numbers on a 7-segment display
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;

void setup ()
{
  // Set the button pin to input mode
  pinMode(buttonPin,INPUT); 

  //Set pins to 74hc595
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

void loop()
{
  // Check if the button is pressed
  if(digitalRead(buttonPin) == LOW)
  {
    // Generate a random number between 1 and 6
    int diceNumber = random(1, 7);

     // Display the number on the 7-segment display
    show_number(diceNumber);

    // Delay for 50 milliseconds
    delay(50);
  }
}

// Function to display a number on a 7-segment display
void show_number(int num)
{
  // Ground ST_CP and hold low for as long as you are transmitting
  digitalWrite(STcp, LOW);

  // Send the data for the number to the shift register
  shiftOut(DS, SHcp, MSBFIRST, datArray[num]);

  // Pull the ST_CP to save the data
  digitalWrite(STcp, HIGH);
}

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

فائلیں📁

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