توجه :
 
 چنانچه مفاهیم یا عبارت ها و اصطلاحات به کار رفته در این صفحه را متوجه نمی شوید، می توانید مطالعه خود را از اولین جلسه آموزشی رباتیک شروع نمایید. بدین منظور روی لینک زیر کلیک فرمایید:
 
 
همچنین چنانچه بخشی از مطالب را قبلا خوانده اید، برای مشاهده فهرست موضوعات جلسات آموزشی رباتیک، لطفا روی لینک زیر کلیک فرمایید:
 
 
در این بخش از سایت رشد، مطالب آموزشی در زمینه رباتیک با زبان بسیار ساده و بر مبنای مطالبی که در سنین راهنمایی آموخته اید ارائه شده و در هر جلسه مطالب جدیدی آموزش داده شده اند.
 آخرین مطالب
 جلسه‌ی پنجاه و سوم
جلسه‌ی پنجاه و سوم
آشنایی با متد برنامه‌نویسی ساخت‌یافته، شروع مبحث توابع و ...

با عرض سلام خدمت دوستان عزیز

همان‌طور که در جلسه‌ی گذشته نیز گفته شد، در این جلسه در مورد استفاده از توابع در برنامه‌نویسی به زبان C بحث خواهیم کرد. به طبع اکثر مطالبی که در این جلسه مطرح می‌شود، فقط مختص بحث روباتیک نیستند، بلکه مربوط به روش برنامه نویسی به زبان C هستند. از این منظر بحث این جلسه بسیار مهم و پرکاربرد است.

بدون مقدمه‌ی بیشتر به بحث باز می‌گردیم. تا کنون روش برنامه‌نویسی ما به این صورت بوده که تمام دستوراتی که می خواهیم روبات آن‌ها را اجرا کند، به ترتیب در قسمتی که نوشته شده است  (“Place your code here”) می‌نویسیم، و میکروکنترلر هم آن‌ها را به ترتیب مشخص شده اجرا می‌کند.

اما این روش در طراحی و نوشتن برنامه‌های بزرگتر برای ربات‌های حرفه‌ای تر ما را دچار مشکل خواهد کرد. مثلاً در نوشتن یک برنامه‌ی پیشرفته‌تر، ممکن است در چندین جای مختلف برنامه، یک سری دستورات خاص عیناً تکرار شود. مثلاً فرض کنید در یک روبات مین یاب، ممکن است در 10 جای مختلف برنامه نیاز باشد به موتورها فرمان توقف داده شود. این فرمان توقف برای 4 موتور، حداقل نیاز به 8 خط برنامه دارد.  حالا فرض کنید این رویه برای ده ها فرمان دیگر نیز در برنامه تکرار می‌شود، که فرمان "توقف" شاید ساده‌ترین و کوتا‌ه‌ترین آن‌ها باشد!

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

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

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

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

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


   برنامه‌نویسی ساخت‌یافته:



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

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

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

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

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


   توابع:                            


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

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

بحث بیشتر در مورد توابع را به جلسه آینده موکول می‌کنیم.
منتظر سولات و نظرات دوستان خوبم هستم.
پیروز باشید
امیرغیاثوند


1389/3/4 لينک مستقيم

فرستنده :
آرمان HyperLink HyperLink 1389/5/31
مـتـن : سلام فراز جان
دستت درد نکنه واسه این صفحه پرباری که تو اینترنت ساختی
همین که کپی نمیکنی یک دنیا ممنون.
یه خواهش
در مورد خازن های درایور سلنوئید که جلسه قبل گفتی مدارشو واسه 4 تا خازن هم بکش و طریقه های دیگر درایو کردن سلنوئید رو هم لطفا بگو .
بازم ممنون
پاسـخ : سلام دوست عزیز. ممنونم از لطفت
برای 4 خازن به راحتی می تونید همین روش رو بسط بدهید. یعنی سیمی که از پایین وارد سلنوید شده است را قطع کنید و یک ردیف دیگر خازن اضافه کنید. برای درک عرایض من به نحوه ی اتصال خازن بالا و پایین دقت کنید، همین روش رو برای هر چند تا خازن دیگری که نیاز دارید ادامه بدهید.
روش دیگر برای درایو کردن سلتوییدها استفاده از مبدل های Dc to Dc است. حتماٌ در مورد این موضوع مفصل توضیح خواهم داد دوست عزیز.
پیروز باشید.

