آموزش روش حذف کتابخانۀ delay از پروژه های میکروکنترلری

by | 18 دی, 1398 | AVR, lpc, STM32, آردوینو, میکروکنترلر, وبلاگ | 9 comments

تاخیر-با-تایمر-میکروکنترلر

آموزش روش حذف کتابخانۀ delay از پروژه های میکروکنترلری

by | 18 دی, 1398 | AVR, lpc, STM32, آردوینو, میکروکنترلر, وبلاگ | 9 comments

تاخیر-با-تایمر-میکروکنترلر

آموزش STM32 یوبرد

شروع بازی ST

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

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

آموزش خصوصی STM32

آموزش AVR یوبرد

شاهکار 8بیتی اتمل

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

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

آموزش خصوصی AVR

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

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

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

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

آموزش خصوصی LPC

آموزش ARDUINO یوبرد

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

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

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

آموزش خصوصی ARDUINO

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

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

آموزش های رایگان طراحی PCB

فیلم های آموزش طراحی PCB

آموزش خصوصی طراحی PCB

آموزش لحیم کاری و مونتاژ و استاندارد IPC یوبرد

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

آموزش های رایگان لحیم کاری

فیلم های آموزش لحیم کاری

آموزش خصوصی لحیم کاری

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

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

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

فیلم های آموزش زبان C

آموزش خصوصی زبان C

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

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

آموزش های رایگان سری SIM800

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

آموزش خصوصی SIM800

آموزش STM32 یوبرد

شروع بازی ST

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

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

آموزش خصوصی STM32

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

آموزش برنامه نویسی میکروکنترلر یوبرد، روح سیستم های دیجیتال

آموزش برد مدار چاپی یوبرد، بستر قطعات الکترونیکی

آموزش لحیم کاری و مونتاژ یوبرد، ساخت دنیای الکترونیک

آموزش ماژول های الکترونیکی یوبرد، شاخ و برگ درخت الکترونیک

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

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

delay چه مشکلاتی در برنامه به وجود می آورد؟ روش جایگزین delay چیست؟ چرا باید delay را حذف کرد؟ روش حذف delay چیست؟ چکونه از تایمر به جای delay استفاده کنیم؟ چگونه زمان بندی انجام چند وظیفه را با تایمر انجام دهیم؟ فرمان شروع delay با تایمر چگونه است؟ برای یافتن این سوالات با ما همراه باشید.

delay در برنامه نویسی یک ابزار برای ایجاد تأخیر است. توابع delay که در نرم افزارهای اتمل استودیو، کدویژن، keil و … به کار می گیریم، اغلب با استفاده از حلقه های for و while نوشته شده اند. هنگامی که تابع delay اجرا می شود، برنامه در حلقه های for و while این تابع باقی می ماند تا وقتی که زمان delay سپری شود. در استفاده از توابع delay اگر دستوری پس از این توابع نوشته شده باشد، تا زمان پایان زمان delay اجرا نمی شود. این عملکرد برای برنامه های ساده مشکلی به وجود نمی آورد. ولی در پروژه هایی با حجم پردازش بالا، استفاده از توابع delay معمول امکان پذیر نیست. در میکروکنترلرها یکی از روش های ایجاد تأخیر، استفاده از تایمر است.

در این نوشته به بررسی روش ایجاد delay با تایمر و حذف کتابخانۀ delay.h از پروژه می پردازیم. ما برای این کار یک نمونه کد را در کدویژن بررسی خواهیم کرد. این روش را می توان در نرم افزارهای دیگر برای میکروکنترلرهای دیگر نیز پیاده کرد و محدود به کدویژن و AVR نیست. نمونه کدی که بررسی می کنیم با نمونه کد ویدئوی این نوشته متفاوت است. برای درک بهتر موضوع حذف delay از پروژه و استفاده از تایمر برای ایجاد delay، ویدئوی این نوشته را نیز مشاهده کنید.

فیلم آموزش تایمر در STM32                         (فیلم آموزش ARM STM32 مقدماتی)

