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

استفاده از دو نمایشگر LED 4 رقمی TM1637 دیگر با آردوینو

استفاده از دو نمایشگر LED 4 رقمی TM1637 دیگر با آردوینو

آیا تا به حال نیاز داشته‌اید که دو مقدار متفاوت را به طور همزمان در پروژه آردوینو خود نمایش دهید؟ ممکن است شما یک ایستگاه meteorologie می‌سازید که باید هم دما و هم رطوبت را نمایش دهد، یا یک مانیتور منبع تغذیه که به طور همزمان ولتاژ و جریان را نشان می‌دهد. استفاده از دو نمایشگر LED 4 رقمی TM1637 یک راه‌حل ساده و کم‌هزینه است. این راهنما به شما نشان می‌دهد که چگونه دو تا از این نمایشگرهای محبوب را با استفاده از یک بورد آردوینو متصل و برنامه‌نویسی کنید، که به شما این امکان را می‌دهد که اطلاعات مستقل را در هر صفحه نمایش دهید. شما می‌توانید از این تکنیک برای پروژه‌های مختلفی استفاده کنید، مانند:

  • ساخت یک ولت‌سنج دوکاناله برای نظارت بر دو منبع تغذیه جداگانه.
  • ایجاد یک تایمر معکوس و یک شمارنده دور برای پروژه مسابقه بعدی شما.
  • نمایش زمان جاری روی یک نمایشگر و دمای محیط روی دیگری.
  • ساخت یک تابلو امتیازات برای بازی‌های دو نفره.

در این آموزش، ما دو ماجیول TM1637 را به یک آردوینو اونو متصل می کنیم و یک شبیه ساز را اجرا می کنیم که مقادیر مختلف را بر روی هر نمایشگر نشان می دهد. TM1637 از یک رابط دو سیمی (CLK و DIO) استفاده می کند، به این معنی که اضافه کردن یک نمایشگر دوم تنها به دو پایه دیجیتال اضافی بر روی آردوینو شما نیاز دارد. بیایید شروع کنیم! (در ویدیو در :00)

سخت‌افزار مورد نیاز

  • آردوینو Uno (یا هر برد سازگار دیگر)
  • دو عدد ماجیول نمایشگر ال‌دی‌دی ۴ رقمی ۷ بخش TM1637
  • سیم‌های جامپر
  • بردبورد (اختیاری، اما برای پروتوتایپ مفید است)

راهنمای سیم‌کشی

اتصال نمایشگرها ساده است. ماجیول TM1637 چهار پایه دارد: VCC، GND، DIO (داده) و CLK (ساعت). هر دو نمایشگر از اتصالات ۵ ولت و GND آردوینو مشترک استفاده می‌کنند، اما هر کدام برای DIO و CLK به پایه‌های اختصاصی خود نیاز دارند. این اجازه می‌دهد تا آردوینو بتواند به طور مستقل آن‌ها را کنترل کند. (در ویدئو در ۰۱:۲۶)

در اینجا نمودار سیم‌کشی برای پروژه آورده شده است:

برای نمایش اول (ماجیول بزرگ‌تر آبی در ویدیو)، اتصالات زیر را برقرار کنید:

  • VCCبه آردوینو۵ ولت
  • GNDبه آردوینوGND
  • دیوبه پایه دیجیتال آردوینو۱۱
  • CLKبه پایه دیجیتال آردوینو۱۰

برای نمایش دوم (ماجیول کوچکتر)، آن را به صورت زیر متصل کنید:

  • VCCبه آردوینو۵ ولت
  • GNDبه آردوینوGND
  • دیوبه پایه دیجیتال آردوینو۶
  • CLKبه پایه دیجیتال آردوینو۵

به خاطر داشته باشید که شِفر (کود) و کتابخانه برای هر دو ماجیول TM1637 بزرگ و کوچک یکسان عمل می‌کنند. (در ویدیو در 01:00)

توضیحات شِفر (کود)

شِفر (کود) از استفاده می‌کندTM1637Displayکتابخانه‌ای که باید نصب کنید. می‌توانید این کار را با رفتن بهنقاشی > شامل کتابخانه > مدیریت کتابخانه‌هادر محیط برنامه‌نویسی آرودینو و جستجو برای "TM1637". این شِفر (کود) پایه‌های هر نمایشگر را تعریف کرده و دو شیء برای کنترل آن‌ها ایجاد می‌کند. بیایید به قسمت‌های کلیدی که نیاز دارید برای استفاده خودتان پیکربندی کنید نگاهی بیندازیم. (در ویدئو در ۰۲:۳۱)

ابتدا، تعریف پایه‌ها برای هر ماجیول نمایش. شما نیاز دارید که این‌ها را تغییر دهید تا با سیم‌کشی شما مطابقت داشته باشد:

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

متن بعدی،TEST_DELAYمتغیر کنترل می‌کند که هر توالی آزمایش به مدت چه مدت نمایش داده شود. شما می‌توانید این مقدار را برای سرعت بخشیدن یا کند کردن نمایش تنظیم کنید:

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000

