شِفر (کود) جستجو

نحوه استفاده از نمایشگر 4 رقمی TM1638. ویدیو را تماشا کنید

نحوه استفاده از نمایشگر 4 رقمی TM1638. ویدیو را تماشا کنید

ماجیول TM1638 یک قطعه چندکاره است که می‌تواند اعداد و کاراکترها را نمایش دهد و توسط دکمه‌ها کنترل شود. در این آموزش، شما یاد می‌گیرید چگونه این نمایشگر را راه‌اندازی و برنامه‌نویسی کنید تا مقادیر مختلفی، از جمله اعداد و مقادیر هگز، را نمایش دهد. تا پایان این راهنما، یک نمایشگر کاملاً عملیاتی خواهید داشت که به فشار دکمه‌ها واکنش نشان می‌دهد و محتوای نمایش‌شده را بر اساس ورودی کاربر تغییر می‌دهد. می‌توانید یک نمایش نمونه را در ویدئو در 00:00 ببینید.

TM1637 keypad display module-1

سخت‌افزار توضیح داده شده

ماجیول TM1638 برای نمایش اطلاعات و دریافت ورودی از دکمه‌ها طراحی شده است. این ماجیول شامل یک نمایشگر LED هشت‌رقمی و ماتریسی از 16 دکمه است. هر دکمه را می‌توان برنامه‌ریزی کرد تا عملکردهای مختلفی را فعال کند و امکان ایجاد رابط کاربری کاربرپسند را فراهم سازد. ماجیول از طریق سه پایه به میکروکنترلر متصل می‌شود: یک پایه ورودی/خروجی داده، یک پایه کلاک و یک پایه استروب. این پیکربندی ارتباط کارآمدی بین میکروکنترلر و TM1638 برقرار می‌کند. آی‌سی TM1638 مدیریت نمایش و ورودی‌های دکمه‌ها را بر عهده دارد. این آی‌سی از یک پروتکل ارتباط سریالی استفاده می‌کند که به آن اجازه می‌دهد با سیم‌کشی حداقلی نمایش را کنترل کرده و وضعیت دکمه‌ها را بخواند. هر فشردن دکمه سیگنالی به میکروکنترلر می‌فرستد که می‌تواند بر اساس اینکه کدام دکمه فشرده شده است، اقدامات مشخصی را اجرا کند.

جزئیات مشخصات فنی

تولیدکنندهQYF
شماره قطعهTM1638
ولتاژ منطقی/ورودی-خروجی5 V
ولتاژ تغذیه۵ ولت
جریان خروجی (به ازای هر بخش)20 میلی‌آمپر
جریان پیک (کل)120 میلی‌آمپر
آستانه‌های منطقی ورودی0.2 V (پایین) / 0.8 V (بالا)
بستهدی‌آی‌پی-۲۸
  • اطمینان حاصل کنید که ولتاژ تغذیه برای عملکرد بهینه در 5 V پایدار باشد
  • جریان خروجی را محدود کنید تا از آسیب دیدن نمایشگر جلوگیری شود.
  • برای جلوگیری از عبور جریان بیش از حد از ال‌ای‌دی‌ها، از مقاومت‌ها استفاده کنید.
  • ورودی‌های کلید را در نرم‌افزار با حذف نوسان (debounce) پردازش کنید تا از ایجاد چندین تحریک جلوگیری شود.
  • برای کاهش اغتشاش (نویز) ارتباطی، سیم‌کشی را کوتاه نگه دارید.

دستورالعمل‌های سیم‌کشی

برای سیم‌کشی ماجیول 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 عبارت "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++
/*
 * این شِفر (کود) آرودینو برای نمایشگر ۸ رقمی TM1638 با ۱۶ دکمه ماتریسی است.
 * 
 * نویسنده: احمد نجرابی برای ویدئو Robojax
 * تاریخ: ۱۰ دسامبر ۲۰۱۷، در اِجَکس، انتاریو، کانادا
 * اجازه داده شده است که این شِفر (کود) به اشتراک گذاشته شود به شرط اینکه این یادداشت همراه با شِفر (کود) باقی بماند.
 * سلب مسئولیت: این شِفر (کود) "به شکل موجود" است و تنها برای اهداف آموزشی ارائه شده است.
 */
#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: // 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: // دکمه ناشناخته
      module->setDisplayToString("?????");
      break;
  }
}

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

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

فایل‌ها📁

کتابخانه‌های آردوینو (zip)

راهنمای کاربر