🔢 نمایشگر ۴ رقمی TM1637 (TM1637 4-Digit Display)
| اسم انگلیسی | TM1637 4-Digit Display |
|---|---|
| در ووکوی (Wokwi) | wokwi-tm1637-7segment |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
نمایشگر ۴ رقمی TM1637 (TM1637 4-Digit Display) ماژولی است با چهار رقم هفتقسمتی و یک دونقطهی وسط، که تراشهی TM1637 پشتش همهی سگمنتها را خودش روشن نگه میدارد. تو فقط با دو سیم داده (CLK و DIO) عدد را میفرستی و آردوینو آزاد است کار دیگری بکند. ساعت رومیزی، تایمر آشپزخانه، شمارندهی امتیاز و نمایش دما سریعترین پروژههایش هستند. اگر میخواهی بدانی چرا یک سونسگمنت خام اینقدر سیم میخواهد، صفحهی نمایشگر هفتقسمتی را ببین.
TM1637 در ووکوی (Wokwi)
شناسهی این ماژول در ووکوی wokwi-tm1637-7segment است و همان چهار پایهی CLK، DIO، VCC و GND را دارد. کتابخانهی TM1637 نوشتهی Avishay Orpaz (که فایل TM1637Display.h را میدهد) را از Library Manager پروژه اضافه کن؛ راهنمایش در کتابخانه در ووکوی است.
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 100, "left": 0 },
{ "type": "wokwi-tm1637-7segment", "id": "disp", "top": -60, "left": 60 }
],
"connections": [
[ "uno:2", "disp:CLK", "yellow", [] ],
[ "uno:3", "disp:DIO", "blue", [] ],
[ "uno:5V", "disp:VCC", "red", [] ],
[ "uno:GND.1", "disp:GND", "black", [] ]
]
}
| پایه در ووکوی | وصل به |
|---|---|
| CLK | uno:2 |
| DIO | uno:3 |
| VCC | uno:5V |
| GND | uno:GND.1 |
در تینکرکد فارسی، باز کردن و خواندن مثالها رایگان است؛ TM1637 جزو ماژولهای حرفهای است و اجرای خود ماژول اشتراک Plus میخواهد. پروژهی آمادهاش کرنومتر با TM1637 است.
سیمکشی با آردوینو
| پایهی ماژول | وصل به |
|---|---|
| CLK | پین 2 |
| DIO | پین 3 |
| VCC | 5V (ماژول با ۳٫۳ ولت هم کار میکند) |
| GND | GND |
| دکمهی ریست (اختیاری) | یک پایه به پین 4، پایهی دیگر به GND |
دکمه با INPUT_PULLUP خوانده میشود و مقاومت جدا نمیخواهد؛ در ووکوی میتوانی یک wokwi-pushbutton برایش بگذاری.
کد نمونه
// TM1637 stopwatch: minutes and seconds with a blinking colon.
// A push button on pin 4 (to GND) resets it.
#include <TM1637Display.h>
const int CLK = 2;
const int DIO = 3;
const int RESET_BTN = 4;
TM1637Display display(CLK, DIO);
unsigned long startMs = 0;
void setup() {
pinMode(RESET_BTN, INPUT_PULLUP);
display.setBrightness(4); // 0 (dim) .. 7 (bright)
display.clear();
}
void loop() {
if (digitalRead(RESET_BTN) == LOW) startMs = millis();
unsigned long secs = (millis() - startMs) / 1000;
int minutes = (secs / 60) % 100;
int seconds = secs % 60;
int shown = minutes * 100 + seconds; // 1234 -> "12:34"
bool colonOn = (millis() / 500) % 2 == 0; // blink twice a second
display.showNumberDecEx(shown, colonOn ? 0b01000000 : 0, true);
delay(50);
}
پارامتر سوم true یعنی صفرهای اول هم نشان داده شوند، تا «۰۷:۰۵» بهجای «۷:۵» ببینی. چند کار دیگر که با همین کتابخانه میشود کرد:
- نوشتن حروف: با
setSegmentsهر هفت خط هر رقم را خودت روشن میکنی؛ کلمههایی مثل «done» یا «Err» با حروف بزرگ و کوچک هفتقسمتی قابل نوشتناند. - نمایش دما: عدد دو رقمی را در دو رقم اول بگذار و برای رقمهای بعدی علامت درجه و حرف C را با سگمنتها بساز.
- روشنایی:
setBrightnessهشت پله دارد؛ برای ساعت شبخواب پلهی یک یا دو کافی است و چشم را اذیت نمیکند. - نمایش جزئی: دو پارامتر آخر
showNumberDecExطول و جای شروع را تعیین میکنند؛ مثلاً میشود فقط دو رقم سمت راست را عوض کرد.
اشتباههای رایج
- کتابخانهی همنام دیگر: چند کتابخانه با اسم TM1637 هست که دستورهایشان فرق دارد. اگر
showNumberDecExشناخته نشد، کتابخانهی Avishay Orpaz را نصب نکردهای. - دونقطه روشن نمیشود:
showNumberDecساده دونقطه را کنترل نمیکند؛ نسخهیExرا با0b01000000صدا بزن. - وصل کردن به A4 و A5: این ماژول I2C نیست و پایهی خاصی نمیخواهد؛ فقط با شمارههای کد هماهنگ باش.
- عدد خارج از بازه: بیشتر از ۹۹۹۹ یا عدد منفی بزرگ جا نمیشود و نمایش بههم میریزد.
آموزشهای مرتبط
- نمایشگر TM1637 با آردوینو: عدد، دونقطه و تایمر معکوس
- ساعت دقیق با ماژول DS3231
- ماژول ساعت RTC در ووکوی
- درس نمایشگر ۴ رقمی TM1637
سؤالهای رایج
TM1637 به پایههای I2C آردوینو وصل میشود؟
نه. پروتکل TM1637 شبیه I2C است ولی خود I2C نیست و آدرس ندارد. CLK و DIO را به هر دو پین دیجیتالی که خواستی وصل کن و همان شمارهها را به سازندهی TM1637Display بده.
چطور دونقطهی وسط TM1637 را روشن کنم؟
با showNumberDecEx و مقدار 0b01000000 برای پارامتر نقطهها. مثلاً showNumberDecEx(1230, 0b01000000, true) عبارت ۱۲:۳۰ را نشان میدهد.
TM1637 در تینکرکد فارسی رایگان است؟
باز کردن و خواندن مثالها رایگان است؛ TM1637 جزو ماژولهای حرفهای است و اجرای خود ماژول اشتراک Plus میخواهد. در ووکوی با شناسهی wokwi-tm1637-7segment در دسترس است.