logo-site-sefid
Search
Close this search box.
راه اندازی سون سگمنت به وسیله آردوینو

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

در این آموزش قصد داریم راه اندازی سون سگمنت با آردوینو را آموزش دهیم. صفحه نمایش از 0 تا 9 شمرده و سپس خودش را به صفر باز می گرداند. اما قبل از اینکه به پیش برویم، اجازه دهید در مورد صفحه نمایش های سون سگمنت توضیحاتی ارائه دهیم.

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

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

مدار اتصالات ال ای دی ها در حالت کاتد مشترک و آند مشترک در شکل بالا نمایش داده شده است. در اینجا می توانید مشاهده کنید که، در کاتد مشترک، پایه های منفی همه ال ای دی ها بهم متصل شده و به عنوان پایه زمین (GND) به خروجی برده شده است. در آند مشترک، پایه های مثبت همه ال ای دی ها بهم متصل شده و به عنوان پایه تغذیه (VCC) به ورودی برده شده است. این کاتد مشترک و آند مشترک زمانی که چند نمایشگر را برای استفاده همگام بهم متصل می کنیم، بسیار کاربردی خواهند بود.

قطعات مورد نیاز برای راه اندازی سون سگمنت با آردوینو :

 سخت افزار: برد آردوینو Nano

منبع تغذیه 5 ولت یا کابل آردوینو

یک قطعه نمایشگر سون سگمنت HDS5503 ( هر نوع نمایشگر کاتد مشترک دیگر نیز عمل خواهد کرد )

مقاومت

نرم افزار: IDE آردوینو

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

دیاگرام مداری و نحوه عملکرد آن:

20230106 143416 e1673372525634

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

پین 9 (آردوینو) به پین A سون سگمنت

پین 8 به پین B

پین 7 به پین C

پین6 به پین D

پین 5 به پین E

پین 4 به پین F

پین 3 به پین G

پین GND آردوینو به common Cathode سون سگمنت به وسیله ی یک مقاومت 100 اهم یا 220 اهم 

حال برای فهمیدن نحوه عملکرد راه اندازی سون سگمنت با آردوینو ، فرض کنید یک نمایشگر سون سگمنت به یک پورت وصل شده باشد، مثلا بگوییم که سگمنت A از صفحه نمایش را به پین 0، سگمنت B از صفحه نمایش را به پین 1، سگمنت A از صفحه نمایش را به پین 3، سگمنت A از صفحه نمایش را به پین 4، سگمنت A از صفحه نمایش را به پین 5، سگمنت A از صفحه نمایش را به پین 6، وصل کرده باشیم. و همانگونه که در تصویر زیر مشخص شده از نوع زمین مشترک باشد.

سون سگمنت کاتد مشترک
سون سگمنت کاتد مشترک خاموش

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

حال اگر بخواهیم عدد صفر را همانگونه که در تصویر زیر نشان داده شده است نشان دهیم،

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

نیاز است که ال ای دی های سگمنت های A,B,C,D,E,F را روشن کنیم. بنابر این نیاز است به پین های 0، 1، 2، 3، 4 و 5 برق بدهیم. بنابرین هر زمان که به یک صفر نیاز داشتیم می بایست پایه های ذکر شده را یک کنیم.

حال اگر بخواهیم عدد یک بر روی صفحه نمایش نشان داده شود،

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

می بایست سگمنت های B و C را روشن کنیم. برای روشن شدن سگمنت های B و C می بایست پین های 1 و 2 را یک کنیم. با یک شدن هر دو پایه ما بر ریو صفحه نمایش عدد 1 را خواهیم داشت. بنابراین، همانطور که در بالا دیدید، برای نمایش دادن اعداد روی صفحه نمایش، می بایست پین های مربوط به هر سگمنت مرتبط به آن عدد را یک کنیم.

در اینجا ما می خواهیم برنامه ای بنویسیم که هر سگمنت را برای شمارش 0 تا 9 خاموش و روشن می کند. نحوه عملکرد شمارنده 0 تا 9 در کد زیر که به زبان C نوشته شده است، به نحو احسن توضیح داده شده است.