فرستنده :
kavosh HyperLink HyperLink 1389/5/31
مـتـن : سلا آقا فراز به خاطر این مقالههای خوب از شما ممنون هستم.
سوال من یکمی خارج از موضوع شماست. می خواستم از شما بپرسم که چه طور می شه برای ربات جنگجو یک جرقه زن بسازیم که بتونه گاز ما را مشتمل کنه؟
پاسـخ : سلام. ممنونم دوست عزیزم
فکر می کنم بتونید از فندک گازهای خونگی استفاده کنید، البته اگر بتونید ولتاژ مورد نیاز برای راه اندازیش رو تامین کنید.
پیروز باشید.

فرستنده :
ناشناس HyperLink HyperLink 1389/5/31
مـتـن : بسيار عالي

فرستنده :
رضا HyperLink HyperLink 1389/5/31
مـتـن : با عرز سلام و خسته نباشید ایا ترانزیستور tip 41 قابلیت انتقال 12 ولت را دارد و چند امپر است؟
من اتش نشان می سازم از سنسور نور یاب 5mm استفاده کردم اما اتش را حس نمیکند ایا باید از 3mm استفاده میکردم؟
یا بهتر است ار گیرنده ی cny70 استفاده کنم بهتر است؟
پاسـخ : سلام دوست عزیز. بله، حداقل 1 امپر را به راحتی می تواند عبور دهد. اطلاعات دقیق در مورد قطعه ها را می توانید از طریق دیتا شیت آن ها به دست بیاورید.
نه، بین گیرنده های 5 میل و 3 میل تفاوتی در میزان حساسیت ان ها وجود ندارد. مشکل جای دیگری است احتمالاً.
خیر، این قطعه هم از یک جفت گیرنده فرستنده ی IR معمولی تشکیل شده است.
پیروز باشید

فرستنده :
ايمان HyperLink HyperLink 1389/5/31
مـتـن : سلام و عرض خسته نباشيد.
ما يه گروه داريم كه قرار توي اون بحث رباتيك كنيم.
چند روز پيش كه با اين بخش از سايت آشنا شدم ديدم كه مطالبتون واقعا مفيده مي خواستم با اجازه شما از مطالبتون استفاده كنم .
تعداد افراد گروه ما زياد هستن و هر كدوم توي رشته هاي مختلفي از قبيل:الكترونيك،كامپيوتر، مكانيك و... هستن . و ما بيشتر تمايل داريم كه توي زمينه ربات هاي پروازي كار كنيم.اگه ميشه به ما كمك كنيد كه بايد از كجا شروع كنيم؟
با تشكر ايمان
پاسـخ : سلام. شروع کارتون رو تبریک عرض می کنم و براتون ارزوی موفقیت می کنم. منظورتون دقیقاً چه روباتیه؟ فکر می کنم موضوعی که شما می خواهید روش سرمایه گذاری کنید بیش از این که به روباتیک مربوط باشه به مکانیک مربوط می شه.
پیروز باشید

فرستنده :
ناشناس HyperLink HyperLink 1389/5/31
مـتـن : سلام خسته نباشید. طبق قوانین ربات های آتش نشان که در سایت زیر آمده است و مربوط به 2010 هست مسیر دهی ربات چگونه انجام شود پس از خاموش کردن آتش که باید به مسیر اولیه برگردد که در واقع مسیر به سمت آتش با زاویه 90 درجه قرار دارد یعنی پس از خاموش کردن آتش باید به عقب برگشته و زاویه خود را 90 درجه باید تغییر دهد.
http://www.arvintec.com/champion/#ghavanin
پاسـخ : سلام. ممنون از اطلاعاتتون. لینکتون درست نیست گویا.

فرستنده :
امیرغیاثوند HyperLink HyperLink 1389/5/7
مـتـن : با عرض سلام خدمت دوستان عزیز و عرض پوزش از دوستانی که تا به حال جواب سوالات خود را دریافت نکرده اند.
به زودی بخش رباتیک سایت رشد، با مطالب جدید، با بارگذاری هفتگی، فعالیت خود را پی خواهد گرفت. منتظر ما باشید.
با احترام، امیر غیاثوند.
پاسـخ :

نظر شما پس از تاييد در سايت قرار داده خواهد شد
نام :
پست الکترونيکي :
صفحه شخصي :
نظر:
تایید انصراف
 

 

 فعاليت هاي علمي
 تماس با ما