توجه :
 
 چنانچه مفاهیم یا عبارت ها و اصطلاحات به کار رفته در این صفحه را متوجه نمی شوید، می توانید مطالعه خود را از اولین جلسه آموزشی رباتیک شروع نمایید. بدین منظور روی لینک زیر کلیک فرمایید:
 
 
همچنین چنانچه بخشی از مطالب را قبلا خوانده اید، برای مشاهده فهرست موضوعات جلسات آموزشی رباتیک، لطفا روی لینک زیر کلیک فرمایید:
 
 
در این بخش از سایت رشد، مطالب آموزشی در زمینه رباتیک با زبان بسیار ساده و بر مبنای مطالبی که در سنین راهنمایی آموخته اید ارائه شده و در هر جلسه مطالب جدیدی آموزش داده شده اند.
 آخرین مطالب
 جلسه‌ي سي و دوم
جلسه‌ي سي و دوم
تكميل if-else، ساختار while، آشنايي با مبدل آنالوگ به ديجيتال(ADC) و ...

جلسه‌ي سي‌ و يكم

صفحه‌ي اصلي رباتيك

جلسه‌ي سي و سوم


به نام خدا

با عرض سلام و خسته نباشيد خدمت همه‌ي دوستان خوبم

اميدوارم مطالب ارائه شده تا به اينجا داراي سطح كيفي مناسبي بوده باشند و و دوستان عزيز ما بهره‌وري مناسب را از اين مطالب كرده باشند. اگر پيشنهاد يا نظري در مورد اين بخش داريد حتماً با ما در ميان بگذاريد تا انشاالله بتوانيم با الهام‌گيري از نظرات سازنده شما دوستان عزيز، اين بخش را پربارتر كنيم.

در اين جلسه هم بحث برنامه نويسي زبان C را دنبال مي‌كنيم و در ادامه‌ي مبحث جلسه‌ي قبل، شما را با 2 ساختار كنترلي ديگر آشنا مي‌كنيم.



ابتدا يك نكته‌ي ديگر در مورد ساختار
if() و else:

الزامي براي نوشتن قسمت else نيست، يعني مي‌توان فقط if را بدون داشتن else استفاده كرد. همانطور كه مي‌دانيد، از else زماني استفاده مي‌كنيم كه بخواهيم در صورت نادرست بودن شروط ، دستورات مشخصي اجرا شوند(به جلسه‌ي 31 مراجعه شود)



ساختار while():

عملكرد اين ساختار به اين صورت است كه ما شرط يا شروطي را براي آن تعريف مي‌كنيم و تا زمانيكه اين شرط يا شروط برقرار باشند، دستوراتي كه تعيين مي‌كنيم دائماً اجرا شوند و مكرراً تا زمانيكه شروط برقرار هستند اين دستورات تكرار مي‌شوند.

اين ساختار به صورت زير نوشته مي‌شود.

while( شرط يا شروط )

{

دستور1 ;

دستور2 ;

دستور3 ;

}

دستورات 1 تا 3 و كلاً هر دستوري كه در قسمت مشخص شده نوشته شده باشد، مكرراً تازمانيكه شروط داخل پرانتز برقرار باشند اجرا مي‌شوند.

نكات مهم در مورد اين ساختار:

تمام نكاتي كه در مورد ساختار else-if در جلسه‌ي گذشته مطرح كرديم در مورد سختار while هم صادق هستند.

همانطور كه قبلاً هم گفته شد، زبان C يك زبان "Case Sensitive" است، يعني در اين زبان بين حروف بزرگ و كوچك تفاوت است. while، if، else همگي با حروف كوچك نوشته مي‌شوند و اگر با حروف بزرگ نوشته شوند كار نمي‌كنند.

همانطور كه قبلاً گفته شد، دستور while(1) يك حلقه‌ي بي نهايت است و دستورات داخل آن تا زمانيكه ميكروكنترلر روشن باشد مكرراً اجرا خواهند شد.

