یکی از مرسومترین وسیلههایی که در بسیاری از گجتها و لوازم الکترونیکی از جمله ماکروفر، ساعت دیجیتال، اجاق گاز برقی و … از آن برای نمایش اعداد استفاده میکنند سون سگمنت است. نمایشگر هفت بخشی یا سون سگمنت از 7 ال ای دی در ساختاری مشابه عدد 8 ساخته شده و از این دیودهای نوری بیشتر در نمایشگرهای 7 بخشی استفاده میکنند. در ادامه این مطلب با ما همراه شوید تا با نحوه راهاندازی سون سگمنت با آردوینو و پروژه تاس الکترونیکی بیشتر آشنا شوید.
معرفی سون سگمنت
یکی از رایجترین و پرمصرفترین نمایشگرها در جهان، سون سگمنت (Seven segment) است که اندازه و رنگهای بسیار متفاوتی دارد. رنگهای قرمز، آبی و سبز آن از رایجترین رنگها است.
اندازه سون سگمنت بین 0.56 اینچ تا 4 اینچ و 6.5 اینچ متغیر است و دارای نمایشگرهای تک رقمی، دو رقمی و چهار رقمی هستند. این نمایشگر دارای 8 ال ای دی به نام سگمنت است که به شکل عدد 8 مرتب شده و یک نقطه به صورت اعشار در سمت راست آن قرار دارد.
هر یک از سگمنتها با حرف A تا G و DP برای نقطه اعشار نامگذاری شدهاند، هر یک از سگمنتهای نامگذاری شده را میتوان به صورت جداگانه کنترل کرد.
خرید ماژول سون سگمنت 4 رقمی TM1637
پایههای سون سگمنت
یکی از مهمترین بخشها در زمان کار با سون سگمنت شناخت پایههای آن است، سون سگمنت با توجه به مدلهای مختلف، پایههای متفاوتی دارد. برای کار با آن بهتر است با تعداد پایههای سون سگمنت آشنا باشید:
- ترتیب پایههای تکی سون سگمنت
سون سگمنت تکی از 8 ال ای دی ساخته شده و ال ای دی هشتم به عنوان اعشار شناخته میشود. پایههای A تا G مربوط به ال ای دی داخلی و DP مربوط به ممیز یا اعشار است.
هر ال ای دی دارای دو پایه است اما در سون سگمنت یک پایه از هر ال ای دی خارج میشود و در نهایت پایه همه آنها به یکدیگر متصل میشود که آن را پایه مشترک مینامند. - ترتیب پایههای دوتایی سون سگمنت
در این نوع سون سگمنت پایهها به صورت معمولی و مالتی پلکس است. - ترتیب پایههای سهتایی سون سگمنت
ترتیب پایهها در سون سگمنت به صورت مالتی پلکس است. - ترتیب پایههای چهارتایی سون سگمنت
ترتیب پایهها در سون سگمنت به صورت مالتی پلکس است.
اجزای سون سگمنت
هشت پایه سون سگمنت از A تا G به هشت پین دیجیتالی متصل شدهاند و با کنترل آنها میتوان اعداد مختلف را روی نمایشگر نشان داد. پین شماره 3 و 8 در سون سگمنت باید به یکدیگر متصل شوند تا یک پین مشترک را تشکیل دهند. این پین مشترک باید به زمین GND یا به آند مشترک متصل شود.
انواع برد سون سگمنت
سون سگمنت با توجه کاربردش بردهای مختلفی دارد که هر یک از آنها با هدف خاصی مورد استفاده قرار میگیرند.
بردها دارای یک نمایشگر دیجیتال و یک خروجی همزمان سریال برای اتصال به بردهای دیگر و کامپیوتر دارند. واحد نمایش اندازه در این نمایشگر به صورت سانتیمتر است و عملیات پردازشی را با سرعت و دقت بالایی انجام میدهد. خطای اندازهگیری بردها حدود یک درصد است.
سون سگمنت آند مشترک
یکی از رایجترین و پرمصرفترین نمایشگرهای سون سگمنت، آند مشترک است که در آن تمام آندها به Vcc وصل میشوند. بخشهای جداگانه در این نمایشگر با سوئیچ کردن برق به کاتدها روشن و خاموش میشوند.
سون سگمنت کاتد مشترک
در این نوع نمایشگر تمامی اتصالات کاتدی قطعات ال ای دی به زمین متصل میشوند. بخشهای جداگانه در این نمایشگر با سوئیچ کردن برق به آندها روشن و خاموش میشود.
خرید انواع ماژول سون سگمنت و نمایشگر از جم ترونیک
سون سگمنت چطور کار میکند؟
سون سگمنت با توجه به عددی که قصد نمایش آن را دارد، ال ای دی مورد نظر را روشن میکند. به عنوان مثال برای نمایش دادن عدد 5 باید ال ای دی a. f. g. c. d روشن شود. سون سگمنت قابلیت آن را دارد تا تمام اعداد بین 0 تا 9 را نمایش دهد.
در شکل زیر میتوانید جدول ارزش یا truth table را برای نمایش اعداد 0 تا 9 روی سون سگمنت ببینید. این جدول برای سون سگمنت کاتد مشترک تعریف شده و برای استفاده از سون سگمنت آند مشترک کافیست جای ۰ و ۱های جدول را باهم عوض کنید.
همچنین از سون سگمنت میتوانید برای نمایش تمام حروف الفبای انگلیسی استفاده کنید که جدول ارزش آن به صورت زیر است:
راه اندازی سون سگمنت با آردوینو
ابتدا سون سگمنت را روی برد قرار دهید، اگر نقطه اعشاری آن به سمت پایین باشد اعداد 1 تا 5 در سمت پایین و از سمت چپ به راست آن قرار میگیرد و پینهای 6 تا 10 هم در سمت بالا و از چپ به راست قرار میگیرند.
قطعههای مورد نیاز
- سون سگمنت تک رقمی
- ماژول آردوینو UNO
- کابل USB
- مینی برد
- سیم جامپر نری به نری
- مقاومت 220 اهم
اتصال پایهها
برای اتصال پایهها در راهاندازی سون سگمنت آردوینو از یک سون سگمنت آند مشترک استفاده میکنند. معمولا یکی از پینهای مشترک 3 یا 8 را به پین V5 متصل میکند و در سون سگمنت کاتد یکی از دو پین را به پین زمین آردوینو متصل میکند.
چهار پین بالایی سون سگمنت به پینهای دیجیتال 2 تا 5 آردوینو وصل میشود، چهار پین پایینی سون سگمنت را به پینهای دیجیتال 6 تا 9 آردوینو متصل میکنند.
در جدول زیر میتوانید روش اتصال را به اختصار مشاهده کنید:
توضیحات | پایههای آردوینو | پایههای سون سگمنت |
با مقاومت ۲۲۰ اهم | ۳ | a |
با مقاومت ۲۲۰ اهم | ۲ | b |
با مقاومت ۲۲۰ اهم | ۸ | c |
با مقاومت ۲۲۰ اهم | ۷ | d |
با مقاومت ۲۲۰ اهم | ۶ | e |
با مقاومت ۲۲۰ اهم | ۴ | f |
با مقاومت ۲۲۰ اهم | ۵ | g |
با مقاومت ۲۲۰ اهم | ۹ | DP |
فقط برای آند مشترک | 5V | COM |
فقط برای کاتد مشترک | GND | COM |
نصب کتابخانه سون سگمنت برای آردوینو
۱- در آردوینو IDE به مسیر Arduino IDE > Sketch > Include Library > Manage Libraries بروید
۲- از لیست کتابخانهها گزینه SevSeg را جستوجو کنید.
۳- کتابخانه SevSeg library by Dean Reading. را نصب کنید.
۴- پس از پایان نصب یک اسکچ جدید باز کنید و کدنویسی را شروع کنید
کدنویسی
کد نمونه زیر را در محیط Arduini IDE وارد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include "SevSeg.h" SevSeg sevseg; void setup() { //Set to 1 for single digit display byte numDigits = 1; //defines common pins while using multi-digit display. Left empty as we have a single digit display byte digitPins[] = {}; //Defines arduino pin connections in order: A, B, C, D, E, F, G, DP byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9}; bool resistorsOnSegments = true; //Initialize sevseg object. Uncomment second line if you use common cathode 7 segment sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments); //sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments); sevseg.setBrightness(90); } void loop() { //Display numbers one by one with 2 seconds delay for(int i = 0; i < 10; i++) { sevseg.setNumber(i); sevseg.refreshDisplay(); delay(2000); } } |
توضیح کد
۱- ابتدا کتابخانه SevSeg را اضافه کردهایم و یک شی با نام sevseg ایجاد کرده ایم. ما از این شی برای کنترل نمایشگر با کمک کتابخانه SevSeg استفاده خواهیم کرد.
1 2 3 4 5 |
// Include library #include "SevSeg.h" // Create object SevSeg sevseg; |
۲- سپس باید تعداد اعداد در نمایشگر را مشخص کنید، معمولا در این پروژهها برای نمایش اعداد از یک رقم استفاده میکنیم. به همین دلیل مقدار numDigits را روی 1 تنظیم کنید، البته این مقدار برای سون سگمنت تکی است و برای سون سگمنت چهارتایی باید این مقدار روی 4 تنظیم شود.
1 2 |
// Number of digits in display byte numDigits = 1; |
۳- آرایهی Digitpins پینهای مشترک را مشخص میکند، اگر از سون سگمنت تکی استفاده میکنید باید این بخش را خالی رها کنید اما اگر از سون سگمنت چندتایی استفاده میکنید باید شماره پینهای آردوینو را که پینهای مشترک به آن وصل شدهاند در این بخش قرار دهید.
1 2 3 |
// Specifies the 'common pins' while using multi-digit display. // If you have a single digit display, leave it blank. byte digitPins[] = {}; |
۴- بعد از این باید آرایهی Segmentpins را تعریف کنید که پینهای I/O آن به ترتیب به حروف A,B,C,D,E,F,G,DP روی سگمنت ال ای متصل میشوند.
1 2 |
// Display segment pins A,B,C,D,E,F,G,DP byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9}; |
۵- متغیر بولی <span style="font-weight: 400;">resistorsOnSegments</span> resistorsOnSegments تعریف میشود که به کتابخانه بگوید آیا از مقاومتهای کنترلکننده جریان استفاده میکنیم یا خیر.
1 2 |
// Dropping resistors used bool resistorsOnSegments = true; |
۶- متغیر hardwareConfig نشان میدهد که از چه مدل سون سگمنتی استفاده میکنیم. این متغیر میتواند مقادیر COMMON ANODE و COMMON CATHODE را بگیرد. در کد نمونه ما از COMMON ANODE استفاده کردهایم.
1 2 |
// Display type byte hardwareConfig = COMMON_ANODE; |
۷- در Setup، شیء نمایشگر را با آرگومان هایی که به تازگی تعریف کردیم، مقداردهی اولیه می کنیم. ما همچنین روشنایی صفحه نمایش را پیکربندی می کنیم که مقدار آن بین ۰ تا ۱۵۰ خواهد بود.
1 2 3 4 5 6 |
void setup() { // Start display object sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments); // Set brightness sevseg.setBrightness(90); } |
۸- از یک لوپ for استفاده میکنیم که برای شمارش از 0 تا 9 استفاده میشود. در هربار شمارش از توابع setNumber() و refreshDisplay() برای نمایش یک عدد استفاده میشود.
همچنین بین نمایش هر عدد یک تاخیر ۱ ثانیهای وجود دارد.
1 2 3 4 5 6 |
for(int i = 0; i < 10; i++) { sevseg.setNumber(i); sevseg.refreshDisplay(); delay(1000); } |
راه اندازی سون سگمنت با آردوینو: پروژه تاس الکترونیکی
یکی از کاملترین پروژههای سون سگمنت با آردوینو، پروژه تاس الکترونیکی است. این پروژه کمک میکند تا بتوانید تاس بریزید و میتوانید بازیهای مختلفی چون یاتزی (Yahtzee)، لودو (ludo) را انجام دهید.
بخش آردوینو در این پروژه تقریبا مشابه با پروژههای قبلی است تنها تفاوت این پروژه در آن است که یک سوئیچ لمسی برای افزایش سرعت تاس استفاده میکنند.
قطعات مورد نیاز
- سون سگمنت
- دکمه فشاری
- مقاومت 10 کیلو اهم
- آردوینو
- تک سوئیچ چهارپین
اتصال پایهها
هدف از انجام این پروژه آن است که به صورت تصادفی یکی از اعداد 1 تا 6 نمایش داده شود. بهترین روش استفاده از تابعrandom(min,max) است و به دو تابع نیاز دارد.
این تابع هم دارای دو پارامتر کوچکترین عدد و بالاترین حد اعداد تصادفی است، بدین ترتیب طبق این دو پارمتر یک عدد بین min و max-1 مشخص میشود.
کدنویسی
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include "SevSeg.h" SevSeg sevseg; const int buttonPin = 10; // the number of the pushbutton pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup(){ byte numDigits = 1; byte digitPins[] = {}; byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9}; bool resistorsOnSegments = true; sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins, resistorsOnSegments); sevseg.setBrightness(90); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { sevseg.setNumber(random(1,7)); sevseg.refreshDisplay(); } } |
توضیح کد
۱- ابتدا باید مشخص کنیم که کدام پین آردوینو به پوش باتن متصل شده که این کار را با تعریف متغیر buttonstate انجام میدهیم.
1 2 3 4 5 |
// the number of the pushbutton pin const int buttonPin = 10; // variable for reading the pushbutton status int buttonState = 0; |
۲- buttonpin را به عنوان وروی تنظیم میکنیم.
1 2 |
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); |
۳- در لوپ، هر زمان که فشار دادن دکمه تشخیص داده شود، با استفاده از تابع داخلی تصادفی (min, max) یک عدد تصادفی تولید می کنیم که دو پارامتر را می گیرد: اولی کران پایینی مقدار تصادفی (از جمله این عدد) را مشخص می کند. دومی کران بالایی را مشخص می کند (به استثنای این عدد). به این معنی که یک عدد تصادفی بین min و max-1 ایجاد خواهد شد.
1 2 3 4 5 6 7 8 9 |
void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { sevseg.setNumber(random(1,7)); sevseg.refreshDisplay(); } } |
جمعبندی
استفاده از سون سگمنت بسیار مقرون به صرفه است و میتوان با هزینه بسیار کمی آن را تهیه کرد. از سون سگمنت با توجه به کارایی بالایی که دارد در بخشهای مختلفی استفاده میکنند که ماکروفر، ساعت دیجیتال، اجاق گاز برقی بخش کوچکی از آن است. شما میتوانید برای خرید سون سگمنت و سایر قطعات الکترونیکی که برای ساخت پروژههای الکترونیکی به آن نیاز است از فروشگاه جم ترونیک دیدن کنید.