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

توسط | 1 مهر, 1400 | میکروکنترلر | 0 دیدگاه

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت
راه-اندازی-سون-سگمنت-با-آردوینو

راه اندازی سون سگمنت با آردوینو که در این نوشته بررسی می کنیم با استفاده از یک کتابخانه است. کتابخانه ای که کار کردن با آن بسیار ساده است. کافی است یک تابع را اجرا کنیم تا عدد مورد نظر روی سون سگمنت نمایش داده شود. در نوشته های «راه اندازی سون سگمنت با STM32» و «راه اندازی سون سگمنت با AVR»، راه اندازی سون سگمنت آند مشترک را بررسی کرده ایم. در این دو نوشته به راه اندازی سون سگمنت 4 تایی پرداخته ایم. در این نوشته نیز با برد Arduino UNO یک سون سگمنت 4 رقمی آند مشترک را راه اندازی می کنیم. در تصویر زیر نحوۀ اتصالات پایه های سون سگمنت و آردوینو را ملاحظه می کنید. مقدار مقاومت هایی که به پایه های A تا DP سون سگمنت متصل اند، 330 اهم است. کتابخانۀ سون سگمنت و پروژۀ این نوشته را که در نرم افزار Arduino IDE است، در پیوست قرار داده ایم. در این نوشته به ساخت شمارنده با سون سگمنت و برنامه نویسی سون سگمنت با آردوینو می پردازیم. برای اطلاعات بیشتر دربارۀ سون سگمنت، به نوشتۀ «سون سگمنت، نمایشگر هفت قسمتی» مراجعه کنید. در نوشتۀ مذکور به انواع سون سگمنت، پایه های آن، کاربردها، مدارهای راه اندازی و نکات دیگری پرداخته ایم. نوشته های راه اندازی سون سگمنت با میکروکنترلرهای AVR و STM32 نیز حاوی نکاتی اند که می تواند برای علاقه مندان مفید باشد.

فیلم آموزش آردوینو مقدماتی

اتصالات-سون-سگمنت-آردوینو

تصویر 1 – درایو کردن سون سگمنت با آردوینو UNO

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

در راه اندازی سون سگمنت با میکروکنترلرها مثل میکروکنترلرهای AVR یا هر میکروکنترلر دیگر، باید واحد ورودی/خروجی را راه اندازی کنیم. وقتی سون سگمنت را با AVR راه اندازی می کنیم، باید پورت IO در AVR را راه اندازی کنیم. و برای راه اندازی آن با میکروکنترلرهای STM32 باید GPIO در STM32 را راه اندازی کنیم. راه اندازی واحد IO یا GPIO در میکروکنترلرها ممکن است کمی پیچیده باشد. اما در آردوینو کار بسیار راحت تر است. به ویژه زمانی که کتابخانه ای آماده وجود دارد. برای راه اندازی سون سگمنت مالتی پلکس 4 تایی، از کتابخانۀ SevSeg.h استفاده می کنیم. ابتدا این کتابخانه را به برنامه اضافه کرده ایم. سپس از کلاس SevSeg شیء my_seven_segment را ایجاد کرده ایم. یک متغیر last_time تعریف کرده ایم که کاربرد آن را خواهیم دید. عددی را که می خواهیم در سون سگمنت نمایش دهیم، با نام number و همچنین یک رشته تعریف کرده ایم. درتابع setup ابتدا تابع Begin را برای شیئی که ساخته ایم فراخوانی می کنیم. پارامترهای ورودی این تابع به این شکل هستند:

  • پارامتر ورودی اول: نوع سون سگمنت، که میتواند COMMON_ANODE یا COMMON_CATHODE باشد؛
  • پارامتر ورودی دوم: تعداد ارقام سون سگمنت است؛
  • پارامتر ورودی سوم تا ششم: پایه های مشترک هستند. پایه های D1 تا D4؛
  • پارامتر ورودی هفتم تا چهاردهم: پایه هایی است که به پایه های Aتا DP سون سگمنت متصل می شوند.

