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

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

در این مقاله هدف ما این است که راه اندازی سون سگمنت با آردوینو را به شما آموزش دهیم و شما را با نحوه عملکرد این نمایشگر آشنا کنیم. پس با ما همراه باشید.

تا به حال چند بار فیلمی را تماشا کرده‌اید که یک بمب ساعتی در آن خنثی شده است؟ حتما هزار بار! همیشه قهرمانی در این فیلم‌ها وجود دارد که با گذشت هر ثانیه که البته ارزش زیادی دارد، مضطرب تر از قبل به صفحه نمایشگر بمب نگاه می‌کند. اما یک چیزی در تمامی این فیلم‌ها مشترک است و آن صفحه نمایشگر سون سگمنت است. اما چرا؟ دلیل این موضوع این است که اگر این نمایشگر نباشد، چگونه قهرمان فیلم ما متوجه شود چقدر برای نجات خود و دیگران زمان دارد!

نمایشگر سون سگمنت، یکی از کارآمد ترین ابزارها برای نمایش اعداد است. با این نمایشگر ارزان قیمت به‌سادگی می‌توانید مقادیری را که بر روی آن نشان می‌دهید، حتی در نور کم یا نور بسیار زیاد مشاهده کنید.

ساعت معكوس پروژه آپولو ناسا در فلوريدا يک مثال واقعی است كه در آن از نمايشگر سون سگمنت استفاده شده است.

استفاده از نمایشگر سون سگمنت در پروژه آپولو ناسا در فلوريدا

مرور سخت افزاری نمایشگر سون سگمنت

قبل از اینکه راه اندازی سون سگمنت با آردوینو را آغاز کنیم، بیایید ابتدا مشخصات و كارايی آن را به‌صورت خلاصه با هم بررسی کنیم.

سون سگمنت، همان‌طور که از عدد سون (seven) در نام آن پیدا است، از هفت عدد ديود LED با چيدمان مشخصی تشكيل شده است.

الگوی اتصال اين LEDها به شكل عدد 8 است كه همه ما با آن آشنا هستيم. هر يک از اين هفت LED، يک سگمنت ناميده می‌شود و با حذف هر يک از آن‌ها اعداد (هگز و يا دسيمال) شكل می‌گيرند. برخی اوقات از يک LED ديگر نيز برای نمايش نقطه اعشار استفاده می‌شود.

ساختار داخلی هفت LED و پین‌های آن در سون سگمنت

يكی از پایه‌های اين هفت LED از پكيج پلاستيكی مستطيلی شكل سون سگمنت بيرون آورده شده‌ است. اين پایه‌ها از a تا g برچسب‌گذاری شده‌اند. پایه ديگر LED‌ها نیز، به یک پایه مشترک وصل شده است.

برای روشن يا خاموش كردن بخش خاصی از يک نمایشگر، كافی است يک سيگنال high يا low به پين مربوطه داده شود. با این کار برخی از LEDها روشن می‌شود و برخی دیگر خاموش ‎باقی می‌ماند. روشن كردن تعداد خاصی از اين هفت LED و خاموش نگه داشتن بقيه آن‌ها سبب نمايش اعداد 0 تا 9 بر روی سون سگمنت خواهد شد.

پين‌های نمايشگر سون سگمنت

در اینجا می‌خواهیم ساختار سون سگمنت را به شما نشان دهیم تا بتوانید بفهمید که هر يک از پين‌های این نمایشگر كدام LED را روشن می‌كند. پين‌های سون سگمنت به شکل زیر هستند:

پایه‌های سون سگمنت آند مشترک و کاتد مشترک

a-g & DP : هشت پين a، b، c، d، e، f، g و DP به پين‌های ديجيتال آردوينو وصل می‌شوند. با كنترل اين پين‌ها می‌توان اعداد مختلف را بر روی نمايشگر سون سگمنت نشان داد.