فیلم آموزش تایمر پیشرفته در STM32

فیلم آموزش تایمر در AVR                             (فیلم آموزش میکروکنترلرهای AVR مقدماتی)

فیلم آموزش تایمر پیشرفته در AVR

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

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

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

روش حذف delay از پروژه

منظور ما از حذف delay از پروژه، حذف کامل آن است. یعنی ممکن است کتابخانه ای را از اینترنت دانلود کنیم و در آن از کتابخانۀ delay استفاده شده باشد. باید آن را نیز حذف کنیم. در ادامه می بینیم که چطور به جای delay از تایمر برای ایجاد تأخیر استفاده می کنیم.

نمونه کد با تابع delay

در نمونه کد زیر می بینیم که می خواهیم هر 100 میلی ثانیه یک بار یک واحد به متغیر number اضافه شود و سپس مقدار آن روی LCD نمایش داده شود. همچنین پس از 100 میلی ثانیه پورت B تغییر وضعیت دهد.

while (1)
{
	number++;
	lcd_clear();
	sprintf(lcd_str,"Number=%d",number);
	lcd_puts(lcd_str);
	delay_ms(100);
       PORTB=~PORTB;
}

در این برنامه ابتدا یک واحد به number اضافه می شود، سپس LCD پاک می شود، متغیر number به رشته تبدیل می شود و رشته نمایش داده می شود. بعد از آن یک delay داریم که 100 میلی ثانیه تأخیر ایجاد می کند. در آخر هم دستور PORTB=~PORTB پس از 100 میلی ثانیه تأخیر اجرا می شود.

در این نمونه کد می بینیم که دستور PORTB=~PORTB باید منتظر بماند تا 100 میلی ثانیه سپری شود. فرض  کنید ما می خواهیم اضافه شدن به متغیر number و نمایش آن در LCD هر 100 میلی ثانیه یک بار اتفاق بیفتد و دستور PORTB=~PORTB هر 10 میلی ثانیه یک بار اجرا شود. برای این کار لازم است از یک تایمر استفاده و متغیرهایی تعریف کنیم.

استفاده از تایمر برای ایجاد delay

برای این که delay را از پروژه حذف کنیم و کاری کنیم که دستور PORTB=~PORTB هر 10 میلی ثانیه اجرا شود و اضافه شدن به number و نمایش در LCD هر 100 میلی ثانیه اتفاق بیفتد، ابتدا دو استراکچر تعریف می کنیم. در ادامه عملکرد این دو استراکچر را می بینیم.

struct SHOW_LCD_TIME
{
	unsigned int counter;
	char start_counter;
}show_lcd;

struct PORTB_TOGGLE_TIME
{
	unsigned int counter;
	char start_counter;
}portb_toggle;

تایمر صفر را با تقسیم فرکانسی 32 در مد نرمال راه اندازی می کنیم. در این صورت زمان سپری شدن هر پلۀ تایمر برابر است با 4 میکروثانیه. اگر تایمر 250 پله بشمارد، زمان 1 میلی ثانیه سپری شده است. برای این که تایمر 250 پله بشمارد و سپس سرریز شود، مقدار رجیستر TCNT0 را برابر 6 قرار می دهیم. وقفۀ سرریز تایمر را نیز فعال می کنیم.

ASSR=0<<AS0;
TCCR0=(1<<CS01) | (1<<CS00);
TCNT0=0x06;
OCR0=0x00;

TIMSK=(1<<TOIE0);

#asm("sei")

در روتین وقفۀ سرریز تایمر صفر مقدار TCNT0 را برابر 6 قرار می دهیم. با این کار تایمر صفر از 6 شروع به شمارش می کند. چون تایمر صفر 8 بیتی است، مقدار TCNT0 تا 255 بالا می رود و سپس سرریز می شود. شمردن تایمر از 6 تا 255 و سرریز تایمر (با توجه به فرکانس کلاک تایمر که برابر 250 کیلوهرتز است) زمان 1 میلی ثانیه طول می کشد. پس زمان بین دو سرریز تایمر برابر 1 میلی ثانیه است.

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
	TCNT0=0x06;

	if(show_lcd.start_counter==YES)      show_lcd.counter++;
	if(portb_toggle.start_counter==YES)  portb_toggle.counter++;
}

