TM1638 4-ہندسوں والی ڈسپلے کیسے استعمال کریں۔ ویڈیو دیکھیں
TM1638 ماجیول ایک کثیر الاستعمال جزو ہے جو نمبرز اور حروف دکھا سکتا ہے جبکہ بٹنوں کے ذریعے کنٹرول کیا جاتا ہے۔ اس سبق میں، آپ سیکھیں گے کہ اس ڈسپلے کو کیسے ترتیب دیں اور پروگرام کریں تاکہ مختلف اقدار، بشمول نمبرز اور ہیکس ویلیوز دکھائی جا سکیں۔ اس گائیڈ کے اختتام تک، آپ کے پاس ایک مکمل فعال ڈسپلے ہوگا جو بٹن دبانے پر ردعمل دیتا ہے اور صارف کے ان پٹ کی بنیاد پر جو دکھایا جاتا ہے اسے تبدیل کرتا ہے۔ آپ ویڈیو میں ایک مظاہرہ دیکھ سکتے ہیں (ویڈیو میں 00:00 پر)۔
ہارڈویئر کی وضاحت
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 ماجیول کو وائر کرنے کے لیے، آپ اسے اپنے مائیکروکنٹرولر سے اس طرح جوڑیں گے:
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 - کوڈ کی وضاحت اور مظاہرہ
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);
}
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزونTM1638 on Amazonamzn.to
-
علی ایکسپریسTM1638 keypad module on AliExpresss.click.aliexpress.com
وسائل اور حوالہ جات
-
باہرونیTM1638 Library (from GitHub)github.com
فائلیں📁
آرڈوینو لائبریریاں (زپ)
صارف کا دستی کتاب
-
TM1638 دستی کتاب
robojax-TM1638_manual.pdf5.07 MB