COM : دو پين شماره 3 و 8 با اتصالات داخلی به یک‌ديگر متصل شده‌اند تا یک پین مشترک را شکل دهند. با توجه به نوع LEDها، این پین مشترک را باید به زمين GND (كاتد مشترک) يا به 5 ولت (آند مشترک) متصل کرد.

كاتد مشترک (Common Cathode-CC) و آند مشترک (Common Anode-CA)

دو نوع نمايشگر سون سگمنت وجود دارد:

  • كاتد مشترک (Common Cathode-CC)
  • آند مشترک (Common Anode-CA)

ساختار داخلی این دو نوع نمایشگر تقريبا مشابه است. اما تنها تفاوت آن‌ها پلاريته LEDها و پایه مشترک آن‌ها است. همان‌طور که از نام آن‌ها پیدا است، در كاتد مشترک، کاتد تمامی LEDها به يک‌ديگر متصل شده است و در نمایشگر نوع آند مشترک، آند تمامی LEDها به يک‌ديگر متصل هستند. در يک نمایشگر كاتد مشترک، تمامی پایه‌های کاتد LED به منطق 0 يا همان زمين متصل‌اند. بنابراين، اعمال سيگنال منطقی 1 به پایه آند مرتبط با هر يک از LEDها (پين‌های a تا g) سبب روشن شدن آن خواهد شد.

نحوه عملکرد سون سگمنت کاتد مشترک


در سون سگمنت آند مشترک، پایه آند همه LEDها به منطق 1 يا همان 5 ولت متصل شده است. اعمال منطق 0 به پایه كاتد هر يک از LEDها (يعنی پين a تا g) سبب روشن شدن LED  مربوطه خواهد شد.

نحوه عمکلرد سون سگمنت آند مشترک

نکته:

به‌طور كلی، استفاده از سون سگمنت‌های آند مشترک متداول‌تر‌ است، زيرا اكثرا مدارات منطقی بيشتر از آن كه بتوانند جريان الكتريكی را تامین کنند، مصرف کننده هستند. (در ادامه ما نيز از همين نوع سون سگمنت استفاده خواهيم كرد).

نکته‌ای که باید به یاد داشته باشید این است که یک سون سگمنت‌ آند مشترک را به لحاظ سخت افزاری نمی‌توانید مستقيما جایگزین سون سگمنت كاتد مشترک کنید. اين كار دقیقا مانند آن است كه يک LED را به‌صورت معكوس در مدار قرار دهیم. با این کار مسلما LED روشن نخواهد شد!

نمايشگر سون سگمنت چگونه كار می‌كند؟

با توجه به عددی كه قرار است به نمايش در بيايد، تعداد خاصی از LEDهای سون سگمنت روشن خواهند شد. به عنوان مثال، برای اینکه بتوانید عدد 4 را نمایش دهید، لازم است چهار سگمنت b، c، f و g را روشن کنید. بنابراین، همان‌طور كه در شكل زير مشاهده می‌کنید، با استفاده از سون سگمنت می‌توانید اعداد 0 تا 9 و نيز كاراكترهای A تا F را نمايش دهید.

نمایش اعداد 0 تا 9 بر روی نمایشگر سون سگمنت


در جدول زير می‌توانید سگمنت‌هايی را مشاهده کنید كه روشن شدن آن‌ها برای نمايش هر يک از اعداد و كاراكترهای ياد‌شده ضروری است. اما به این نکته دقت کنید که مقادیر سون سگمنت کاتد مشترک دقیقا عکس مقادیر سون سگمنت آند مشترک است.

جدول درستی سون سگمنت کاتد مشترک
جدول درستی سون سگمنت آند مشترک

سيم كشی – راه اندازی سون سگمنت با آردوينو UNO

اكنون زمان راه اندازی سون سگمنت با آردوینو است. قطعات لازم برای این پروژه عبارت اند از:

برای این کار، ابتدا همانند تصویر زیر، سون سگمنت را به نحوی که هر سمت آن در يک طرف بردبورد باشد، بر روی بردبورد قرار دهید. اگر سون سگمنت را به‌گونه‌ای قرار دهيد كه نقطه اعشاری آن در سمت پايين باشد، پين‌های 1 تا 5 در سمت پايين از چپ به راست خواهند بود و پين‌های 10 تا 6 در سمت بالا از چپ به راست قرار خواهند گرفت.

اگر از یک سون سگمنت آند مشترک استفاده می‌کنید، یکی از پین‌های مشترک 3 یا 8 را به پین 5V و اگر از سون سگمنت کاتد مشترک استفاده می‌کنید، یکی از این دو پین را به پین زمین آردوینو متصل کنید.

چهار پين باقی‌مانده بالايی سون سگمنت را به پين‌های ديجيتال شماره 2 تا 5 آردوينو وصل كنيد. چهار پين پايينی ديگر سون سگمنت را نیز به پين‌های ديجيتال شماره 6 تا 9 آردوينو متصل کنید.

نکته:

با وجود اینکه ممكن است سون سگمنت شما بدون وجود مقاومت محدود کننده جریان کار کند، اما همیشه بهتر است که برای جلوگيری از آسيب ديدن LEDهای سون سگمنت از تعدادی مقاومت الكتريكی در مسير اتصال پين‌های آردوينو به سون سگمنت استفاده کنید.

معمولا برای یک سون سگمنت قرمز، هر LED حدود 15 ميلی آمپر جريان نیاز دارد تا به‌طور کامل روشن شود. بنابراين در يک مدار منطقی 5 ولتی مقدار مقاومت‌های محدود كننده جريان بايد در حدود 220 اهم (و يا اندكی بيشتر) در نظر گرفته شود.


زمانی‌که اتصالات را به‌طور کامل انجام دادید، نتیجه کار خود را با تصاویر زیر مقایسه کنید. اتصالات شما باید همانند تصاویر زیر شده باشد:

نحوه سیم‌کشی سون سگمنت آند مشترک به آردوینو


نتیجه نهایی اتصال سون سگمنت آند مشترک به آردوینو

نحوه سیم‌کشی سون سگمنت کاتد مشترک به آردوینو

نتیجه نهایی سون سگمنت کاتد مشترک به آردوینو

کد آردوینو


اكنون زمان آن رسیده است که نمایشگر خود را با نوشتن کد روشن کنید!

  • پیش از اینکه بتوانید با استفاده از کد نمایشگر خود را کنترل کنید، ابتدا لازم است كتابخانه SevSeg را دانلود كنيد. اين كتابخانه را می‌توانيد از GitHub repo دانلود كنيد. البته می‎توانید با کلیک بر روی لینک زیر، مستقيما این کتابخانه را دانلود نمایید:
Title of the document دانلود کتابخانه SevSeg

  • برای نصب اين كتابخانه در نرم افزار آردوینو به قسمت Sketch > Include Library > Add .ZIP Library  برويد و فايلی را كه دانلود كرده‌ايد، انتخاب كنيد.
  • پس از نصب كتابخانه، كد زير را در نرم افزار آردوینو كپی كنيد. اين كد باعث شمارش اعداد 0 تا 9 و نمايش آن‌ها بر روی سون سگمنت خواهد شد.

در ادامه به جزئیات بیشتری خواهیم پرداخت.

#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 را ایجاد کنید.

#include "SevSeg.h"
SevSeg myDisplay;

پس ایجاد شی، لازم است تعداد اعداد نمايشگر را مشخص کنید. از آنجایی‌كه در این پروژه، برای نمايش اعداد از يک رقم استفاده می‌کنیم، مقدار مورد نياز در كد را برابر 1 تنظيم کنید. اما اگر از یک نمايشگر چهار رقمی استفاده می‌کنید، باید این مقدار را بر روی 4 تنظیم کنید.

//Set to 1 for single digit display
byte numDigits = 1;

