🔢 نمایشگر هفتقسمتی (سون سگمنت) (7-Segment Display)
| اسم انگلیسی | 7-Segment Display |
|---|---|
| در ووکوی (Wokwi) | wokwi-7segment |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
نمایشگر هفتقسمتی یا سون سگمنت (7-Segment Display) هفت LED باریک است که به شکل عدد ۸ چیده شدهاند، بهاضافهی یک نقطه (DP). با روشن کردن ترکیبهای مختلف این قسمتها رقمهای ۰ تا ۹ و چند حرف ساخته میشود؛ برای شمارنده، تاس الکترونیکی، تایمر آشپزخانه یا نمایش طبقهی آسانسور.
سون سگمنت در ووکوی (Wokwi)
شناسهاش در ووکوی wokwi-7segment است. پایههای قسمتها A تا G و DP هستند و پایههای مشترک COM.1 و COM.2، مثل قطعهی واقعی که دو پایهی مشترک دارد. این تکه هفت قسمت را به پینهای ۲ تا ۸ وصل میکند؛ برای کوتاه ماندن، مقاومتها حذف شدهاند:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0 },
{ "type": "wokwi-7segment", "id": "seg1", "top": -130, "left": 160 }
],
"connections": [
[ "uno:2", "seg1:A", "green", [] ],
[ "uno:3", "seg1:B", "green", [] ],
[ "uno:4", "seg1:C", "green", [] ],
[ "uno:5", "seg1:D", "green", [] ],
[ "uno:6", "seg1:E", "green", [] ],
[ "uno:7", "seg1:F", "green", [] ],
[ "uno:8", "seg1:G", "green", [] ],
[ "seg1:COM.1", "uno:GND.1", "black", [] ]
]
}
attrs آن تعیین میشود. اگر با این سیمکشی هیچ قسمتی روشن نشد، قطعه آند مشترک است: یا در attrs نوعش را کاتد مشترک کن، یا COM.1 را به uno:5V ببر و در کد COMMON_ANODE را true کن.در تینکرکد فارسی سون سگمنت در هر دو حالت رایگان است؛ مثال سونسگمنت با آردوینو با هفت مقاومت آماده است.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| a | پین 2 از راه ۲۲۰ اهم |
| b | پین 3 از راه ۲۲۰ اهم |
| c | پین 4 از راه ۲۲۰ اهم |
| d | پین 5 از راه ۲۲۰ اهم |
| e | پین 6 از راه ۲۲۰ اهم |
| f | پین 7 از راه ۲۲۰ اهم |
| g | پین 8 از راه ۲۲۰ اهم |
| COM (هر دو) | GND برای کاتد مشترک، 5V برای آند مشترک |
| DP | وصل نیست |
اسم قسمتها استاندارد است: a بالا، b بالا راست، c پایین راست، d پایین، e پایین چپ، f بالا چپ و g خط وسط.
کد نمونه
شمارش معکوس از ۹ تا ۰ و بعد چشمک زدن صفر، مثل یک تایمر. هر رقم یک بایت است که بیت ۰ تا ۶ آن به ترتیب قسمت a تا g را روشن میکند:
// Single-digit countdown 9..0 on a 7-segment display.
// Wiring: segments a..g -> pins 2..8 (each through 220 ohm), COM -> GND
const int SEG_PINS[7] = {2, 3, 4, 5, 6, 7, 8}; // a b c d e f g
const bool COMMON_ANODE = false; // true if COM goes to 5V
// bit 0 = a ... bit 6 = g
const byte DIGITS[10] = {
0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, // 0-4
0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111 // 5-9
};
void showPattern(byte pattern) {
for (int s = 0; s < 7; s++) {
bool on = bitRead(pattern, s);
digitalWrite(SEG_PINS[s], (on != COMMON_ANODE) ? HIGH : LOW);
}
}
void setup() {
for (int s = 0; s < 7; s++) pinMode(SEG_PINS[s], OUTPUT);
}
void loop() {
for (int n = 9; n >= 0; n--) {
showPattern(DIGITS[n]);
delay(1000);
}
for (int i = 0; i < 5; i++) { // time is up: blink the zero
showPattern(0);
delay(250);
showPattern(DIGITS[0]);
delay(250);
}
}
جدول DIGITS را یک بار بنویس و همهجا استفاده کن؛ برای ساختن حرف هم کافی است الگوی بیتهایش را اضافه کنی، مثلاً 0b1110111 برای A.
اشتباههای رایج
- یک مقاومت روی COM: روشنایی رقمها با تعداد قسمتهای روشن عوض میشود.
- نوع اشتباه: کد کاتد مشترک روی قطعهی آند مشترک، رقمها را «منفی» نشان میدهد: قسمتهایی که باید خاموش باشند روشناند.
- فرض کردن ترتیب پایهها: پایههای قطعهی واقعی به ترتیب a تا g نیستند؛ از دیتاشیت یا با یک مقاومت و 5V تکتک پیدایشان کن.
- استفاده از پینهای ۰ و ۱: این دو پین مال سریالاند و موقع آپلود و چاپ قسمتها را الکی روشن و خاموش میکنند.
آموزشهای مرتبط
- نمایشگر چهاررقمی TM1637، چهار رقم فقط با دو سیم
- تایمر معکوس با TM1637 و آردوینو
- شیفت رجیستر 74HC595، برای صرفهجویی در پین
- مدار منطقی و دیجیتال، با دیکدر سون سگمنت
سؤالهای رایج
سون سگمنت من کاتد مشترک است یا آند مشترک؟
پایهی مشترک (COM) را به GND بزن و یکی از پایههای قسمتها را با مقاومت ۲۲۰ اهم به 5V. اگر روشن شد، کاتد مشترک است. اگر نه، COM را به 5V و پایهی قسمت را به GND ببر؛ اگر این بار روشن شد، آند مشترک است.
چرا برای هر قسمت یک مقاومت لازم است؟
هر قسمت یک LED جداست. اگر فقط یک مقاومت روی COM بگذاری، عدد ۱ با دو قسمت روشن خیلی پرنورتر از عدد ۸ با هفت قسمت دیده میشود.
برای چهار رقم هم همین روش جواب میدهد؟
شدنی است ولی پینها زیاد میشوند و باید رقمها را به نوبت و سریع روشن کنی (مالتیپلکس). راحتتر است از ماژول TM1637 استفاده کنی که فقط دو سیم داده میخواهد.