#define segA 2//connecting segment A to PIN2

#define segB 3// connecting segment B to PIN3

#define segC 4// connecting segment C to PIN4

#define segD 5// connecting segment D to PIN5

#define segE 6// connecting segment E to PIN6

#define segF 7// connecting segment F to PIN7

#define segG 8// connecting segment G to PIN8

 

                int COUNT=0;//count integer for 0-9 increment

void setup()

{

                  for (int i=2;i<9;i++)

                  {

                                    pinMode(i, OUTPUT);// taking all pins from 2-8 as output

                  }

}

 

void loop()

{

switch (COUNT)

                {

 

                case 0://when count value is zero show”0” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, HIGH);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, LOW);

                break;

 

                case 1:// when count value is 1 show”1” on disp

                digitalWrite(segA, LOW);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, LOW);

                digitalWrite(segE, LOW);

                digitalWrite(segF, LOW);

                digitalWrite(segG, LOW);

                break;

 

                case 2:// when count value is 2 show”2” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, LOW);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, HIGH);

                digitalWrite(segF, LOW);

                digitalWrite(segG, HIGH);

                break;

 

                case 3:// when count value is 3 show”3” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, LOW);

                digitalWrite(segF, LOW);

                digitalWrite(segG, HIGH);

                break;

 

                case 4:// when count value is 4 show”4” on disp

                digitalWrite(segA, LOW);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, LOW);

                digitalWrite(segE, LOW);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, HIGH);

                break;

 

                case 5:// when count value is 5 show”5” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, LOW);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, LOW);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, HIGH);

                break;

 

                case 6:// when count value is 6 show”6” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, LOW);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, HIGH);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, HIGH);

                break;

 

                case 7:// when count value is 7 show”7” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, LOW);

                digitalWrite(segE, LOW);

                digitalWrite(segF, LOW);

                digitalWrite(segG, LOW);

                break;

 

                case 8:// when count value is 8 show”8” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, HIGH);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, HIGH);

                break;

 

                case 9:// when count value is 9 show”9” on disp

                digitalWrite(segA, HIGH);

                digitalWrite(segB, HIGH);

                digitalWrite(segC, HIGH);

                digitalWrite(segD, HIGH);

                digitalWrite(segE, LOW);

                digitalWrite(segF, HIGH);

                digitalWrite(segG, HIGH);

                break;

 

                break;

                }

                if (COUNT<10)

                {

                                COUNT++;

                                delay(1000);///increment count integer for every second

                }

                if (COUNT==10)

                {

                                COUNT=0;// if count integer value is equal to 10, reset it to zero.

                                delay(1000);

                }

}

 

رضا قنبری
متخصص آموزش رباتیک

رضا قنبری هستم متخصص آموزش رباتیک با بیش از 10 سال سابقه فعالیت در ایران

این مطلب را به اشتراک بگذارید

دسته بندی نشده

ماژول ADS1115 مبدل آنالوگ به دیجیتال

ماژول ADS1115 مبدل آنالوگ به ديجيتال قبل از خواندن مقاله ماژول ADS1115 مبدل آنالوگ به ديجيتال بهتر است در نظر داشته باشید مقالاتی که با

دسته بندی نشده

ماژول حافظه ی EEPROM با ارتباط I2C

ماژول حافظه ی EEPROM با ارتباط I2C قبل از خواندن مقاله ماژول حافظه ی EEPROM با ارتباط I2C بهتر است در نظر داشته باشید مقالاتی

دسته بندی نشده

ماژول آمپلی فایر استریو PAM8610

ماژول آمپلي فاير استريو PAM8610 قبل از خواندن مقاله ماژول آمپلی فایر استریو PAM8610 مبدل آنالوگ به ديجيتال بهتر است در نظر داشته باشید مقالاتی

دیدگاه‌ خود را بنویسید

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