قسمت اصلی شِفر (کود) از استفاده می‌کندshowNumberDec()تابع. این تابع چهار آرگومان دارد: عددی که باید نمایش داده شود، اینکه آیا باید ارقام خالی اولیه با صفر پر شوند، چند رقم باید استفاده شود و موقعیت شروع عدد در نمایش. به عنوان مثال،display1.showNumberDec(23, false, 2, 0)شماره "23" را از موقعیت 0 نمایش خواهد داد. با تغییر آخرین آرگومان به 1، 2 یا 3، می‌توانید شماره را در نمایش جابجا کنید. (در ویدئو در 05:23)

برای افزودن یک نمایشگر سوم، به سادگی بلوک شِفر (کود) مربوط به یک نمایشگر را کپی کرده، همه "2" ها را به "3" تغییر دهید و دو پایه جدید برای اتصالات CLK و DIO ماجیول جدید اختصاص دهید. (در ویدیو در 03:58)

نمایش پروژه زنده

پس از اینکه شِفر (کود) را بارگذاری کردید، دو نمایشگر روشن شده و صفحه‌های خود را پاک می‌کنند. سپس دموی آزمایشات مختلفی را اجرا می‌کند تا نشان دهد هر نمایشگر چگونه می‌تواند به طور مستقل کنترل شود. اول، شماره‌های "23" و "34" را در دو نمایشگر نشان می‌دهد. شِفر (کود) سپس از طریق قرار دادن این شماره‌ها در موقعیت‌های مختلف بر روی نمایشگر 4 رقمی عبور می‌کند (موقعیت 0، 1، 2 و 3). پس از آن، شماره‌های بزرگ‌تر "741" و "1562" را نمایش می‌دهد. نهایتاً، یک حلقه شمارش از 0 تا 1273 را به طور همزمان بر روی هر دو نمایشگر اجرا می‌کند. این عملکرد کامل استفاده از دو نمایشگر در یک پروژه واحد را نشان می‌دهد. (در ویدیو در 05:01)

فصل‌ها

  • مقدمه‌ای بر استفاده از دو نمایش‌گر TM1637
  • وایرکشی نمایشگرها به آردوینو
  • [02:31] توضیح شِفر (کود)
  • [۰۵:۰۱] نمایش عملکرد صفحه‌نمایش‌ها

تصاویر

استفاده از دو نمایشگر LED 4 رقمی TM1637 دیگر
استفاده از دو نمایشگر LED 4 رقمی TM1637 دیگر
168-Using two more TM1637 4-digit LED displays
زبان: C++
/*
 * Original code from https://github.com/avishorp/TM1637
 * Modified for Robojax video on October 28, 2018 at 15:05
 * This is an Arduino sketch to use two or more TM1637 seven-segment LED displays
 * 
 * Watch video instruction for this code:https://youtu.be/27KjMfPH1dk
 * 
 * by Ahmad Shamshiri, in Ajax, Ontario, Canada
 * 
 *  display2.showNumberDec(23, true, 2,1);
 *  showNumberDec(arg1, arg2, arg3, arg4);
 *  arg1 is the number to be displayed
 *  arg2 can be 'true' or 'false' and if true it fills empty spots with data[]
 *  arg4 position of starting number on the display can be either 0, 1, 2 or 3
 */
#include <Arduino.h>
#include <TM1637Display.h>

// Module 1 connection pins (Digital Pins)
#define CLK1 5
#define DIO1 6

// Module 2 connection pins (Digital Pins)
#define CLK2 10
#define DIO2 11

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   5000


TM1637Display display1(CLK1, DIO1);// define display 1 object
TM1637Display display2(CLK2, DIO2);// define display 1 object

   uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };  // all segments clear    
   
void setup()
{
  // Robojax.com two or more TM1637 Display 20181029  
  display1.setBrightness(0x0f);// set brightness of display 1
  display2.setBrightness(0x0f);// set brightness of display 1  

 
  display1.setSegments(data);// fill display 1 with whatever data[] array has
  display2.setSegments(data);// // fill display 2 with whatever data[] array has  
// Robojax.com two or more TM1637 Display 20181029  
}

void loop()
{
 // Robojax.com two or more TM1637 Display 20181029
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,0);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,0);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
  
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,1);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,1);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,2);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,2);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds
/////////////////////////////////////////////////
  display1.setSegments(data); // fill(clear) display with data[] array    
  display1.showNumberDec(23, false, 2,3);

  display2.setSegments(data);// fill(clear) display with data[] array
  display2.showNumberDec(34, false, 2,3);
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds    
/////////////////////////////////////////////////
  display1.setSegments(data);// fill(clear) display with data[] array
  display1.showNumberDec(741);// display 1

  display2.setSegments(data);// fill(clear) display with data[] array  
  display2.showNumberDec(1562);// display 2
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds

// Robojax.com two or more TM1637 Display 20181029 
/////////////////////////////////////////////////
   display1.setSegments(data);// fill(clear) display 1 with data[] array
   display2.setSegments(data);// fill(clear) display 2 with data[] array   
  for(int i=0; i<=1273; i++)
  {
    display1.showNumberDec(i);// display from 0 to 1273 to display 1
    display2.showNumberDec(i);// display from 0 to 1273 to display 2    
  }
  delay(TEST_DELAY);// wait for TEST_DELAY milliseconds


// Robojax.com two or more TM1637 Display 20181029
  
}// loop end

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

فایل‌ها📁

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

فایل فریزینگ

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