در ادامه‌ي اين جلسه قصد داريم يكي از مهمترين و پركاربردترين قابليت‌هاي ميكروكنترلر‌ ATmega16 به نام ADC يا همان A to D را معرفي كنيم.


ADC چيست؟

ADC مخفف "Analog-Digital Converter" و به معناي مبدل آنالوگ به ديجيتال است.

اگر بخواهيم اين قابليت را به صورت ساده توصيف كنيم، يك ولت متر ديجيتال است كه بر روي پايه‌هاي ميكروكنترلر نصب شده است و به وسيله‌ي آن مي‌توان ولتاژ پايه‌هاي ورودي را با دقت مناسبي اندازه‌گيري كرد. همانطور كه مي‌دانيد ما تا به حال در هيچ‌ آي سي نمي‌توانستيم شدت ولتاژ ورودي را به دقت اندازه گيري كنيم و فقط مي‌توانستيم بدانيم آيا ولتاژ ورودي بالاي 2.5 ولت است يا زير 2.5 ولت، و ورودي‌هايمان را به صورت 0 و 1 برسي مي‌كرديم.(آي سي ها ورودي‌هاي خود را منطقي مي‌كنند)

اما به كمك اين قابليتِ ميكروكنترلر‌هايِ خانواده‌ي AVR، ما مي‌توانيم با دقت مناسبي ولتاژ ورودي خود را بررسي كنيم.

يكي از كاربرد‌هاي مهم ADC مي‌تواند در ربات‌هاي امدادگر دانش‌اموزي براي تشخيص رنگ باشد. همانطور كه مي‌دانيد هر رنگ، ميزان مشخصي از نور را بازتاب مي‌دهد و بقيه‌ را جذب مي‌كند، ما با اندازه‌گيري مقدار نور بازتاب شده، ميتوانيم رنگ را تشخيص دهيم. در اينجا ما براي اندازه‌گيري ميزان شدت نور بازتاب شده، بايد از ADC ميكروكنترلر استفاده ‌كنيم تا بتوانيم ولتاژ خروجي سنسور نوري خود را به دقت اندازه‌گيري كنيم.

ADC يكي از مهمترين و پر كاربردترين قابليت‌هاي ميكروكنترلر‌هاي خانواده‌ي AVR است كه به تدريج با كاربرد‌هاي فراوان آن در بخش‌هاي مختلف آشنا خواهيد شد.

در اين جلسه ما نحوه‌ي انجام تنظيمات اوليه‌ي CodeWizard براي راه‌اندازي ADC را آموزش مي‌دهيم.

ابتدا CodeWizard را باز كرده و در آن، لبه‌ي ADC را انتخاب مي‌كنيم، و در لبه‌ي ADC، گزينه‌ي "ADC Enabled" را تيك مي‌زنيم و سپس مانند شكل زير تنظيمات را انجام مي‌دهيد :



همانطور كه مي‌بينيد، دومين قسمتي كه تيك زده شده "Use 8 bits" است.در ادامه در مورد دليل اين كار توضيح داده شده است.

همانطور كه گفته شد، وظيفه‌ي ADC، اندازه گيري ولتاژي است كه بر روي پايه‌ي ورودي قرار گرفته است. اما ADC عددي را كه مولتي متر به ما نشان مي‌دهد گزارش نمي‌كند، بلكه متناسب با ولتاژ پايه‌ي ورودي، عددي را در بازه‌ي 0 تا 255 به ما گزارش مي‌كند. يعني عدد 0 را به ولتاژ 0ولت اختصاص مي‌دهد، و 255 را به 5 ولت؛ و هر ولتاژي بين 0 تا 5 ولت را، متناسباً، با عددي بين 0 تا 255 گزارش مي‌كند. در حقيقت براي سهولت در محاسبه، مي توانيد فرض كنيد اندازه‌ي ولتاژ ورودي بر حسب ولت، ضربدر 51، برابرست با عددي كه ADC براي آن ولتاژ مشخص، به ما گزارش مي‌كند.