تابع دیگری وجود دارد که شدت نور LEDهای سون سگمنت را می توان با آن بین صفر تا 100 تغییر داد. تابع SetBrightness، که می توانیم اعداد 0 تا 100 را برای تنظیم شدت نور LEDها در آن قرار دهیم. در ادامه، خروجی تابع millis را در متغیر last_time قرار می دهیم و یک بار number را با تابع sprintf به رشته تبدیل می کنیم.

#include "SevSeg.h"

SevSeg my_seven_segment;

unsigned long last_time;
int number = 0;
char seven_segment_str[10];

void setup()
{
	my_seven_segment.Begin(COMMON_ANODE, 4, 10, 7, 6, 4, 9, 5, 2, 1, 0, 8, 3, 11);
	
	my_seven_segment.SetBrightness(100);

	last_time = millis();
	sprintf(seven_segment_str, "%4d", number);
}

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

تصویر 2 – راه اندازی سون سگمنت با Arduino

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

برای این که از چشمک زدن سون سگمنت جلوگیری کنیم، باید تابع DisplayString را با تأخیر مناسبی اجرا کنیم. در این پروژه این تأخیر را برابر 5 میلی ثانیه در انتهای تابع loop قرار داده ایم. برای این که متغیر number را هر 500 میلی ثانیه تغییر دهیم، یک if قرار داده ایم. شرط آن مقایسۀ بین تفریق تابع millis و متغیر last_time است. هرگاه 500 میلی ثانیه بگذرد، شرط if صحیح می شود و کدهای درون آن اجرا می شوند. مقدار جدید خروجی millis در last_time قرار می گیرد. که برای دفعۀ بعد در شرط if استفاده شود. مقدار number یک واحد اضافه می شود. و در سطر بعد بررسی می شود که اگر مقدارش از 9999 بیشتر شد، صفر شود. دوباره با استفاده از تابع sprintf، مقدار number به رشته تبدیل می شود. پس از آن، تابع DisplayString اجرا می شود. با اجرای این تابع، مقدار عددی که در رشتۀ ورودی ذخیره شده، روی سون سگمنت نمایش داده می شود. این تابع ورودی دیگری هم دارد که ما آن را صفر قرار داده ایم. این ورودی برای روشن کردن نقطۀ اعشار سون سگمنت است. می توانیم اعداد 0 تا 15 را در آن قرار دهیم. اگر عدد صفر را قرار دهیم، همۀ نقطه های اعشار سون سگمنت خاموش است. اگر آن را برابر 1 قرار دهیم، نقطۀ اعشار رقم اول (سمت چپ) روشن می شود. اگر آن را 2 قرار دهیم، نقطۀ اعشار رقم دوم روشن می شود. اگر 3 باشد، نقطه های اعشار اول و دوم روشن می شوند. اگر آن را 4 قرار دهیم، نقطۀ اعشار رقم سوم روشن می شود. در واقع روشن و خاموش بودن نقاط اعشار، مثل نمایش صفر و یک اعداد باینری است. اگر آن را 15 قرار دهیم، نقاط اعشار همۀ ارقام روشن می شوند.

راه اندازی آردوینو

void loop()
{
	if (millis() - last_time >= 500)
	{
		last_time = millis();
		number++;
		if(number>9999) number = 0;
		sprintf(seven_segment_str, "%4d", number);
	}
	
	my_seven_segment.DisplayString(seven_segment_str, 0);
	
	delay(5);
}

راه-انداری-سون-سگمنت-عملی

