تبلیغات
پایگاه تخصصی روباتیک و الکترونیک - برنامه نویسی به شیوه ماژولار
 
درباره وبلاگ




مدیر وبلاگ : محمد علی
نویسندگان
نظرسنجی
به نظر شما وبلاگ چگونه است ؟








آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
پایگاه تخصصی روباتیک و الکترونیک
صفحه نخست             تماس با مدیر           پست الکترونیک               RSS                  ATOM
شنبه 28 فروردین 1389 :: نویسنده : محمد علی

بازم سلام

تو این پست میخواستم شما رو با روش برنامه نویسی ماژولار آشنا کنم.

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

من خودم تا حالا از شیوه ماژولار استفاده کردم و توصیه می کنم شما هم از همین شیوه استفاده کنید .


این توضیحات مربوط به زبان برنامه نویسی C هستش :

وقتی شما تو Codevision تنظیمات آیسی رو انجام میدید در آخر میرسید به مهم ترین بخش برنامه یا همون حلقه اصلی ( While ) . خیلی ها تمام برنامه رو تو همین وایل مینویسند . گاهی اوقات این وایل به حدود 200 یا 300 خط میرسه و دیباگ کردنش خیلی سخت میشه . امکان خطا هم بسیار بالا میره .برای رفع این مشکل شما میتونید قبل از وایل توابعی رو که میخواهید استفاده کنید به طور دستی تعریف کنید . مثلا میخواهید موتور سمت راست شروع به چرخش به سمت چپ بکنه . به جای اینکه تو وایل به درایور دستور بدین میتونید یه تابع به طور دستی خودتون بنویسید که با دادن جهت و سرعت به عنوان دو تا متغیر به تابع خود تابع موتور رو کنترل کنه . توی وایل فقط کافیه تابع رو احضار کنید ! مثلا :

While (1)

{

.

if (…)

Motor ( 1,75);

.

}

توی تابع بالا 1 نشونه جهت موتور و 75 درصد سرعت موتوره . دیدین که تو وایل فقط یه خط نوشتین و توضیحات تابع رو قبل از وایل نوشتین .

تو این روش شاید وایل اصلی شما حدود 20 یا 30 خط بشه . مثلا اگه شما خواستید روبات یه جا وایسه و یه چشمک هم با LED بزنه دیگه لازم نیست تمام برنامه رو تو وایل بنویسید بلکه میتونسد قبل از وایل یه تابع به نام ()Cheshmak تعریف کنید . مراحل برنامه رو توش بنویسید . حالا تو وایل فقط با احضار کردن اون تابع میتونید چشمک بزنید .

یه نمونه ساده خط یاب با استفاده از این شیوه :

( لازم به ذکره OCR1A,B همون تایمره که برای تنظیم سرعت استفاده میشه و PWM میده .)

In1-4 هم به in های درایور 0 و 1 میده . )


void strate(void)

{

OCR1A=80;

OCR1B=80;

in1=1;

in2=0;

in3=1;

in4=0;


}

void right1(void)

{

OCR1A=100;

OCR1B=50;

in1=1;

in2=0;

in3=1;

in4=0;

}

void right2(void)

{

OCR1A=110;

OCR1B=0;

in1=1;

in2=0;

in3=1;

in4=0;

}

void right3(void)

{

OCR1A=130;

OCR1B=0;

in1=1;

in2=0;

in3=0;

in4=1;

}

void right4(void)

{

OCR1A=120;

OCR1B=50;

in1=1;

in2=0;

in3=0;

in4=1;

}

void right5(void)

{

OCR1A=120;

OCR1B=100;

in1=1;

in2=0;

in3=0;

in4=1;

}

void left1(void)

{

OCR1A=50;

OCR1B=100;

in1=1;

in2=0;

in3=1;

in4=0;

}

void left2(void)

{

OCR1A=0;

OCR1B=110;

in1=1;

in2=0;

in3=1;

in4=0;

}

void left3(void)

{

OCR1A=0;

OCR1B=130;

in1=0;

in2=1;

in3=1;

in4=0;

}

void left4(void)

{

OCR1A=50;

OCR1B=120;

in1=0;

in2=1;

in3=1;

in4=0;

}

void left5(void)

{

OCR1A=100;

OCR1B=120;

in1=0;

in2=1;

in3=1;

in4=0;

}


..


void main(void)

{

....

....


while (1)

{

if (sen1<min)

left5();

if (sen11<min )

right5();

if (sen2<min )

left4();

if (sen10<min )

right4();

if (sen3<min )

left3();

if (sen9<min )

right3();

if (sen4<min )

left2();

if (sen8<min )

right2();

if (sen5<min )

left1();

if (sen7<min )

right1();

if (sen6<min )

strate();

};

}





نوع مطلب :
برچسب ها :
لینک های مرتبط :


دوشنبه 27 شهریور 1396 11:36 ب.ظ
Wonderful beat ! I wish to apprentice while you amend your site,
how could i subscribe for a blog website? The account aided me a acceptable deal.

I had been tiny bit acquainted of this your broadcast offered bright clear concept
دوشنبه 30 مرداد 1396 07:34 ب.ظ
Undeniably believe that that you stated.
Your favourite justification seemed to be on the web the simplest factor to keep in mind of.
I say to you, I certainly get irked while people consider worries that
they just do not know about. You controlled to hit the nail upon the top as neatly as defined out the entire thing with no need side-effects , folks
could take a signal. Will likely be back to get more. Thank you
سه شنبه 14 اردیبهشت 1389 02:19 ب.ظ
با سلام خدمت شما دوست عزیز
من سجاد لطفی مدیر تبلیغات سایت بیترونیك هستم ، خوش حال می شیم اگر مایل هستید در سایت ما هم همكاری داشته باشید، سایت ما تازه راه اندازی شده و نیاز به همكاری دوستان داره ، و اگر موضوع جدیدی رو می توانید در سایت برپا كنید در قسمت نظرات و پیشنهادات انجمن مطرح كنید تا برای شما ایجاد شه با مدیریت خودتان.
منتظر شما هستیم http://bitronic.ir/forum/index.php
با تشكر
دوشنبه 6 اردیبهشت 1389 03:51 ب.ظ
پاسخگویی آنلاین به سوالات دینی توسط کارشناسان مذهبی
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


 
 
برچسب ها
پیوندها
آخرین مطالب