در روتین وقفۀ سرریز تایمر صفر دو شرط قرار داده ایم. اگر start_counter را در while بی نهایت برای هر کدام از عملکردهای اضافه کردن به number و نمایش در LCD و دستور PORTB=~PORTB برابر با YES قرار دهیم، هرگاه که روتین وقفۀ سرریز تایمر صفر اتفاق می افتد، یک واحد به متغیرهای counter این عملکردها اضافه می شود. YES و NO را به صورت زیر دیفاین می کنیم.

#define YES 1
#define NO  0

دستورهای بدون delay در حلقۀ بی نهایت while

در حلقۀ while برنامه ابتدا متغیرهای start_counter مربوط به عملکردهای مورد نظر را YES می کنیم. با این کار هر بار که وقفه اتفاق بیفتد به مقدار counter این عملکردها یک واحد اضافه می شود. در این مثال خاص شاید متغیر start_counter برای ما کاربردی نداشته باشد. زیرا ما می خواهیم همواره دو عملکرد اجرا شوند. اما در برخی پروژه ها نیاز داریم که delay تحت شرایطی اتفاق بیفتد. بنابراین یک متغیر start_counter تعریف می کنیم که با YES کردن آن، شرایط مورد نظر مهیا شود. در واقع YES کردن این متغیر به معنای فرمان شروع delay است. در اینجا به جای این که یک تابع بنویسیم و delay ایجاد کنیم، با YES کردن متغیر start_counter فرمان شروع تأخیر را می دهیم.

while (1)
{
	show_lcd.start_counter=YES;
	portb_toggle.start_counter=YES;
	
	if(show_lcd.counter>=100)
	{
		show_lcd.counter=0;
		show_lcd.start_counter=NO;
		number++;
		lcd_clear();
		sprintf(lcd_str,"Number=%d",number);
		lcd_puts(lcd_str);
	}
	
	if(portb_toggle.counter>=10)
	{
		portb_toggle.counter=0;
		portb_toggle.start_counter=NO;
		PORTB=~PORTB;
	}
}

در حلقۀ بینهایت while دو شرط قرار داده ایم. اگر مقدار counter برای عملکرد اضافه کردن به number و نمایش در LCD بزرگتر یا مساوی 100 شود، بدان معناست که 100 میلی ثانیه سپری شده است. زیرا (در روتین وقفۀ سرریز تایمر صفر) به متغیر counter برای این عملکرد در هر 1 میلی ثانیه یک واحد اضافه شده است. بنابراین دستورهای مربوط به شرط اول اجرا می شوند. در سطر اول این شرط مقدار counter صفر شده است که دفعۀ بعدی از صفر شروع به افزایش آن شود.

در شرط دوم می بینیم که اگر counter مربوط به دستور PORTB=~PORTB به 10 برسد، این دستور اجرا می شود. با توجه به مقدار 10 برای counter و این که هر 1 میلی ثانیه یک بار به counter اضافه شده، این دستور نیز هر 10 میلی ثانیه یک بار اجرا می شود. اکنون می توانیم توابع delay و کتابخانۀ delay.h را از برنامه پاک کنیم.

نتیجۀ حذف delay را ببینیم

در نرم افزار Proteus می توانیم ببینیم که مقدار Number هر 100 میلی ثانیه یک بار اضافه می شود و پورت B هر 10 میلی ثانیه یک بار تغییر وضعیت می دهد.

عملکرد-حذف-delay-از-پروژه

تصویر 1 – نتیجۀ حذف delay در Proteus

برای درک بهتر نحوۀ برنامه نویسی برای حذف delay از پروژه، پیشنهاد می کنیم ویدئوی این نوشته را مشاهده کنید. فایل های برنامۀ نوشته شده و همچنین شبیه سازی آن در پیوست موجود است.

اهمیت مدیریت زمانی در پروژه ها

در اغلب پروژه های کاربردی میکروکنترلر باید چندین وظیفه را انجام دهد. برخی از این وظایف لازم است همزمان انجام شوند، برخی دیگر نیز پشت سر هم با توالی زمانی خاص. این توالی زمانی و همزمان انجام شدن وظایف به نوع و روش کدنویسی نیز بستگی دارد. اما یکی از وجوه مشترک همۀ پروژه های کاربردی، زمان بندی انجام وظایف است. در صورتی که خللی در زمان بندی انجام وظایف پیش بیاید، همه یا بخشی از عملکرد پروژه دچار اختلال و یا از کار افتادن کامل می شود. بنابراین نرم افزار پروژه باید طوری باشد که زمان بندی آن به صحیح ترین شکل ممکن انجام شود.

یکی از نکات مهمی که در برنامه نویسی چنین پروژه هایی باید رعایت شود، استفاده نکردن از delay در برنامه است. delay هایی که با استفاده از حلقه های for و while نوشته می شوند باعث می شوند که برنامه در گیر حلقه های آنها شود و دستورهای بعد از delay تا اتمام delay اجرا نشود. در روشی که استفاده کردیم اگر فرض کنیم زمان اجرای دستورها صفر است (که البته نیست) می توان گفت وظایف دقیقاً در زمان های تعیین شده در حال انجام شدن است. برای درک بهتر این مطلب فرض کنید می خواهیم PORTA هر 2 میلی ثانیه یک بار toggle شود، PORTB هر 37 ثانیه یک بار toggle شود، هر 7 میلی ثانیه یک بار کی پد اسکن شود و هر 53 میلی ثانیه یک بار نیز LCD رفرش شود. اگر هم بشود با ایجاد delay با توابع کتابخانۀ delay.h این کار را انجام داد، هم روشی اصولی نیست و هم خیلی مشکل خواهد شد. اما اگر با تایمر بخواهیم این کار را انجام دهیم با تعریف متغیرها و فعال کردن تایمر و وقفۀ تایمر به راحتی این کار قابل اجرا و قابل تعمیم برای وظایف دیگر است.

ویدئوی 1 – ساخت تأخیر با تایمر در STM32

 

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

 

از روش حذف delay از پروژه ها نتیجه می گیریم:

  1. در پروژه هایی که لازم است چند وظیفه با زمان بندی بدون تأخیر انجام شود، برای ایجاد delay نباید از توابع delay کتابخانۀ h و توابع delay نوشته شده با حلقه های for و while استفاده کنیم.
  2. اگر دستوری پس از توابع delay (که متعلق به کتابخانۀ h هستند و یا در آنها از for و while برای ایجاد تأخیر استفاده شده) نوشته شود، تا وقتی که زمان delay سپری نشود، آن دستور اجرا نمی شود.
  3. حذف delay از پروژه باید شامل تمام توابع delay در فایل هایی که خودمان نوشته ایم و فایل هایی که دانلود کرده ایم باشد. یعنی در هیچ جای برنامه از delay استفاده نکرده باشیم.
  4. در استفاده از تایمر برای ایجاد delay بهتر است زمان های روند به وجود بیاوریم.
  5. از مد CTC تایمر و مدهای دیگر هم می توانیم استفاده کنیم. لزومی ندارد که حتماً از مد نرمال استفاده کنیم.
  6. در نمونه کدی که بررسی کردیم، فرمان شروع delay در واقع YES کردن متغیر start_counter است.

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

زیرساخت مطمئن صنعت

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد
رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های STM32

میکروکنترلر ARM

میکروکنترلر ARM چیست؟ پردازندۀ ARM

میکروکنترلر ARM ، میکروکنترلرهایی هستند که پردازندۀ آنها ساخت شرکت ARM است. شرکت ARM سازندۀ میکروکنترلر نیست. سازندۀ پردازنده (CPU) است. امروزه به میکروکنترلرهایی که پردازندۀ آنها طراحی شدۀ شرکت ARM باشد، میکروکنترلر ARM گفته می شود.

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

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

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

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

راه اندازی UART در STM32، رجیستری و HAL

راه اندازی UART در STM32، اتصالات و نرم افزار مورد نیاز، نمونه کد USART در STM32 به صورت رجیستری، نمونه کد رجیستری USART با وقفۀ دریافت، نمونه کد HAL برای راه اندازی USART در STM32، نمونه کد HAL با وقفۀ دریافت، نحوه محاسبه Baud rate در USART میکروکنترلرهای STM32F1

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

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

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

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های AVR

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

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

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

پروتکل-i2c-protocol

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

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

سون-سگمنت-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

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های میکروکنترلرهای ARM-LPC

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

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

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

پروگرامر-j-link-میکروکنترلر-arm

پروگرامر J-Link و برنامه ریزی میکروکنترلرهای ARM

پروگرامر J-Link، پردازنده هایی که توسط J-Link پشتیبانی می شوند، انواع J-Link، ویژگی های J-Link، نرم افزار J-Flash چیست؟ پروگرام کردن STM32F1xx و LPC17xx با J-Flash و J-Flash Lite و Keil، اتصالات JTAG و SWD در J-Link، تنظیمات J-Flash و Keil برای پروگرام کردن با J-Link

پروتکل-i2c-protocol

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

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

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

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

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

رضا اسدی

رضا اسدی

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

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

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

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

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

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

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

راه اندازی سون سگمنت با آردوینو 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 و ویژوال استودیو

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های طراحی PCB

فیوز الکترونیکی

فیوز الکترونیکی، حافظ جان بردهای الکترونیکی

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

تست-الکتریکال-pcb

تست الکتریکال PCB و روش های آن

تست الکتریکال برد مدار چاپی چیست؟ برخی انواع تست PCB، تست الکتریکال PCB، پارامترهای اندازه گیری در تست الکتریکال، روش های تست الکتریکال برد مدار چاپی، روش تست Flying probe، روش تست Universal grid یا Bed of nails، نکات تست الکتریکال برد مدار چاپی

رله-relay

رله، سوییچ تحریک پذیر

تعریف رله، تاریخچه، طرز کار رلۀ الکترومکانیکی، اصطلاحات، انواع الکترومکانیکی، رلۀ حالت جامد، رلۀ هیبریدی، رلۀ حرارتی و انواع تحریک شونده با عوامل غیر الکتریکی، انواع موجود در صنعت برق و برق صنعتی، رلۀ ایمنی و برخی انواع حفاظتی، رلۀ دیجیتال، لزوم استفاده و راه اندازی رله، مشخصات الکتریکی

دیود-tvs

دیود TVS، حذف ولتاژ گذرا و ESD

ولتاژ گذرا و TVS (Transient Voltage Suppression) چیست؟ دیود TVS چیست؟ حذف ولتاژ گذرا با دیود TVS، حذف تخلیه الکتریسیته ساکن (ESD) با TVS، مشخصات الکتریکی دیودهای TVS، انواع دیودهای TVS، نماد شماتیک دیودهای TVS، کاربرد دیودهای TVS، کاربرد خودرویی، تفاوت دیودهای TVS و دیودهای زنر، انتخاب دیودهای TVS مناسب

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های لحیم کاری و مونتاژ استاندارد

لحیم کاری قطعات حساس

لحیم کاری قطعات حساس

لحیم کاری قطعات حساس، باید با دقت به دمای لحیم کاری انجام شود. در این نوشته 4 نکته در رابطه با حرارت در لحیم کاری قطعات حساس را بیان می کنیم.

انواع-هویه

انواع هویه، ویژگی ها و کاربرد آنها

