کوڈ تلاش کریں

TM1638 4-ہندسوں والی ڈسپلے کیسے استعمال کریں۔ ویڈیو دیکھیں

TM1638 4-ہندسوں والی ڈسپلے کیسے استعمال کریں۔ ویڈیو دیکھیں

TM1638 ماجیول ایک کثیر الاستعمال جزو ہے جو نمبرز اور حروف دکھا سکتا ہے جبکہ بٹنوں کے ذریعے کنٹرول کیا جاتا ہے۔ اس سبق میں، آپ سیکھیں گے کہ اس ڈسپلے کو کیسے ترتیب دیں اور پروگرام کریں تاکہ مختلف اقدار، بشمول نمبرز اور ہیکس ویلیوز دکھائی جا سکیں۔ اس گائیڈ کے اختتام تک، آپ کے پاس ایک مکمل فعال ڈسپلے ہوگا جو بٹن دبانے پر ردعمل دیتا ہے اور صارف کے ان پٹ کی بنیاد پر جو دکھایا جاتا ہے اسے تبدیل کرتا ہے۔ آپ ویڈیو میں ایک مظاہرہ دیکھ سکتے ہیں (ویڈیو میں 00:00 پر)۔
TM1637 keypad display module-1

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

TM1638 ماجیول معلومات دکھانے اور بٹنوں سے ان پٹ حاصل کرنے کے لیے ڈیزائن کیا گیا ہے۔ یہ 8 ہندسوں والی LED ڈسپلے اور 16 بٹنوں کے میٹرکس پر مشتمل ہے۔ ہر بٹن کو مختلف افعال متحرک کرنے کے لیے پروگرام کیا جا سکتا ہے، جس سے صارف کے لیے دوستانہ انٹرفیس ملتا ہے۔ ماجیول تین پنوں کے ذریعے مائیکروکنٹرولر سے جڑتا ہے: ایک ڈیٹا ان پٹ/آؤٹ پٹ پن، ایک کلاک پن، اور ایک سٹروب پن۔ یہ سیٹ اپ مائیکروکنٹرولر اور TM1638 کے درمیان موثر مواصلت کو قابل بناتا ہے۔ TM1638 IC ڈسپلے اور بٹن ان پٹس کا انتظام کرتا ہے۔ یہ ایک سیریل کمیونیکیشن پروٹوکول استعمال کرتا ہے جو اسے کم سے کم وائرنگ کے ساتھ ڈسپلے کو کنٹرول کرنے اور بٹن کی حالت پڑھنے کی اجازت دیتا ہے۔ ہر بٹن دبانے سے مائیکروکنٹرولر کو سگنل بھیجا جاتا ہے، جو پھر اس بنیاد پر مخصوص کارروائیاں انجام دے سکتا ہے کہ کون سا بٹن دبایا گیا۔

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

مینوفیکچررQYF
پارٹ نمبرTM1638
لاجک/آئی او وولٹیج5 V
سپلائی وولٹیج5 V
آؤٹ پٹ کرنٹ (فی سیگمنٹ)20 mA
پیک کرنٹ (کل)120 mA
ان پٹ لاجک تھریشولڈز0.2 V (کم) / 0.8 V (زیادہ)
پیکیجDIP-28
  • بہترین کارکردگی کے لیے سپلائی وولٹیج کو 5 V پر مستحکم رکھیں۔
  • ڈسپلے کو نقصان سے بچانے کے لیے آؤٹ پٹ کرنٹ کو محدود کریں۔
  • LEDs کے ذریعے ضرورت سے زیادہ کرنٹ سے بچنے کے لیے ریزسٹرز استعمال کریں۔
  • متعدد ٹرگرز سے بچنے کے لیے سافٹ ویئر میں بٹن ان پٹس کو ڈیباؤنس کریں۔
  • مواصلت میں شور کم کرنے کے لیے وائرنگ مختصر رکھیں۔

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

TM1638 ماجیول کو وائر کرنے کے لیے، آپ اسے اپنے مائیکروکنٹرولر سے اس طرح جوڑیں گے:
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- TM1638 پر VCC لیبل والے پن کو اپنے مائیکروکنٹرولر کی 5V پاور سپلائی سے جوڑیں۔ - TM1638 پر GND پن کو اپنے مائیکروکنٹرولر کی گراؤنڈ سے جوڑیں۔ - STB پن (اکثر STROBE کے طور پر لیبل ہوتا ہے) کو اپنے مائیکروکنٹرولر کے ڈیجیٹل پن 5 سے جوڑیں۔ - CLK پن (کلاک) کو اپنے مائیکروکنٹرولر کے ڈیجیٹل پن 2 سے جوڑیں۔ - DIO پن (ڈیٹا ان پٹ/آؤٹ پٹ) کو اپنے مائیکروکنٹرولر کے ڈیجیٹل پن 3 سے جوڑیں۔ سسٹم کو آن کرنے سے پہلے اپنی کنکشنز ضرور چیک کریں۔ اگر آپ نے ویڈیو پر عمل کیا ہے (ویڈیو میں 02:30 پر)، تو آپ کو وائرنگ میں کوئی مسئلہ نہیں ہونا چاہیے۔

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

