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

سون سگمنت چیست؟
سون سگمنتها ( seven-segment display) نوعی نمایشگر پرکاربرد الکترونیکی هستند که میتوانند اعداد 0 تا 9 را نمایش دهند. از آنها به طور عمده در ساعتهای دیچیتال، تایمرها و ماشینحسابها برای نمایش اطلاعات عددی استفاده میشود.
همانطور که احتمالا از نام آنها پیداست، این نمایشگرها از 7 بخش روشنشونده ساخته شدهاند. این بخشها به نحوی در کنار هم چیده شدهاند که ترکیبات مختلف از روشن و خاموش بودن آنها میتواند صورت ظاهری اعداد 0 تا 9 را بسازد. البته این چینش به گونهای است که میتواند حتی برخی از حروف الفبای انگلیسی مانند A ،B ،C ،H ،F ،E را نیز نمایش دهد.

سون سگمنتها در واقع از سادهترین نمایشگر الکترونیکی موجود برای نمایش حروف و اعداد محسوب میشوند. همانطور که در تصاویر فوق میبینید، این قطعه از هشت عدد LED ساخته شده است که هفت عدد از آنها مسئول روشن کردن 7 بخش سون سگمنت، و هشتمین LED نیز مسئول روشن نمودن علامت نقطه در گوشهی سمت راست پایین سون سگمنت است. هر بخش شبیه یک خط تیره است. این خطوط در کنار هم روشن و خاموش میشوند و خطوط روشن هربار یک حرف یا عدد را نمایش خواهند داد.
در برخی از منابع هفت خط سون سگمنت را با نامهای a ،b ،c ،d ،e ،f ،g نامگذاری میکنند و نقطه را نیز با نماد h یا DP نشان میدهند.
این قطعه دارای 10 پایه است که 8 پایه به ledهای a تا h متصلاند و 2 پایه نیز به آند/کاتد مشترک تمام ledها متصل است. از آنجا که آند/کاتد مشترک تمام ledها معمولا در داخل خود سون سگمنت به هم اتصال کوتاه میشود، تنها کافی است سیگنال مورد نظر را به یکی از این پایههای مشترک اعمال کنیم.

دو نوع نمایشگر سون سگمنت وجود دارد:
- کاتد مشترک (Common Cathode-CC)
- آند مشترک (Common Anode-CA)
ساختار داخلی این دو نوع نمایشگر تقریبا مشابه است. اما تنها تفاوت آنها پلاریته LEDها و پایه مشترک آنها است. همانطور که از نام آنها پیدا است، در کاتد مشترک، کاتد تمامی LEDها به یکدیگر متصل شده است و در نمایشگر نوع آند مشترک، آند تمامی LEDها به یکدیگر متصل هستند. در یک نمایشگر کاتد مشترک، تمامی پایههای کاتد LED به منطق 0 یا همان زمین متصلاند. بنابراین، اعمال سیگنال منطقی 1 به پایه آند مرتبط با هر یک از LEDها (پینهای a تا g) سبب روشن شدن آن خواهد شد.
در سون سگمنت آند مشترک، پایه آند همه LEDها به منطق 1 یا همان 5 ولت متصل شده است. اعمال منطق 0 به پایه کاتد هر یک از LEDها (یعنی پین a تا g) سبب روشن شدن LED مربوطه خواهد شد.

راه اندازی سون سگمنت
اکنون زمان راه اندازی سون سگمنت با آردوینو است. قطعات لازم برای این پروژه عبارت اند از:
- سون سگمنت تک رقمی کاتد مشترک
- ماژول آردوینو UNO
- مقاومت 330 اهم
برای این کار، ابتدا همانند عکس زیر، مدار سون سگمنت را کامل کنید.

کد آردوینو
حال زمان آن رسیده است که نمایشگر خود را با نوشتن کد روشن کنید.
پیش از اینکه بتوانید با استفاده از کد، نمایشگر خود را کنترل کنید؛ ابتدا لازم است کتابخانه SevSeg را دانلود کنید. این کتابخانه را میتوانید از GitHub repo دانلود کنید. البته میتوانید با کلیک بر روی لینک زیر، مستقیما این کتابخانه را دانلود نمایید:
برای نصب این کتابخانه در نرم افزار آردوینو به قسمت Sketch > Include Library > Add .ZIP Library بروید و فایلی را که دانلود کردهاید، انتخاب کنید.
پس از نصب کتابخانه، کد زیر را در نرم افزار آردوینو کپی کنید. این کد باعث شمارش اعداد 0 تا 9 و نمایش آنها بر روی سون سگمنت خواهد شد. در ادامه به جزئیات بیشتری خواهیم پرداخت.
#include "SevSeg.h"
SevSeg sevseg;
void setup(){
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {7, 6, 5, 4, 3, 2, 1};
bool resistorsOnSegments = true;
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
for (int i = 0; i < 10; i++){
sevseg.setNumber(i);
sevseg.refreshDisplay();
delay(1000);
}
}
توضیح کد:
با اجرا کردن کد در بخش قبلی، ابتدا کتابخانه SevSeg کد فراخوانی میشود. این کتابخانه کنترل سون سگمنت را برای شما بسیار ساده خواهد کرد. در گام بعدی، شی SevSeg را ایجاد کنید.
#include "SevSeg.h"
SevSeg myDisplay;
پس ایجاد شی، لازم است تعداد اعداد نمایشگر را مشخص کنید. از آنجاییکه در این پروژه، برای نمایش اعداد از یک رقم استفاده میکنیم، مقدار مورد نیاز در کد را برابر 1 تنظیم کنید. اما اگر از یک نمایشگر چهار رقمی استفاده میکنید، باید این مقدار را بر روی 4 تنظیم کنید.
byte numDigits = 1;
در نمایشگرهای چند رقمی، آرایه digitPins، پینهای مشترک را تعریف میکند. بنابراین اگر شما از یک نمایشگر چند رقمی استفاده میکنید، شماره پینهای آردوینو را که پینهای مشترک به آنها وصل شده است، در این قسمت از چپ به راست قرار دهید. اما اگر یک نمایشگر تک رقمی دارید، آن را خالی رها کنید.
byte digitPins[] = {};
آرایه دومی که در کد مقدار دهی اولیه شده است، segmentPins نام دارد. این آرایه حاوی شماره تمامی پینهایی از آردوینو است که به پینهای نمایشگر LED برای کنترل سون سگمنت متصل شدهاند. البته در اینجا، این پینها مستقیما از بردبورد به آردوینو متصل شدهاند. این پینها را باید به ترتیب قرار دهید، زیرا کتابخانه آردوینو ترتیب پینها را بهصورت A، B، C، D، E، F، G و DP در نظر میگیرد.
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
بعد از ایجاد این متغیرها، آنها را با استفاده از تابع ()begin در تابع SevSeg قرار بدهید.
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
تابع loop، با استفاده از حلقه for و متغیر i، شروع به شمارش اعداد از 0 تا 9 میکند. در واقع این تابع، هر بار از تابع ()setNumber و ()refreshDisplay کتابخانه SevSeg برای نشان دادن اعداد بر روی نمایشگر استفاده میکند. اما پیش از افزایش متغیر i، یک تاخیر زمانی وجود دارد که پس از آن، عدد بعدی نمایش داده میشود.
for(int i = 0; i < 10; i++){
sevseg.setNumber(i);
sevseg.refreshDisplay();
delay(1000);
}
در ویدئوی زیر، شبیهسازی راه اندازی سون سگمنت با آردوینو را در نرمافزار پروتئوس میتوانید مشاهده کنید.
0 دیدگاه