راه اندازی ماژول سون سگمنت TM1637 با آردوینو

ماژول سون سگمنت TM1637، شامل چهار عدد سون سگمنت است که فقط 4 پایه دارد. در مقاله راه اندازی سون سگمنت، با سون سگمنتها آشنا شدیم. در این مقاله از آموزشگاه برنامهنویسی و رباتیک لمپا بابل قصد داریم راه اندازی ماژول سون سگمنت TM1637 با آردوینو را به شما آموزش دهیم.
ماژول سون سگمنت TM1637
این ماژول شامل یک درایور LED سریال که ساخت شرکت Titan MicroElectronic-TM1637 است.

ماژول TM1637 عملیاتهای متفاوتی را پشتیبانی میکند، مانند روشن و خاموش کردن، کنترل روشنایی LEDها و دسترسی به هر سگمنت. ماژول سون سگمنت TM1637 شامل 4 عدد سون سگمنت 0.36 اینچی است. علاوه بر 4 عدد سون سگمنت، در میانه این ماژول یک نشانه دو نقطه یا کولون (:) قرار دارد که ساخت پروژههایی مبتنی بر ساعت یا تایمر را آسان میکند.

این ماژول با ولتاژ 3.3V تا 5V کار میکند و از دو سیمه برای تبادل داده استفاده میکند. بنابراین، علاوه بر پایههای VCC و GND، تنها به دو پایه دیگر نیاز دارد. پایههای سون سگمنت TM1637 عبارتاند از:

CLK : پایه ورودی کلاک است که میتواند به هر پایه دیجیتال آردوینو متصل شود.
DIO : پایه داده ورودی / خروجی است که میتواند به هر کدام از پایههای دیجتال آردوینو متصل شود.
VCC : پایه تغذیه است و به ولتاژ 3.3V تا 5V وصل میشود.
GND : پایه زمین است.
سیم کشی – راه اندازی ماژول سون سگمنت TM1637 با آردوینو
برای راه اندازی سون سگمنت TM1637 به قطعات زیر نیاز داریم:
– ماژول نمایشگر سون سگمنت 4 رقمی TM1637
– ماژول آردوینو UNO
– کابل USB
– سیم جامپر نر به ماده
این ماژول از ولتاژ 5 ولت خروجی برد آردوینو تغذیه میشود. پایههای CLK و DIO به ترتیب به پایههای دیجیتال 2 و 3 آردوینو متصل میشوند. در شکل زیر میتوانید نتیجه نهایی اتصال ماژول TM1637 به آردوینو را مشاهده کنید:

از آنجایی که این ماژول به هیچ پایه خاصی نیاز ندارد، هیچ یک از پایههای آردوینو ضروری نیست. بنابراین شما میتوانید با خیال راحت از پایههای مختلف استفاده کنید.
کد آردوینو
برای اینکه بتوانید با تراشه TM1637 کار کنید، به یک کتابخانه نیاز دارید. توابع موجود در کتابخانه TM1637، کنترل نمایشگر را آسان میسازد. تنها کافی است عددی را که میخواهید به نمایش در بیاید، مشخص کنید. کتابخانه را میتوانید با کلیک بر روی لینک زیر دانلود کنید:
دانلود کتابخانه کتابخانه TM1637
برای نصب این کتابخانه در نرم افزار آردوینو به قسمت Sketch > Include Library > Add .ZIP Library بروید و فایلی را که دانلود کردهاید، انتخاب کنید.
پس از نصب کتابخانه، کد زیر را بر روی آردوینو بارگذاری کنید. این کد چیزهای معمول مانند ارقام، دما، کلمه و … را بر روی نمایشگر نشان میدهد. در ادامه به جزئیات بیشتری خواهیم پرداخت.
#include
#include
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 2000
const uint8_t SEG_DONE[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_C | SEG_E | SEG_G, // n
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
};
TM1637Display display(CLK, DIO);
void setup(){
}
void loop(){
int k;
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
display.setBrightness(0x0f);
// All segments on
display.setSegments(data);
delay(TEST_DELAY);
// Selectively set different digits
data[0] = display.encodeDigit(0);
data[1] = display.encodeDigit(1);
data[2] = display.encodeDigit(2);
data[3] = display.encodeDigit(3);
display.setSegments(data);
delay(TEST_DELAY);
display.clear();
display.setSegments(data+2, 2, 2);
delay(TEST_DELAY);
display.clear();
display.setSegments(data+2, 2, 1);
delay(TEST_DELAY);
display.clear();
display.setSegments(data+1, 3, 1);
delay(TEST_DELAY);
// Show decimal numbers with/without leading zeros
display.showNumberDec(0, false); // Expect: ___0
delay(TEST_DELAY);
display.showNumberDec(0, true); // Expect: 0000
delay(TEST_DELAY);
display.showNumberDec(1, false); // Expect: ___1
delay(TEST_DELAY);
display.showNumberDec(1, true); // Expect: 0001
delay(TEST_DELAY);
display.showNumberDec(301, false); // Expect: _301
delay(TEST_DELAY);
display.showNumberDec(301, true); // Expect: 0301
delay(TEST_DELAY);
display.clear();
display.showNumberDec(14, false, 2, 1); // Expect: _14_
delay(TEST_DELAY);
display.clear();
display.showNumberDec(4, true, 2, 2); // Expect: 04__
delay(TEST_DELAY);
display.showNumberDec(-1, false); // Expect: __-1
delay(TEST_DELAY);
display.showNumberDec(-12); // Expect: _-12
delay(TEST_DELAY);
display.showNumberDec(-999); // Expect: -999
delay(TEST_DELAY);
display.clear();
display.showNumberDec(-5, false, 3, 0); // Expect: _-5_
delay(TEST_DELAY);
display.showNumberHexEx(0xf1af); // Expect: f1Af
delay(TEST_DELAY);
display.showNumberHexEx(0x2c); // Expect: __2C
delay(TEST_DELAY);
display.showNumberHexEx(0xd1, 0, true); // Expect: 00d1
delay(TEST_DELAY);
display.clear();
display.showNumberHexEx(0xd1, 0, true, 2); // Expect: d1__
delay(TEST_DELAY);
// Run through all the dots
for(k=0; k <= 4; k++) {
display.showNumberDecEx(0, (0x80 >> k), true);
delay(TEST_DELAY);
}
// Brightness Test
for(k = 0; k < 4; k++)
data[k] = 0xff;
for(k = 0; k < 7; k++) {
display.setBrightness(k);
display.setSegments(data);
delay(TEST_DELAY);
}
// On/Off test
for(k = 0; k < 4; k++) {
display.setBrightness(7, false); // Turn off
display.setSegments(data);
delay(TEST_DELAY);
display.setBrightness(7, true); // Turn on
display.setSegments(data);
delay(TEST_DELAY);
}
// Done!
display.setSegments(SEG_DONE);
while(1);
}
توضیح کد:
در ابتدا، دو کتابخانه Arduino.h و TM1637Display.h اضافه شدهاند. کتابخانه Arduino برای اجرای برنامه در آردوینو (این خط در بعضی از بردها ضروری نیست). کتابخانهی TM1637 مخصوص کار با ماژول سون سگمنت TM1637 که کنترل سگمنتها را سادهتر میکند.
#include
#include
CLK (Clock) و DIO (Data) پایههایی هستند که برای ارتباط با نمایشگر TM1637 استفاده میشوند. در اینجا، CLK به پایه ۲ و DIO به پایه ۳ متصل شدهاند.
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
این ثابت، مدت زمان تأخیر بین تستهای مختلف را ۲ ثانیه (۲۰۰۰ میلیثانیه) تنظیم میکند.
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 2000
SEG_DONE آرایهای از uint8_t است که الگوی نمایش کلمه “DONE” را روی نمایشگر نشان میدهد. هر مقدار OR ترکیبی از سگمنتهای روشنشده برای هر حرف است.
📌 SEG_X مقدار سگمنتهای فعال برای هر کاراکتر را مشخص میکند.
const uint8_t SEG_DONE[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_C | SEG_E | SEG_G, // n
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
};
یک شیء (Object) از کلاس TM1637Display ساخته شده که ارتباط نمایشگر را با آردوینو مدیریت میکند.
TM1637Display display(CLK, DIO);
حلقه ()setup خالی است چون تمامی عملیات در ()loop اجرا میشود.
void setup(){
}
این بخش مهمترین قسمت برنامه است که وظیفه نمایش تستهای مختلف روی نمایشگر را بر عهده دارد. در ابتدای ()loop متغیرهای k، data و blank تعریف میشوند:
– k یک متغیر عدد صحیح برای استفاده در حلقههای تکرار است.
– data همه سگمنتها را روشن میکند.
– blank همه سگمنتها را خاموش میکند.
دستور setBrightness روشنایی نمایشگر را روی حداکثر مقدار تنظیم میکند.
void loop(){
int k;
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
display.setBrightness(0x0f);
این دستور، متغیر data را روی ماژول پیاده می کند. همهی سگمنتها روشن میشوند و به مدت ۲ ثانیه نمایش داده میشوند.
display.setSegments(data);
delay(TEST_DELAY);
دستور display.encodeDigit(n) مقدار عدد n را بهصورت سگمنت کدگذاریشده تبدیل میکند. این دستورات اعداد ۰ تا 3 را در اولین تا آخرین جایگاه نمایش داده میشود. نتیجه این بخش عدد 0123 را روی نمایشگر نشان میدهد.
data[0] = display.encodeDigit(0);
data[1] = display.encodeDigit(1);
data[2] = display.encodeDigit(2);
data[3] = display.encodeDigit(3);
display.setSegments(data);
delay(TEST_DELAY);
دستور ()display.clear نمایشگر را پاک میکند. در خط دوم، data+2 یعنی مقدار از خانه دوم (عدد ۲) شروع شود. 2 ,2 یعنی فقط دو رقم در جایگاه ۲ و ۳ نمایش داده شوند. با این دستور، فقط دو رقم آخر متغیر data نمایش داده میشوند. نتیجه، نمایشگر مقدار –23 را نشان میدهد.
display.clear();
display.setSegments(data+2, 2, 2);
delay(TEST_DELAY);
دستور showNumberDec برای نمایش یه عدد رو ماژول استفاده می شود. ورودی اول این دستور عدد دلخواه 0 است و ورودی دوم می تواند true یا false باشد. false یعنی بدون صفرهای پیشفرض، عدد 0 نمایش داده میشود. true یعنی نمایشگر عدد 0000 را نشان میدهد.
display.showNumberDec(0, false); // ___0
display.showNumberDec(0, true); // 0000
برای نمایش اعداد منفی روی نمایشگر، می توان از دستور showNumberDec استفاده کرد.
display.showNumberDec(-999);
delay(TEST_DELAY);
showNumberHexEx(value) عدد value را در مبنای ۱۶ نمایش میدهد.
display.showNumberHexEx(0xf1af);
delay(TEST_DELAY);
در این حلقه تکرار، نقطههای نمایشگر (Decimal points) یکییکی روشن و خاموش میشوند.
for(k=0; k <= 4; k++) {
display.showNumberDecEx(0, (0x80 >> k), true);
delay(TEST_DELAY);
}
با این حلقه تکرار، روشنایی نمایشگر از کم به زیاد تغییر میکند.
for(k = 0; k < 7; k++) {
display.setBrightness(k);
display.setSegments(data);
delay(TEST_DELAY);
}
با این کد، نمایشگر چهار بار خاموش و روشن میشود.
for(k = 0; k < 4; k++) {
display.setBrightness(7, false); // خاموش
display.setSegments(data);
delay(TEST_DELAY);
display.setBrightness(7, true); // روشن
display.setSegments(data);
delay(TEST_DELAY);
}
پس از اتمام تستها، کلمه “DONE” نمایش داده شده و برنامه متوقف میشود.
display.setSegments(SEG_DONE);
while(1);
در ویدئوی زیر، راه اندازی ماژول سون سگمنت TM1637 با آردوینو را به طور کامل می توانید مشاهده کنید.
در این آموزش رباتیک بابل با ماژول TM1637 آشنا شدید.
0 دیدگاه