تصویر 3 – راه اندازی سون سگمنت با آردوینو در عمل

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

  1. برای تنظیم نور سون سگمنت می توان مقدار مقاومت های روی پایه های A تا DP را تغییر داد. اما در راه اندازی سون سگمنت با آردوینو، در کتابخانه ای که استفاده می کنیم، تابعی نیز برای آن وجود دارد.
  2. در سون سگمنت های آند مشترک، برای روشن شدن هر سگمنت، باید پایۀ مشترک یعنی آند، یک شود. در این صورت هر یک از پایه های A تا DP که صفر شود، سگمنت متناظر آن روشن می شود.
  3. در راه اندازی سون سگمنت کاتد مشترک، برای روشن شدن هر سگمنت، باید پایۀ مشترک یعنی کاتد، صفر شود. در این صورت هر یک از پایه های A تا DP که یک شود، سگمنت متناظر آن روشن می شود.
  4. برای نمایش اعداد چند رقمی، باید هر رقم را برای مدتی نمایش داد و ارقام دیگر خاموش باشند. سپس رقم بعدی برای مدتی نمایش داده شود و ارقام دیگر خاموش باشند. اگر این کار با سرعت بالایی انجام شود، عدد چند رقمی روی سون سگمنت نمایش داده می شود.
  5. برای این که عدد چند رقمی روی سون سگمنت نمایش داد، باید با تأخیری مناسب، ارقام هر عدد روی digit متناظر سون سگمنت نمایش داده شود. این تأخیر می تواند با استفاده از delay باشد، می تواند وقفۀ زمانی منظمی باشد که توسط تایمرها ایجاد می شود و یا روش های دیگر. با اضافه شدن عملکردهای جدید به برنامه، تأخیر به وجود می آید که باعث چشمک زدن سون سگمنت خواهد شد. برای رفع این مشکل روش های مختلفی وجود دارد. مدیریت زمان در برنامه هایی که برای میکروکنترلر یا آردوینو می نویسیم اهمیت زیادی دارد. یکی از روش های رفع این مشکل، حذف delay از برنامه است. برای اطلاعات بیشتر به نوشتۀ «حذف delay از پروژه های میکروکنترلری» مراجعه کنید.

چشمک-سون-سگمنت

تصویر 4 – چشمک زدن سون سگمنت

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

  1. برای راه اندازی سون سگمنت در آردوینو کتابخانه های مختلفی وجود دارد.
  2. برای راه اندازی سون سگمنت با میکروکنترلرها یا برد آردوینو، باید واحد ورودی/خروجی را راه اندازی کرد.
  3. در راه اندازی سون سگمنت، باید به آند مشترک بودن یا کاتد مشترک بودن آن توجه شود.
  4. تغییر شدت نور سگمنت های سون سگمنت هم می تواند نرم افزاری و هم سخت افزاری باشد.
  5. برای نمایش در سون سگمنت چند رقمی، لازم است هر رقم برای مدت زمانی مناسب نمایش داده شود و سپس رقم بعدی نمایش داده شود. در غیر این صورت، چشمک زدن سون سگمنت و یا نمایش ناصحیح اعداد، مشهود می شود.
  6. در نمایش عدد چند رقمی، تأخیر در تغییر دیجیت در سون سگمنت، باعث چشمک زدن سون سگمنت می شود.

رضا بداغی

رضا بداغی

عضو هیئت مدیره یوبرد، طراح و برنامه نویس سیستم های دیجیتال مبتنی بر میکروکنترلر، طراح PCB و مدرس آموزش های میکروکنترلر، طراحی PCB و برنامه نویسی میکروکنترلر

آموزش میکروکنترلرهای ARM سری STM32 یوبرد

آموزش میکروکنترلرهای AVR یوبرد

آموزش میکروکنترلرهایARM سری LPC یوبرد

آموزش Arduino یوبرد

خدمات برنامه نویسی میکروکنترلر یوبرد

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

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

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

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت

راه-اندازی-adc-در-آردوینو

راه اندازی ADC در آردوینو

راه اندازی ADC در آردوینو، راه اندازی LCD گرافیکی KS0108 با کتابخانۀ U8g2، اتصالات لازم برای راه اندازی ADC و LCD گرافیکی KS0108، نمونه کد راه اندازی ADC آردوینو، فرمول محاسبۀ دما با TMP36، راه اندازی سنسور دما با آردوینو، راه اندازی فتوسل (LDR) با آردوینو

0 دیدگاه

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است