تعریف و انواع هویه، هویه های الکتریکی و غیر الکتریکی، هویه ها از لحاظ اتصال نوک هویه به هیتر آن، توان هویه، قابل حمل بودن، سرعت داغ شدن هویه، هویه های AC و DC، هویه های قلمی و تفنگی، قابلیت های دیگر هویه ها، انواع مختلف هویه، نکات هویه

تست-الکتریکال-pcb

تست الکتریکال PCB و روش های آن

تست الکتریکال برد مدار چاپی چیست؟ برخی انواع تست PCB، تست الکتریکال PCB، پارامترهای اندازه گیری در تست الکتریکال، روش های تست الکتریکال برد مدار چاپی، روش تست Flying probe، روش تست Universal grid یا Bed of nails، نکات تست الکتریکال برد مدار چاپی

انواع-نوک-هویه

انواع نوک هویه و کاربرد آنها

انواع نوک هویه متداول، انواع اتصال نوک هویه به هیتر، مشخصات و کاربرد انواع نوک هویه، نوک هویه تایپ B، تایپ I، تایپ BI، تایپ SI، تایپ D، تایپ C، تایپ K، قاشقی، T شکل و Diamond، احیا کننده های نوک هویه، نام های نوک هویه

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های حوزه الکترونیک

فیوز الکترونیکی

فیوز الکترونیکی، حافظ جان بردهای الکترونیکی

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

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

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

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

دانشگاه و صنعت در الکترونیک

دانشگاه و صنعت در الکترونیک باید با هم ارتباط داشته باشند. چرا باید ارتباط داشته باشند؟ در کشور ما وضعیت ارتباط دانشگاه و صنعت بخصوص در زمینۀ الکترونیک چطور است؟

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

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

اهمیت تخصص مهندس الکترونیک در جایگاه، حقوق، آیندۀ یک مهندس الکترونیک را می بینیم.

رضا اسدی

رضا اسدی

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

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

استفاده از زبان سی در سیستم های حیاتی

از همه ابزارهای زبان برنامه نویسی میکروکنترلرها استفاده کنیم؟!

ابزارهای زبان برنامه نویسی میکروکنترلرها در استانداردهای برنامه نویسی محدود شده است. بطور مثال در استاندارد MISRA-C برای سیستم های حیاتی، استفاده از دستورهای goto و continue ممنوع شده است. در این نوشته به بررسی این موضوع می پردازیم.

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

مهمترین کاربردهای اشاره گر در زبان C میکروکنترلرها

کاربردهای اشاره گر در زبان C میکروکنترلرها شامل موارد مختلفی است که مهمترین آنها «ارسال اشاره گر به تابع» و «اشاره گر به تابع» است. در این نوشته ابتدا آنها را به اختصار شرح داده سپس در مورد اهمیت کاربرد اشاره گر در میکروکنترلر توضیح می دهیم.

انواع-متغیر-زبان-c-cpp

انواع متغیر در زبان برنامه نویسی C

انواع متغیرها در زبان C، تعریف انواع متغیر در زبان C، انواع متغیر در نرم افزار کدویژن و نرم افزار Keil، آرایه و رشته در زبان برنامه نویسی C، انواع متغیر استراکچر (Structure) و یونیون (union)، typedef در زبان C، متغیر نوع volatile، متغیرهای عمومی (Global)، متغیرهای محلی (Local)

ساخت-کتابخانه-c-cpp

نحوۀ ساخت کتابخانه در زبان برنامه نویسی C برای میکروکنترلرها

کتابخانه در زبان برنامه نویسی چیست؟ ساخت کتابخانه در نرم افزار CodevisionAVR، کتابخانه با پسوند h، کتابخانه با پسوند c، کتابخانه با پسوند h و c، فراخوانی کتابخانه، کاربرد دستور پیش پردازندۀ #ifndef در نوشتن کتابخانه، فراخوانی کتابخانه از پوشه های مختلف، ساخت کتابخانه در نرم افزار Keil

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های ماژول های الکترونیکی

