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

by رضا بداغی | 1 مهر, 1400 | آردوینو, میکروکنترلر, وبلاگ | 0 comments

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

آموزش ARDUINO یوبرد

جاده آسفالت میکروکنترلر

آموزش های رایگان ARDUINO

فیلم های آموزش ARDUINO

آموزش خصوصی ARDUINO

اخبار جدید یوبرد در اینستاگرام

راه اندازی سون سگمنت با آردوینو که در این نوشته بررسی می کنیم با استفاده از یک کتابخانه است. کتابخانه ای که کار کردن با آن بسیار ساده است. کافی است یک تابع را اجرا کنیم تا عدد مورد نظر روی سون سگمنت نمایش داده شود. در نوشته های «راه اندازی سون سگمنت با 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 و برنامه نویسی میکروکنترلر

جدیدترین تاپیک های آردوینو

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

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

راه اندازی همه امکانات میکروکنترلر با آردوینو امکان دارد؟ سوالیست که برای بسیاری از مخاطبین آردوینو در اوایل کار با آن بوجود می آید. در این نوشته به پاسخ به این سوال می پردازیم.

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

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

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

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

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

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

راه-اندازی-آردوینو-run-arduino

راه اندازی آردوینو، شروع کار با Arduino

راه اندازی آردوینو، اضافه کردن آردوینو به VS Code و ویژوال استودیو، ایجاد پروژه آردوینو در Arduino IDE و VS Code و ویژوال استودیو، برنامه نویسی آردوینو در Arduino IDE و VS Code و ویژوال استودیو، آپلود برنامه روی آردوینو با Arduini IDE و VS Code و ویژوال استودیو

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

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

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

راه-اندازی-stm32-آردوینو-arduino

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

راه اندازی STM32 با آردوینو، راه اندازی STM32 در آردوینو، اضافه کردن میکروکنترلرهای STM32 به Arduino IDE، برنامه نویسی میکروکنترلرهای STM32 و بردهای Nucleo-F103RB و Blue pill در Arduino ، پروگرام کردن STM32 با Arduino IDE، بوت لودر USB برد Blue pill، بوت لودر STM32 HID

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

آردوینو

آردوینو، پروژه بدون الکترونیک و برنامه نویسی

سخت افزار آردوینو، نرم افزار آردوینو، نرم افزار Arduino IDE، نرم افزار Arduino Web Editor، زبان برنامه نویسی آردوینو، Arduino Pro پلتفرم IOT آردوینو، مزایای آردوینو، آردوینو مناسب چه کاربردهایی است، معایب آردوینو، تحلیل هدف آردوینو، کاربرد آردوینو در صنعت، پروژه های پیچیده و محدودیت های آردوینو

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

ترمینال-پورت-سریال-آموزش-hercules

ترمینال پورت سریال و کار با نرم افزار Hercules

ترمینال پورت سریال چیست؟ پورت سریال مجازی چیست؟ نرم افزارهای پورت سریال، ترمینال سریال در CodeVisionAVR و Atmel Studio و Arduino، ارتباط کامپیوتر با میکروکنترلرها و ماژول ها از طریق پورت سریال، ترمینال سریال در پروتئوس، کار با ترمینال سریال نرم افزار Hercules، ارسال و دریافت دادۀ سریال با Hercules

0 Comments

Submit a Comment

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

آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

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

آموزش زبان C و MISRA-C یوبرد

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

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

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

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

شاهکار 8 بیتی Atmel

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

یادگار فیلیپس

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

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