کوډ ولټوئ

د ESP32 ټیوټوریل 33/55 - د سان فاونډر د ESP32 IoT زده کړې کټ په کارولو سره ډیجیټل ډایس

د ESP32 ټیوټوریل 33/55 - د سان فاونډر د ESP32 IoT زده کړې کټ په کارولو سره ډیجیټل ډایس

په دې ټیوټوریل کې به موږ د اوو-برخو ښودونکي (seven-segment display) او د 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 په آردوینو IDE کې د 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);
}

سرچینې او حوالې

فایلونه📁

هیڅ فایل شتون نلري.