به عنوان مثالي ديگر، اگر خروجي مدار يك سنسور نوري را به پايه‌ي ورودي ADC متصل كرده باشيد، و خروجي مدار سنسور 2 ولت باشد،‌ADC عدد 102 را به ما گزارش مي‌كند.

اگر تيكِ گزينه‌ي "Use 8 bits" را برداريم، بازه‌ي ما به 0 تا 1024، گشترش پيدا خواهد كرد و در حقيقت دقت اندازه‌گيري ما 4 برابر خواهد شد. يعني 5 ولت ما، به جاي 255، با عدد 1024 گزارش خواهد شد، و ولتاژهاي بين 0 و 5 ولت نيز متناسباً با عددي بين 0 تا 1024 گزارش خواهند شد. اما در كار‌هاي ما نيازي به اين دقت بالا نيست و معمولاً "Use 8 bits" را تيك مي‌زنيم تا بازه‌ي ما بين 0 تا 255 باشد.

درباره‌ي تنظيمات ADC مطالب زيادي وجود دارد كه ما از مطرح كردن تمام آن‌ها در اين بخش مي‌پرهيزيم، دوستاني كه علاقه‌مند هستند، مي‌توانند از طريق كتاب‌هاي مرجع و ديگر مراجع موجود، مطلب را پي بگيرند، اما در همين حدي كه مطالب در اينجا مطرح مي‌شوند، براي كار ما تقريباً كافيست و الزامي در مطالعه‌ي منابع جانبي نيست.

در جلسه‌ي آينده در مورد نحوه‌ي دريافت اين عددي كه قرار است ADC به ما گزارش دهد توضيح خواهيم داد.

تا جلسه‌ي آينده خدا نگه دار

دوست شما، فراز اميرغياثوند


جلسه‌ي سي‌ و يكم

صفحه‌ي اصلي رباتيك

جلسه‌ي سي و سوم


1387/12/17 لينک مستقيم

فرستنده :
HyperLink HyperLink 1388/1/17
مـتـن : در ابتدا دوستان عزیز برای اینکه بتونن مطلب رو با ما دنبال کنند، لازمه که این نرم افزار تهیه کرده و روی کامپیوتر شخصی خود نصب کنند. در زیر نسخه ی2.03.4 Crack شده‌ی این نرم افزار را، برای دانلود دوستان قرار دادیم.(حجم 8.15مگابایت)
براي دانلود نرم افزار اينجا كليك كنيد
اقا لينك خرابه لطفا سريع درستش كنيد من به اين برنامه نياز دارم ممنون
پاسـخ : سلام. مشكل رفع شد، ممنون از تذكرتون

فرستنده :
الهام فاضل HyperLink HyperLink 1387/12/26
مـتـن : اول سلام و خسته نباشید
واقعا می خواستم تشکر کنم که این سایت بهم معرفی کردی من تمام مطالب خوندم و کل آزمایشارو انجام دادم و همچنان مشتاق :)
یه سوالی داشتم برای بکار بردن یه سری از قطعات در مدار مدارهایی طراحی شده بود که من 2 تاشون نتونستم تحلیل کنم که چرا اینجوری طراحی شده آیا برای تحلیلشون کتاب مشخصی هست؟
پاسـخ : سلام
خواهش می کنم،خیلی عالیه، امیدوارم مطالب مفیده بوده باشند. دقیقاً کدوم مدارها منظورتونه؟ شاید اشتباهی از طرف من باشه.
موفق باشید

فرستنده :
مجتبی ابدالی HyperLink HyperLink 1387/12/26
مـتـن : با عرض سلام وخسته نباسید فراوان خدمت شما استاد عزیزم.
مطالب عالی؛همه چیز خوبه .very good; tanks alot
خسته نباشید
پاسـخ : سلام مجتبی جان
مرسی عزیزم، موفق باشی

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

 

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