كود البحث

كيفية استخدام شاشة TM1638 ذات 4 خانات. شاهد الفيديو

كيفية استخدام شاشة TM1638 ذات 4 خانات. شاهد الفيديو

وحدة TM1638 مكوّن متعدد الاستخدامات يمكنه عرض الأرقام والحروف مع التحكم بها عبر الأزرار. في هذا الدرس، ستتعلم كيفية إعداد وبرمجة هذه الشاشة لعرض قيم مختلفة، بما في ذلك الأرقام والقيم السداسية عشرية. بنهاية هذا الدليل، ستحصل على شاشة تعمل بكامل وظائفها تستجيب للضغط على الأزرار وتغيّر ما يُعرض بناءً على مدخلات المستخدم. يمكنك مشاهدة عرض توضيحي في الفيديو عند 00:00.

TM1637 keypad display module-1

شرح الأجهزة

صُممت وحدة TM1638 لعرض المعلومات واستقبال المدخلات من الأزرار. تتألف من شاشة LED بثمانية خانات ومصفوفة مكونة من 16 زرًا. يمكن برمجة كل زر لتشغيل وظائف مختلفة، مما يتيح واجهة سهلة الاستخدام. تتصل الوحدة بالمتحكم الدقيق عبر ثلاثة دبابيس: دبوس إدخال/إخراج بيانات، ودبوس ساعة، ودبوس ستروب. يتيح هذا التكوين اتصالًا فعالًا بين المتحكم الدقيق وTM1638. تدير الدائرة المتكاملة TM1638 العرض ومدخلات الأزرار. تستخدم بروتوكول اتصال تسلسلي يتيح لها التحكم بالشاشة وقراءة حالات الأزرار بتوصيلات قليلة. كل ضغطة على زر ترسل إشارة إلى المتحكم الدقيق، الذي يمكنه بعد ذلك تنفيذ إجراءات محددة اعتمادًا على الزر الذي تم ضغطه.

تفاصيل ورقة البيانات

الشركة المصنعةQYF
رقم القطعةTM1638
جهد المنطق/المدخلات والمخرجات5 V
جهد التغذية5 فولت
تيار الإخراج (لكل مقطع)20 مللي أمبير
تيار الذروة (الإجمالي)120 مللي أمبير
عتبات الدخل المنطقي0.2 V (منخفض) / 0.8 V (مرتفع)
حزمةحزمة DIP ذات 28 دبوسًا
  • تأكد من أن جهد الإمداد مستقر عند 5 فولت لتحقيق الأداء الأمثل.
  • حدّ من التيار الخارج لتجنّب تلف الشاشة.
  • استخدم مقاومات لتجنب التيار المفرط عبر مصابيح LED.
  • قم بإلغاء ارتداد مدخلات الأزرار في البرمجيات لتجنب التفعيلات المتعددة.
  • اجعل الأسلاك قصيرة لتقليل التشويش في الاتصال.

تعليمات التوصيل الكهربائي

لتوصيل وحدة TM1638 بالمتحكم الدقيق، قم بتوصيلها كما يلي:

Arduino wiring for TM1637 keypad display module
Arduino wiring for TM1637 keypad display module
- وصل الدبوس المسمىVCCعلى الـ TM1638 إلى مصدر طاقة 5V للمتحكم الدقيق الخاص بك. - قم بتوصيلGNDوصل الدبوس الموجود على TM1638 بأرضي متحكمك الدقيق. - قم بتوصيل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;
    // other cases follow
  }
}

تتحقق هذه الدالة من أي زر مضغوط باستخدامgetButtons()ويقوم بتحديث العرض وفقًا لذلك. المتغيرmodeيحدد أي نص يُعرض بناءً على الزر المضغوط. أخيرًا، تقوم الحلقة الرئيسية بتحديث العرض باستمرار.

void loop() 
{
  update(&module, &mode);
}

تستدعي هذه الحلقةupdateتعمل الدالة على ضمان تحديث العرض بناءً على تفاعل المستخدم. لفهمٍ كامل، راجع الشيفرة الكاملة المحمّلة أسفل المقال.

عرض توضيحي / ما الذي تتوقعه

بمجرد توصيل كل شيء وتحميل الكود، يجب أن يؤدي الضغط على الأزرار إلى تغيير نص العرض تبعاً لذلك. على سبيل المثال، الضغط على الزر 1 سيعرض "اضغط 1"، بينما يغير الضغط على الزر 2 النص إلى "اضغط 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++
/*
 * هذا هو كود أردوينو لشاشة TM1638 المكونة من 8 أرقام. مع 16 زر مصفوفة.
 * 
 * كتبها أحمد نجرابي لفيديو روبوجَکس
 * التاريخ: 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; // زر البداية صفر
}

void update(TM1638QYF* module, word* mode) {
  word buttons = module->getButtons();

 // تم الضغط على الزر - تغيير الوضع
  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: // س9
      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: // زر غير معروف
      module->setDisplayToString("?????");
      break;
  }
}

void loop()
{
  update(&module, &mode);
}

الأشياء التي قد تحتاجها

الموارد والمراجع

ملفات📁

مكتبات أردوينو (ملف مضغوط)

دليل المستخدم