راه-اندازی-ماژول-sim800

راه اندازی ماژول SIM800، تماس تلفنی و پیامک

راه اندازی ماژول SIM800، AT کامند چیست، سخت افزارها و نرم افزارهای مورد نیاز برای راه انداختن SIM800، تغذِیۀ ماژول SIM800، ارتباط سریال ماژول SIM800، ارسال AT کامند به SIM800، سینتکس های AT کامند در SIM800، تنظیمات اولیۀ SIM800، تماس تلفنی و ارسال و دریافت SMS با SIM800

آپدیت-فریمور-ماژول-sim800

آپدیت Firmware ماژول SIM800

نحوه آپدیت Firmware ماژول SIM800، آپدیت Firmware بلوتوث ماژول SIM808 و SIM800، نکات قبل از شروع آپدیت ماژول های SIM800، آپدیت ماژول های SIM800 با نرم افزار SIM800 Series download Tools Customer، مراحل به روز رسانی و تغییر نرم افزار SIM800، آپدیت Firmware ماژول SIM800C

سامانه-gnss-gps

سامانه GNSS و GPS، سامانه های موقعیت یاب جهانی و محلی

معرفی سامانه GNSS، سامانه موقعیت یاب محلی بدون ماهواره، ناوبری هذلولوی، سامانه ماهواره ای ناوبری جهانی و محلی، GPS و GLONASS، خطای GPS محیط های مختلف، NMEA چیست؟ فرمت داده خروجی GPS، قالب داده GPS در ماژول SIM808، فرمت های استاندارد طول و عرض جغرافیایی، تنظیمات ماژول های سامانه GNSS

بلوتوث-bluetooth

معرفی بلوتوث، پروفایل های بلوتوث و نسخه های بلوتوث

نام گذاری بلوتوث، مزیت بلوتوث به WIFI، کلاس کاری و پروفایل بلوتوث، بلوتوث نسخه 1.0، B1.0، 1.1 و 1.2، نسخه 2.0 و EDR، نسخه 2.1 و EIR، نسخه 3.0 و HS، نسخه 4.0 و BLE یا LE، بلوتوث هوشمند، نسخه 4.1، 4.2 و IPV6، نسخه 5، کاربرد بلوتوث در خودرو

رضا اسدی

رضا اسدی

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

جدیدترین تاپیک های ماژول های الکترونیکی

راه-اندازی-ماژول-sim800

راه اندازی ماژول SIM800، تماس تلفنی و پیامک

راه اندازی ماژول SIM800، AT کامند چیست، سخت افزارها و نرم افزارهای مورد نیاز برای راه انداختن SIM800، تغذِیۀ ماژول SIM800، ارتباط سریال ماژول SIM800، ارسال AT کامند به SIM800، سینتکس های AT کامند در SIM800، تنظیمات اولیۀ SIM800، تماس تلفنی و ارسال و دریافت SMS با SIM800

آپدیت-فریمور-ماژول-sim800

آپدیت Firmware ماژول SIM800

نحوه آپدیت Firmware ماژول SIM800، آپدیت Firmware بلوتوث ماژول SIM808 و SIM800، نکات قبل از شروع آپدیت ماژول های SIM800، آپدیت ماژول های SIM800 با نرم افزار SIM800 Series download Tools Customer، مراحل به روز رسانی و تغییر نرم افزار SIM800، آپدیت Firmware ماژول SIM800C

سامانه-gnss-gps

سامانه GNSS و GPS، سامانه های موقعیت یاب جهانی و محلی

معرفی سامانه GNSS، سامانه موقعیت یاب محلی بدون ماهواره، ناوبری هذلولوی، سامانه ماهواره ای ناوبری جهانی و محلی، GPS و GLONASS، خطای GPS محیط های مختلف، NMEA چیست؟ فرمت داده خروجی GPS، قالب داده GPS در ماژول SIM808، فرمت های استاندارد طول و عرض جغرافیایی، تنظیمات ماژول های سامانه GNSS

بلوتوث-bluetooth

معرفی بلوتوث، پروفایل های بلوتوث و نسخه های بلوتوث

نام گذاری بلوتوث، مزیت بلوتوث به WIFI، کلاس کاری و پروفایل بلوتوث، بلوتوث نسخه 1.0، B1.0، 1.1 و 1.2، نسخه 2.0 و EDR، نسخه 2.1 و EIR، نسخه 3.0 و HS، نسخه 4.0 و BLE یا LE، بلوتوث هوشمند، نسخه 4.1، 4.2 و IPV6، نسخه 5، کاربرد بلوتوث در خودرو

رضا اسدی

رضا اسدی

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

جدیدترین های دانلودی

پک های نرم افزار KEIL

دانلود پک های میکروکنترلر برای Keil

دانلود پک های میکروکنترلر برای Keil پیش نیاز استفاده از میکروکنترلر موردنظر در نرم افزار Keil است. شامل پکهای میکروکنترلر STM32 و LPC

دانلود نرم افزار KEIL

دانلود نرم افزار Keil MDK-ARM

دانلود نرم افزار Keil، یک محیط یکپارچۀ توسعۀ نرم افزار (IDE) برای میکروکنترلرها را در اختیار ما قرار می دهد.

دانلود نرم افزار STM32CubeProg

دانلود نرم افزار STM32CubeProg

دانلود نرم افزار STM32CubeProg ، یک ابزار برنامه ریزی برای میکروکنترلرهای STM32 از طریق درگاه JTAG و SWD را در اختیار شما قرار می دهد.

دانلود پک های میکروکنترلر برای STM32Cube

دانلود پک های میکروکنترلر برای STM32Cube

دانلود پک های میکروکنترلر برای STM32Cube لازم برای استفاده از میکروکنترلر موردنظر در پکیج نرم افزارهای STM32Cube است.

رضا اسدی

رضا اسدی

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

جدیدترین های میکروآموزش

فرق آماتور و حرفه‌ای در الکترونیک

فرق آماتور و حرفه‌ای در الکترونیک

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

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

علت سوختن برد الکترونیکی چیست؟

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

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD

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

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB

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

9 Comments

  1. سلام استاد اسدی. این مورد که قرار دادید حذف delay و استفاده از تایمر بجای اون هست. در مورد استفاده از OS ها برای مدیریت زمانی پروژه اگر لطف کنید مطلبی قرار بدید. تشکر

    Reply
    • سلام. حتماً در آینده در نوشته هایی به موضوع OSها و RTOS می پردازیم.

      Reply
  2. سلام. خیلی مطلب مفیدی بود. ممنون از این که این مطالب رو آموزش میدید. این ویدئو مربوط به کدوم دورۀ آموزشیتون هست؟ آموزش میکروکنترلر AVR یا آموزش زبان برنامه نویسی C میکروکنترلرها؟

    Reply
    • سلام. خواهش میکنم. توی آموزش زبان C میکروکنترلرها به این موضوع پرداخته شده.

      Reply
  3. سلام. مثالی که توضیح دادید سوالاتمو پاسخ داد. فقط این که تا چه تعداد تابع و عملکرد میتونیم با این روش اجرا کنیم که تقریبا real time اجرا بشن؟ ممنون

    Reply
    • سلام. نمیشه پاسخ قطعی به این سوال داد. همه چی بستگی به شرایط پروژه و سبک کدنویسی داره. هر چی تعداد توابع و عملکردهای اجرایی بیشتر باشه مسلماً از Real Time بودن برنامه کم میشه.

      Reply
  4. دوست عزیز یا بهتر بگم استاد گرامی خیلی بیان بالایی دارین.
    ممنون.

    Reply
    • خیلی ممنون. نظر لطف شماست

      Reply
  5. در صورتي كه درهر ثانيه ٢٥٠ درخواست وارد شود و پردازش هر درخواست ٢ ميلي ثانيه زمان ببرد.

    Reply

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 دقیقه است