در نمایشگر‌‎های چند رقمی، آرایه digitPins، پین‌های مشترک را تعریف می‌کند. بنابراین اگر شما از یک نمایشگر چند رقمی استفاده می‌کنید، شماره‌ پين‌های آردوينو را كه پين‌های مشترک به آن‌ها وصل شده است، در این قسمت از چپ به راست قرار دهید. اما اگر یک نمايشگر تک رقمی دارید، آن را خالی رها کنید.

//defines common pins while using multi-digit display
//Left empty as we have a single digit display
byte digitPins[] = {};

آرايه دومی كه در کد مقدار دهی اولیه شده است، segmentPins نام دارد. اين آرايه حاوی شماره تمامی پين‌هايی از آردوينو است كه به پين‌های نمايشگر LED برای كنترل سون سگمنت متصل شده‌اند. البته در اينجا، این پین‌ها مستقيما از بردبورد به آردوينو متصل شده‌اند. این پین‎‌ها را باید به ترتیب قرار دهید، زیرا كتابخانه آردوينو ترتيب پين‌ها را به‌صورت A، B، C، D، E، F، G و DP در نظر می‌گيرد.

//Defines arduino pin connections in order: A, B, C, D, E, F, G, DP
byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};

بعد از ايجاد اين متغيرها، آن‌ها را با استفاده از تابع ()begin در تابع SevSeg قرار بدهید.

//Initialize sevseg object
sevseg.begin(COMMON_ANODE, 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);
}

پروژه آردوینو: تاس ریختن

به عنوان يک پروژه مكمل، در اين جا پروژه ای را به شما ارائه می‌کنیم تا با استفاده از آن بتوانید تاس بریزید! با راه اندازی این پروژه شما می‌توانید بازی‌‍‌هایی مانند یاتزی (Yahtzee)، لودو (ludo) و… را انجام دهید. بخش آردوینو این پروژه مشابه پروژه قبلی است، اما با اين تفاوت كه در این پروژه از يک سوئيچ لمسی برای افزايش سرعت تاس ریختن استفاده می‌کنیم. برای انجام این پروژه علاوه بر قطعاتی که در ابتدای مقاله ذکر شد، به دو قطعه دیگر نیاز خواهید داشت:

نحوه اتصال سون سگمنت آند مشترک به تک سوئیچ و آردوینو در پروژه تاس ریختن

طبق تصویر تک سوئیچ را به ماژول سون سگمنت و آردوینو متصل کنید.


هدف از تاس ریختن این است که عددی بين 1 تا 6 به‌صورت تصادفی نمایش داده شود. بهترین روش برای اینکه بتوانید یک عدد تصادفی دریافت کنید، استفاده از تابع random(min,max) است. اين تابع دو پارامتر نياز دارد، اولین پارامتر كوچكترين عدد (شامل کوچکترین عدد می‌شود) و دومین پارامتر بالاترین حد اعداد تصادفی (بالاترین عدد حساب نمی‌شود) مورد نظر شما را مشخص می‌کند. طبق این دو پارامتر، يک عدد تصادفی بين min و max-1 توليد خواهد شد.

#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(); 
	}
}


در انیمیشن زیر می‌توانید نتیجه نهایی این پروژه را مشاهده کنید:


راه اندازی سون سگمنت با آردوینو می‌تواند پروژه‌ای جذاب برای شما باشد، زیرا نمایش اعداد بر روی نمایشگر فارغ از نیازی که دارید، همان طور که در ابتدای این مقاله گفتیم می‌تواند شما را به یاد یک بمب ساعتی بیندازد!

به هر حال امیدواریم بتوانید با استفاده از این مقاله این پروژه را جلو ببرید. اگر به راهنمایی یا مشورت نیاز داشتید، حتما از طریق بخش دیدگاه‌ ما را مطلع کنید.

مقالات مشابه

۱۴ دیدگاه. Leave new

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات