কোড অনুসন্ধান

ESP32 টিউটোরিয়াল ১০/৫৫ - সেভেন সেগমেন্ট ডিসপ্লে ৭৪HC৫৯৫ ব্যবহার করে ডিজিটাল কাউন্টার - ESP32 আইওটি লার্নিং কিট

ESP32 টিউটোরিয়াল ১০/৫৫ - সেভেন সেগমেন্ট ডিসপ্লে ৭৪HC৫৯৫ ব্যবহার করে ডিজিটাল কাউন্টার - ESP32 আইওটি লার্নিং কিট

এই টিউটোরিয়ালে, আমরা ESP32 মাইক্রোকন্ট্রোলার দ্বারা নিয়ন্ত্রিত একটি সেভেন-সেগমেন্ট ডিসপ্লে ব্যবহার করে একটি ডিজিটাল কাউন্টার তৈরি করব। কাউন্টারটি 0 থেকে 9 পর্যন্ত বৃদ্ধি পাবে এবং তারপর আবার 0 এ হ্রাস পাবে, যা গণনা প্রক্রিয়ার একটি স্পষ্ট দৃশ্য প্রদান করবে। আমরা সেভেন-সেগমেন্ট ডিসপ্লেতে পৃথক সেগমেন্ট চালু করা এবং অক্ষর প্রদর্শন করাও অন্বেষণ করব।

ESP32_Animte7Segment-segments

এই প্রকল্পটি ডিসপ্লে নিয়ন্ত্রণ করতে একটি 74HC595 শিফট রেজিস্টার ব্যবহার করে, যা আমাদের ESP32-এ খুব বেশি GPIO পিন ব্যবহার না করেই সেগমেন্টগুলি দক্ষতার সাথে পরিচালনা করতে দেয়। শিফট রেজিস্টারে বাইনারি মান পাঠানোর মাধ্যমে, আমরা সংখ্যা এবং অক্ষর উপস্থাপন করতে সংশ্লিষ্ট সেগমেন্টগুলি আলোকিত করতে পারি। প্রক্রিয়াটি আরও গভীরভাবে বোঝার জন্য, আপনি ভিডিওটি দেখতে পারেন (ভিডিওতে 03:15 এ)।

ESP32_Animte7Segment-letters

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পের প্রধান উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, একটি 74HC595 শিফট রেজিস্টার এবং একটি সেভেন-সেগমেন্ট ডিসপ্লে। ESP32 একটি শক্তিশালী মাইক্রোকন্ট্রোলার যার বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা রয়েছে, যা এটিকে IoT প্রকল্পের জন্য উপযুক্ত করে তোলে। 74HC595 একটি শিফট রেজিস্টার যা আমাদের মাত্র কয়েকটি ইনপুট পিন ব্যবহার করে একাধিক আউটপুট নিয়ন্ত্রণ করতে দেয়। এটি সিরিয়াল ডেটা নিয়ে সমান্তরাল আউটপুটে রূপান্তর করে কাজ করে, যা একটি সেভেন-সেগমেন্ট ডিসপ্লে চালানোর জন্য উপযুক্ত।

সেভেন-সেগমেন্ট ডিসপ্লেতে সাতটি পৃথক LED থাকে যা একটি আট-আকৃতির প্যাটার্নে সাজানো। শিফট রেজিস্টারে উপযুক্ত বাইনারি মান পাঠিয়ে প্রতিটি সেগমেন্ট চালু বা বন্ধ করা যেতে পারে। উদাহরণস্বরূপ, 0 সংখ্যাটি প্রদর্শন করতে, মাঝের সেগমেন্ট (G) ছাড়া সমস্ত সেগমেন্ট আলোকিত করতে হবে।

ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1

ডেটাশিট বিবরণ

প্রস্তুতকারক Texas Instruments
পার্ট নম্বর 74HC595
লজিক/IO ভোল্টেজ 2 V থেকে 6 V
সাপ্লাই ভোল্টেজ 2 V থেকে 6 V
আউটপুট কারেন্ট (প্রতি চ্যানেল) 6 mA
পিক কারেন্ট (প্রতি চ্যানেল) 35 mA
PWM ফ্রিকোয়েন্সি নির্দেশিকা 1 kHz পর্যন্ত
ইনপুট লজিক থ্রেশহোল্ড 0.3 VCC থেকে 0.7 VCC
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন সর্বোচ্চ 0.2 V
থার্মাল সীমা 125 °C
প্যাকেজ DIP-16
নোট / ভেরিয়েন্ট বিভিন্ন প্যাকেজে উপলব্ধ

 

  • সঠিক ভোল্টেজ সাপ্লাই নিশ্চিত করুন (2 V থেকে 6 V)।
  • অতিরিক্ত গরম হওয়া রোধ করতে আউটপুট কারেন্ট সীমিত করুন।
  • সর্বোত্তম উজ্জ্বলতার জন্য প্রতিটি সেগমেন্টের জন্য পৃথক রোধ ব্যবহার করুন।
  • শর্ট সার্কিট এবং ভুল সংযোগ এড়াতে ওয়্যারিংয়ে সতর্ক থাকুন।
  • ভুল কনফিগারেশন এড়াতে পিনআউটটি সাবধানে অনুসরণ করুন।

ওয়্যারিং নির্দেশাবলী

ESP32-10-seven-segment-wiring

আপনার ব্রেডবোর্ড সেট আপ করে শুরু করুন। গ্রাউন্ড রেল (নীল লাইন) এবং পাওয়ার রেল (লাল লাইন) সংযোগ করুন। গ্রাউন্ডটি ব্রেডবোর্ডের এক পাশের নীল লাইনের সাথে সংযুক্ত হওয়া উচিত, যখন পাওয়ারটি বিপরীত পাশের লাল লাইনের সাথে সংযুক্ত হওয়া উচিত। ESP32-এর গ্রাউন্ডকে গ্রাউন্ড রেলের সাথে সংযোগ করতে একটি কালো তার এবং ESP32-এর 3.3V পিনকে পাওয়ার রেলের সাথে সংযোগ করতে একটি লাল তার ব্যবহার করুন।

এরপর, 74HC595 শিফট রেজিস্টারটি ব্রেডবোর্ডে ঢোকান, নিশ্চিত করুন যে খাঁজটি সঠিকভাবে অবস্থান করছে। পিন 11 (DS) কে ESP32-এর পিন 25 এর সাথে, পিন 12 (SH_CP) কে পিন 26 এর সাথে এবং পিন 14 (ST_CP) কে পিন 27 এর সাথে সংযোগ করুন। শিফট রেজিস্টারের গ্রাউন্ড (পিন 8) গ্রাউন্ড রেলের সাথে এবং পিন 10 (MR) সক্রিয়করণের জন্য পাওয়ার রেলের সাথে সংযোগ করুন।

সেভেন-সেগমেন্ট ডিসপ্লের জন্য, সেগমেন্টগুলির (a-g) সাথে সম্পর্কিত পিনগুলিকে শিফট রেজিস্টারের আউটপুট পিনের সাথে সংযোগ করুন। কারেন্ট সীমিত করতে প্রতিটি সেগমেন্টের জন্য সিরিজে একটি রোধ (220 ওহম) ব্যবহার করুন। সাধারণ পিনের জন্য সঠিক সংযোগ নিশ্চিত করুন, যা আপনার ডিসপ্লের ধরণের উপর ভিত্তি করে সাধারণ অ্যানোড বা ক্যাথোড হতে পারে।

কোড উদাহরণ ও ওয়াকথ্রু

সেটআপ ফাংশনে, আমরা শিফট রেজিস্টারের সাথে সংযুক্ত পিনগুলিকে আউটপুট হিসাবে সংজ্ঞায়িত করে শুরু করি। এটি নিশ্চিত করে যে আমাদের ESP32 ডিসপ্লেতে পাঠানো ডেটা নিয়ন্ত্রণ করতে পারে।

void setup ()
{
  //পিনগুলিকে আউটপুট হিসাবে সেট করুন
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

এখানে, আমরা STcp, SHcp, এবং DS কে শিফট রেজিস্টারের ST_CP, SH_CP এবং DS এর সাথে সংযুক্ত পিন হিসাবে সংজ্ঞায়িত করি। এই পিনগুলিকে আউটপুট হিসাবে সেট করা আমাদের শিফট রেজিস্টার নিয়ন্ত্রণ করতে দেয়।

প্রোগ্রামের মূল লুপটি 0 থেকে 9 পর্যন্ত গণনা করে, shiftOut ফাংশন ব্যবহার করে ডিসপ্লেতে সংশ্লিষ্ট মান পাঠায়।

for(int num = 0; num <10; num++)
{
    digitalWrite(STcp,LOW); //গ্রাউন্ড ST_CP এবং যতক্ষণ ট্রান্সমিট করছেন ততক্ষণ LOW ধরে রাখুন
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //ডেটা সংরক্ষণ করতে ST_CP টানুন
    delay(1000);
}

এই লুপটি num ভেরিয়েবল বৃদ্ধি করে, প্রতি সেকেন্ডে datArray থেকে সংশ্লিষ্ট মান ডিসপ্লেতে পাঠায়। shiftOut ফাংশনটি ডেটা শিফট রেজিস্টারে প্রেরণ করে, যা তখন উপযুক্ত সেগমেন্টগুলো আলোকিত করে।

প্রদর্শন / কী আশা করবেন

ওয়্যারিং সম্পূর্ণ হয়ে কোড আপলোড করার পরে, আপনার সাত-সেগমেন্ট ডিসপ্লেতে 0 থেকে 9 পর্যন্ত গণনা দেখা উচিত, সংক্ষিপ্ত বিরতির পরে আবার 0 পর্যন্ত নিচে গণনা করবে। প্রতিটি সংখ্যা এক সেকেন্ডের জন্য প্রদর্শিত হবে। যদি আপনি গণনা দ্রুত করতে চান, তাহলে লুপের মধ্যে delay সামঞ্জস্য করতে পারেন (ভিডিওতে 15:30 এ)।

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

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 1:53 সাত সেগমেন্টের পরিচিতি
  • 4:38 ওয়্যারিং ব্যাখ্যা
  • 13:15 Arduino কোড-1
  • 17:01 COM পোর্ট এবং ESP32 বোর্ড নির্বাচন
  • 18:43 প্রদর্শন-1
  • 20:13 শুধুমাত্র একটি অঙ্ক প্রদর্শন
  • 21:38 উপরে এবং নিচে কাউন্টার
  • 23:07 প্রতিটি সেগমেন্ট চালু/বন্ধ করা
  • 24:53 A, B, C, D, E এবং F প্রদর্শন

ছবি

ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32-10-seven-segment-wiring
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
ভাষা: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 

int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void setup ()
{
  //set pins to output
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}
void loop()
{
  for(int num = 0; num <10; num++)
  {
    digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
    delay(1000);
  }
}

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

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।