درج ذیل کوڈ سنیپٹ TM1638 ماجیول کو ابتدائی شکل دیتا ہے اور ڈسپلے کو ترتیب دیتا ہے۔ شناخت کنندہ module TM1638 انسٹنس کی نمائندگی کرتا ہے جو ڈسپلے کے ساتھ تعامل کے لیے بنایا گیا ہے۔
TM1638QYF module(DIO, CLK, STB);
void setup() 
{
  module.setupDisplay(true, 7);
}
اس سنیپٹ میں، ڈسپلے کو زیادہ سے زیادہ چمک (7) دکھانے کے لیے ترتیب دیا گیا ہے۔ کوڈ کا اگلا حصہ بٹن دبانے کا انتظام کرتا ہے اور اس بنیاد پر ڈسپلے کو تبدیل کرتا ہے کہ کون سا بٹن دبایا گیا۔
void update(TM1638QYF* module, word* mode) {
  word buttons = module->getButtons();
  if (buttons != 0) {
    *mode = buttons >> 1;
  }
  switch (*mode) {
    case 0: module->setDisplayToString("press 1"); break;
    // دیگر کیسز درج ذیل ہیں
  }
}
یہ فنکشن چیک کرتا ہے کہ getButtons() کا استعمال کرتے ہوئے کون سا بٹن دبایا گیا ہے اور اس کے مطابق ڈسپلے کو اپ ڈیٹ کرتا ہے۔ متغیر mode اس بات کا تعین کرتا ہے کہ دبائے گئے بٹن کی بنیاد پر کیا متن دکھایا جائے۔ آخر میں، مین لوپ مسلسل ڈسپلے کو اپ ڈیٹ کرتا ہے۔
void loop() 
{
  update(&module, &mode);
}
یہ لوپ update فنکشن کو کال کرتا ہے، اس بات کو یقینی بناتا ہے کہ صارف کے تعامل کی بنیاد پر ڈسپلے تازہ ہو۔ مکمل تفہیم کے لیے، مضمون کے نیچے لوڈ کردہ مکمل کوڈ دیکھیں۔

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

ایک بار جب آپ سب کچھ وائر کر لیں اور کوڈ اپ لوڈ کر لیں، تو بٹن دبانے سے ڈسپلے کا متن اس کے مطابق تبدیل ہونا چاہیے۔ مثال کے طور پر، بٹن 1 دبانے سے "press 1" دکھائے گا، جبکہ بٹن 2 دبانے سے یہ "press 2" میں تبدیل ہو جائے گا۔ اگر کوئی مسئلہ ہو تو، اپنی وائرنگ دوبارہ چیک کریں اور یقینی بنائیں کہ مذکورہ صحیح پن استعمال ہو رہے ہیں۔ ویڈیو کو دیکھنا (ویڈیو میں 05:00 پر) بھی اس بات کی تصدیق کرنے میں مدد کرے گا کہ سب کچھ توقع کے مطابق کام کر رہا ہے۔

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

  • 00:00 - تعارف
  • 02:30 - وائرنگ ہدایات
  • 05:00 - کوڈ کی وضاحت اور مظاہرہ

تصاویر

TM1637 keypad display module-1
TM1637 keypad display module-1
TM1637 keypad display module-2
TM1637 keypad display module-2
TM1637 keypad display module-3
TM1637 keypad display module-3
TM1637 keypad display module
TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
28-This is the Arduino code for a TM1638 8-digit display with a 4x4 matrix button.
زبان: C++
/*
 * This is the Arduino code for TM1638 8-digit display.
 * with 16 matrix buttons.
 *  * 
 * Written by Ahmad Nejrabi for Robojax Video
 * Date: Dec 10, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

/*
// http://arduinolearning.com/code/qyf-tm1638-and-arduino-module.php#codesyntax_2
 * Modified for Robojax video on Dec 10, 2017

 */


#include <TM1638.h>
#include <TM1638QYF.h>

#define STB 5
#define DIO 3
#define CLK 2
 
TM1638QYF module(DIO, CLK, STB);
word mode;
 
 
void setup() 
{
  module.setupDisplay(true, 7);
  mode = 0;//initial button zero 
}
 
void update(TM1638QYF* module, word* mode) {
  word buttons = module->getButtons();
 
  // button pressed - change mode
  if (buttons != 0) {
    *mode = buttons >> 1;
 
    if (*mode < 0) {
      module->clearDisplay();
      delay(100);
    }
  }
 
  switch (*mode) {
    case 0://S1
      module->setDisplayToString("press 1");
      break;
    case 1://S2
      module->setDisplayToString("press 2");
      break;  
    case 2://S3
      module->setDisplayToString("press 3");
      break;
    case 4://S4
      module->setDisplayToString("press 4");
      break;
    case 8://S5
      module->setDisplayToString("press 5");
      break;
    case 16://S6
      module->setDisplayToString("press 6");
      break;
    case 32://S7
      module->setDisplayToString("press 7");
      break;
    case 64://S8
      module->setDisplayToString("press 8");
      break;
    case 128://S9
      module->setDisplayToString("press 9");
      break;
    case 256://S10
      module->setDisplayToString("press 10");
      break;
    case 512://S11
      module->setDisplayToString("press 11");
      break;
    case 1024://S12
      module->setDisplayToString("press 12");
      break;
    case 2048://S13
      module->setDisplayToString("press 13");
      break;
    case 4096://S14
      module->setDisplayToString("press 14");
      break;
    case 8192://S15
      module->setDisplayToString("press 15");
      break;
    case 16384://S16
      module->setDisplayToString("robojax");
      break;
    default:// unknown button
      module->setDisplayToString("?????");
      break;
  }
}
 
void loop() 
{
  update(&module, &mode);
}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

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

فائلیں📁

آرڈوینو لائبریریاں (زپ)

صارف کا دستی کتاب