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

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


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

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

جلسه‌ي بيست و پنجم


به نام خدا

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

شروع سال جديد تحصيلي را به همه ي دوستان خوبم تبريک عرض مي کنم و براي همه ي دوستان سال خوب تحصيلي سرشار از موفقيتي رو آرزو مي کنم.

در ضمن دوستاني هم که امسال وارد پيش دانشگاهي شدند فراموش نکنند که ديگه نبايد تا کنکورشون اين طرفا تشريف بيارن!!!!!!!!

خوب، بر مي گرديم سر مبحث ميکروکنترلرها....

قرار بود اين جلسه برنامه ي يک مسيرياب بسيار ساده ي 2 سنسوره را با هم بنويسيم. اما ابتدا بايد چندتا نکته ي ديگه هم ياد بگيريم.

همونطور که گفته شد AT Mega16 داراي پايه هاي متعددي براي تبادل اطلاعات با مدار است. هر 8پايه ي مجاور که اين وظيفه را دارند يک پورت ناميده مي شوند (به شکل نگاه کنيد) . AT Mega16 داراي 4 پورت با نام هاي A ، B ، C و D مي باشد. پايه هاي هر پورت به اين شکل نمايش داده مي شود:

شماره ي پايه+"."+نام پورت

مثلاً اولين پايه ي پورت D به اين صورت نشان داده مي شود: D.0
و پايه ي سوم پورت C به صورت : C.2
حال به ترتيب پايه هاي ATMEGA16L دقت کنيد


دقت کنيد که شماره گذاري پايه ها در پورت ها از 0 شروع مي شود.
همچنين گفته شد، پايه هاي ميکروکنترلر مي توانند به صورت ورودي يا خروجي تنظيم شوند، مثلاً در يک ربات مسيرياب ميتوان چند پايه را تنظيم کرد که ورودي باشند و اطلاعات سنسورها را دريافت کنند، يا انها را تنظيم کرد تا خروجي باشند و موتورها را هدايت کنند. اين تنظيم به صورت نرم افزاري و با تنظيم رجيستر DDRx انجام مي گيرد. اما ابتدا بايد رجيستر را تعريف کنيم.

رجيستر چيست؟
رجيسترها توعي حافظه هستند که به طور مستقيم با بخشش پردازشگر ميکروکنترلر در ارتباط هستند. هر رجيستر يک بايت يا 8 بيت است. يکي از ويژگي هاي رجيسترها اين است که به خاطر ارتباط نزديک با پردازنده، سرعت بسيار بالاتري نسبت به ساير خانه هاي حافظه دارند.

رجيستر DDRx:
رجيستر DDRx (Data Direction) براي تنظيم ورودي يا خروجي بودن پايه هاي ميکروکنترلر است. براي تنظيم پايه ها در برنامه، بايد به جاي x بايد آدرس پايه ي مورد نظر(مثل B.3) را بنويسيم. اگر بخواهيم آن پايه خروجي باشد بايد بيت رجيستر مربوط به آن را 1 کنيم، و اگر بخواهيم آن پايه ورودي باشد، بايد بيت رجيستر مربوط به آن را 0 کنيم. به عنوان مثال اگر بخواهيم پايه17 يعني D.3 خروجي باشد بايد اين جمله را بنويسيم: DDRD.3=1;
و اگر بخواهيم اين پايه ورودي باشد: DDRD.3=0;

رجيستر PORTx:
در صورتي که پايه ها به صورت خروجي تنظيم شده باشند، هر چه در اين رجيستر نوشته شود سطح منطقي پايه ي متناظر را تعيين مي کند، مثلاً اگر بنويسيم PORTB.3=1 پايه B.3 يعني پايه ي 4، 1 منطقي خواهد شد(يعني ولتاژ 5 ولت بر روي اين پايه قرار مي گيرد). و اگر بنويسيم PORTC.1=0، پايه ي C.1 يعني پايه ي 23، 0 منطقي خواهد شد (يعني ولتاژ اين پايه 0 مي شود.).

رجيستر PINx:
در صورتي که پايه ها به صورت ورودي تنظيم شده باشند، محتويات اين رجيستر حاوي اطلاعات دريافتي از پايه هاي ميکروکنترلر است. مثلاً اگر PINB.1=0 باشد، يعني بر روي پايه شماره ي 2 يا همان B.1 ؛ 0 منطقي اعمال شده است(مثلاً اگر به سنسوري وصل شده است، خروجي سنسور 0 منطقي بوده است). در حقيقت اين رجيستر براي خواندن وضعيت پايه هاي ورودي مورد استفاده قرار مي گيرد.

نکته ي بسيار مهم: دقت کنيد که در زبان C، بايد در انتهاي هر خط از برنامه يک علامت ";" گذاشته شود. به اين علامت در زبان انگليسي سِمي کالِن مي گويند.

نکته ي مهم:
در حقيقت براي هر پورت 3 رجيستر(حافظه 1 بايتي) در داخل ميکروکنترلر وجود دارد که به مجموع اين 12 رجيستر، رجيسترهاي I/O (Input/Output) مي گويند.

بسيار خوب، حالا نوبت نوشتن برنامه ي 1 ربات مسيرياب ساده است که فقط 2 تا سنسور داره!!!

نرم افزاري کمکي به نام Code Wizard در داخل همان Codevision وجود دارد که کار ما را براي انجام تنظيمات اوليه مانند تنظيم ورودي يا خروجي بودن پايه ها آسان مي کند. يعني ديگه نيازي نيست براي هر پايه تک تک با رجيستري DDR سرو کله بزنيم، و به راحتي با چند تا تيک ساده همه ي پايه ها رو تنظيم مي کنيم. البته Code wizard همونطور که از اسمش هم معلومه بسياري امکانات جادويي ديگري هم داره که در جلسات آينده به تدريج با آن ها آشنا خواهيم شد. Code Wizard در حقيقت براي ساده تر کردن و سريع تر کردن برنامه نويسي در فضاي Codevision طراحي شده است و کارش اين است که قسمت هاي زيادي از برنامه را به صورت خود کار و طبق خواسته هاي ما براي ما مي نويسد.

پس با اين حساب نيازي نيست تنظيمات رجيستري DDRx رو ما در برنامه خودمون انجام بديم و اين کار رو به Code wizard واگذار مي کنيم. با Code wizard در جلسه ي آينده آشنا خواهيم شد.

پس در اين جلسه فرض مي کنيم تنظيمات اوليه مثل رجيستري DDRx و ... انجام شده است. پايه هاي B.0 و B.1 را به صورت ورودي(براي دريافت اطلاعات سنسورها)، و پايه هاي B.2 ،B.3 ، B.4 و B.5را به صورت خروجي (براي کنترل حرکت موتورها) تنظيم کرده مي کنيم.

B2 و B.3 براي کنترل موتور سمت راست و B.0 براي سنسور سمت راست!

B.4 و B.5 براي کنترل موتور سمت چپ و B.1 براي سنسور سمت چپ!

حال مانند ربات قبلي، يک پايه از هر موتور را 0 مي کنيم؛ و روشن و خاموش کردن هر موتور را، با اعمال 0 يا 1 منطقي بر روي پايه ي ديگر کنترل مي کنيم.

پايه ي ديگر را هم به صورت هماهنگ با سنسور متناظر آن سمت 0 و 1 مي کنيم، يعني اگر خروجي سنسور 0 بود، پايه ي موتور را 0 مي کنيم و اگر 1 بود ، پايه را 1 کرده و موتور را فعال مي کنيم.(به شرطي که از مدار گيرنده ي شماره 2 استفاده شود(جلسه ي 15))

در زبان C علامت "=" يک عملگر است که عملوند سمت راست خود را خوانده و در عملوند سمت چپ خود مي ريزد. مثلاً وقتي مي نويسيم:

PORTB.3=PINB.0;

ابتدا مقداري B.0 خوانده مي شود و سپس بر روي B.3 ريخته مي شود. يعتي مثلاً اگر روي B.0 ، 1 منطقي اعمال شده باشد، پايه ي B.3 نيز 1 منطقي مي شود.

حال با توضيحات داده شده به برنامه ي ربات مسير ياب ساده دقت کنيد:

PORTB.2=0;

PORTB.4=0;

PORTB.3=PINB.0;

PORTB.5=PINB.1;

همانطور که مي بينيد اين برنامه بسيار ساده و کوتاه است.

در جلسات آينده سعي مي کنيم شما رو با Code wizard بيشتر آشنا کنيم. منتظر سوالات و نظرات دوستاي خوبم هستم.

پيروز باشيد.

دوست شما، فراز


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

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

جلسه‌ي بيست و پنجم


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

فرستنده :
علیرضا HyperLink HyperLink 1387/9/23
مـتـن : لطفا یه کم سریعتر اگه امکانش هست
من که دیگه داشتم ناامید میشدم.
اگه میشه یه کتاب فارسی خوب که در مورد avr توضیح داده باشه به من معرفی کنید
ممنون
پاسـخ : سلام. چشم، يك كتاب مناسب براي آموزش AVR به زودي معرفي خواهم كرد.
موفق باشيد

فرستنده :
masoud HyperLink HyperLink 1387/8/12
مـتـن : سلام خیلی خوب بود فقط اگر ممکنه به کارتون سرعت بدین
پاسـخ : سلام. ممنونم، انشاالله هفته اي يك جلسه مناسب خواهد بود.

فرستنده :
مهمد HyperLink HyperLink 1387/8/12
مـتـن : لطفاً مزيت هاي ال298 را نسبت به ULN بيان كنيد. متشكرم
پاسـخ : سلام
يكي از مهمترين مزيت هاي l298 جريان دهي بالاي اون هست كه براي راه اندازي موتورهاي پر قدرت بسيار لازم است و اگر بخواهيم از L293 يا ULN2003 استفاده كنيم با مشكل روبرو خوهيم شد.
موفق باشيد

فرستنده :
fatima HyperLink HyperLink 1387/8/12
مـتـن : salam mage gharar nabood dar morede robate atashneshan darsa pish beran pas chera hala shode masiryab.aya masiryab be onvane ye tajrobe lazeme
پاسـخ : سلام
بله، هدف ما همون آتش نشان هست، ولي خوب نياز به كمي مقدمات هم براي اين كار داريم، مسيرياب رو فقط به عنوان يك پروژه كوچيك ضمن كار مطرح كرديم و پروژه ي پاياني همان آتش نشان پيشرفته خواهد بود.
موفق باشيد

فرستنده :
پدرام سرحدي دانشجوي رشته مهندسي برق(الكترونيك) HyperLink HyperLink 1387/8/12
مـتـن : سلام من تمامي درس هاي شما را دنبال مي كنم حالا چند انتقاد و پيشنهاد البته قبل از آن از زحمات شما متشكرم
1-آيا براي آپديت كردن و شروع جلسات برنامه اي وجود دارد يا هر وقت شما وقت كرديد درس جديد را مي دهيد در هر صورت اگر برنامه اي است لطفا اعلام كنيد و اگر نه بايد بگويم خيلي دير به دير درس مي دهيد.

2-ببينيد اگر شما به خاطر امتحانات ترم مدرسه يا امتحانات خرداد يا چيزهايي ديگر كه باعث مي شود دانش آموزان مدرسه اي نتوانند به آموزش شما مرا جعه كنند ما دانشجو ها چه گناهي كرده ايم يا آن شخصي كه كار مدرسه اي و دانشگاهي ندارد چه گناهي دارد كه ادامه دروس را نتواند به موقع ببيند(هر چند از شما خيلي ممنونم كه همين مطالب را هم آموزش مي دهيد اگر همين را هم آموزش نمي داديد ما چكار مي كرديم؟(خوب معلوم است مي رفتيم سراغ آقاي فراز ديگري!!!شوخي كردم...)) در ضمن مگر دروس قبلي در سايت به صورت آرشيو وجود ندارد و دانش آموزان يا كساني كه به موقع نتوانستند كه آموزش را پيگيري كنند مي توانند بعدا مراجعه كنند پس بهتر است براي نظم و ترتيب دادن بهتر به برنامه و بالا رفتن سطح كيفي برنامه يكساني را دنبال كنيد حتي اگر هر سال فقط يك درس هم مي دهيد باز از روي برنامه پيش برويد و در بازه هاي زماني يكساني درس جديد بدهيد (چون به اين مبحث روبات خيلي علاقمند هستم اين پيشنهاد ها را مي دهم)

3-همين روند آموزش خوب است (منظوم نحوه بيان مطلب ) و نقطه مبهمي باقي نمي ماند همين را ادامه دهيد دستتان درد نكند و خسته نباشيد

4-چون بعضي از مطالب جديد و در عين حال مشكل است براي كساني كه علم تازه اي را عملا تجربه مي كنند(كامپيوتر مكانيك الكترونيك) به خصوص كامپيوتر قسمت برنامه نويسي كه تا حدود زيادي خسته كننده است بهتر است در ميان دروس(در ميان مطالب و نوشته ها)چند عكس از انواع ربات ها يا حداقل از يك ربات يا عكسي از آن موضوع به نمايش بگذاريد مثلا در قسمت برنامه نويسي مي توانيد عكس جند نفر كه مشغول كار برنامه نويسي با كامپيوتر هستند و رباتشان در كنار كامپيوتر است استفاده كرد يا چنين مثال هايي البته من نمي دانم شما چقدر فضا براي آپلود كردن عكس يا چيزهاي ديگر داريد ولي سعي كنيد اين كار را انجام دهيد(هر چند در تمامي دروس عكس هاي زيادي وجود دارد و لي بيشتر باشد بهتر است)

قبل از مورد 5 ببخشيد نظر من اينقدر طولاني شد
5-همان طور كه گفتم با توجه به دير آپديت كردن شما!!! و سخت بودن بعضي از مباحث بخصوص برنامه نويسي و اين كه افراد با توجه به اين دو مورد ديگر به آن صورت به اين قسمت از سايت سر نزنند شما بهتر است چند كليپ كوتاه چند دقيقه اي از مسابقات روبات را در سايت قرار دهيد كه هم تنوعي در آموزش باشد و هم اين كه دانش آموزان يا كساني كه اين مجموعه را دنبال مي كنند تشويق و ترغيب شوند كه اين مجموعه را دنبال كنند و ذوق بيشتري پيدا كنند و اين سايت را به ديگران پيشنهاد كنند و در نهايت موجب بالا رفتن آمار بازديد آموزش شما شود شما مي توانيد از سايت شبكه 7 آموزش يا شبكه 4 كه علمي است كمك بگيريد يا از سايت هاي گوگل يا ديگر موتور هاي جستجو گر استفاده كنيد و كليپ هاي كوتاه مسابقات روبات را دانلود كنيد
در پايان از تمامي زحمات شما(آقاي فراز) و ديگر همكارانتان تشكر مي كنم اجر شما با خدا
پاسـخ : سلام دوست عزیز
اول ممنونم از این که وقت گذاشتید و نظراتتو در مورد کار مطرح کردی.
برای سال تحصیلی جدید برنامه ی ما اینه که هر هفته حداقل یک جلسه مطلب جدید بر روی سایت قرار داده بشه. ولی خوب هنوز کمی مشکل در روند اجرای این برنامه هست که امیدوارم به زودی این مشکلات هم برطرف بشه
در مورد پیشنهاد دومتون باید عرض کنم که این سایت متعلق به سازمان آموزش پرورش است و طبیعتاً ما موظفیم برنامه هامونو یه کم با برنامه های آموزش پرورش هماهنگ کنیم، به هر حال از این تذکرتونم ممنونم و سعی می کنم و تا جای ممکن نظرتون را در برنامه ها لحاظ کنم.
3- خوشحالم که در این زمینه مشکلی وجود نداره. ممنونم دوست عزیز!
4- من سعی می کنم تا جای ممکن از عکس استفاده کنم، ولی خوب چاره ای نیست، نمی تونم حجم صفحات را زیاد بالا ببرم چون ممکنه دوستانی که اینترنت سرعت پایین دارند، در دریافت مطالب دچار مشکل شوند.
5- چشم، سعی می کنم در اولین فرصت چند فیلم کوتاه در مورد رباتیک روی سایت قرار بدم.
من هم مجدداً از اینکه وقتتون رو به این کار اختصاص دادید تشکر می کنم.
موفق و پیروز باشی دوست عزیز

فرستنده :
پدرام سرحدي دانشجوي رشته مهندسي برق(الكترونيك) HyperLink HyperLink 1387/7/28
مـتـن : يك سوال ديگري داشتم و مي خواستم با شما مشورت كنم و آن اينكه من اگر بخواهم به طور تخصصي ساخت روبات يا هر چيز قابل برنامه ريزي مانند ميكروكنترل ها شروع كنم بهتر است چه زباني را شروع كنم من قبل از آشنايي با سايت و آموزش شما از ديگران پرسيده ام گفته اند كه زبان Cهم زباني مناسب است و هم تقريبا ميشود گفت آسان ولي اگر بخواهم به صورت جدي و كاملا تخصصي وهم اين كه بر تمام موارد از قبيل روبات يا ميكروكنترل يا هر چيزي كه قابليت برنامه نويسي داشته باشد تسلط كامل داشته باشم و بتوانم هر چيزي را برنامه نويسي كنم بهتر است زبانC++ را بخوانم هر چند زباني بسيار مشكل است و از زبان C بسيار سخت تر و پر بارتر است و كسي كه بر اين زبان يعنيC++ تسلط كامل داشته باشد هر چيزي را مي تواند برنامه نويسي كند نظر شما چيست؟ البته كتاب هم براي اين كار به من معرفي كرده اند
برنامه نویسی به زبان++ C
پدیدآورنده: عین الله جعفرنژادقمی
ناشر: علوم رایانه
و مقادير زيادي سايت كه اين برنامه را آموزش مي دهد كه اگر مايل بوديد برايتان مي فرستم حالا نظر شما به عنوان كسي كه در اين كار خبره هستيد چيست؟ آيا زبان C++ را شروع كنم؟
پاسـخ : بله ، پیشنهادی که بهتون کردند خیلی مناسبه، C++ زبان کاملیه و برای شروع خیلی مناسبه. البته اگر بتونید برید سراغ C# خیلی با ارزشتره و زبان خیلی کاملتر و به روزتریه، کاربرد اقتصادی بیشتری هم نسبت به C++داره.
ولی به هر حال کتاب آقای قمی هم در C++ خیلی کتاب خوب و کاملیه.
موفق باشید دوست عزیز

فرستنده :
ناشناس HyperLink HyperLink 1387/7/28
مـتـن : باسلام
باتشکر از مطالب خوبتان .می خواستم بدانم ایادر طول امسال مسابقاتی در رابطه با رباتیک در سطح کشور بر گزار می شود وما با کمک شما می توانیم قبل از شروع این مسابقات رباتی در خور این مسابقات بسازیم
با تشکر
پاسـخ : سلام دوست عزیز
بله، هر سال مسابقات متعددی در کشور برگزار میشه، ولی خوب این بر می گرده به خودتون، ربات ساختن کار سخت(البته جذاب)یه و نیاز به صرف وقت و انرژی زیادی داره، اگر با اراده و پشتکار کار رو پی بگیرید حتماً موفق خواهید شد. البته بازم تاکید می کنم، رباتیک یک کار انفرادی نیست و شما بهتره که این کار رو به صورت تیمی دنبال کنید.
موفق و پیروز باشید

فرستنده :
هادي HyperLink HyperLink 1387/7/28
مـتـن : كارت عالي دمت گرم و قدحت پر مي باد.
درباره پردازش تصوير با مطلب و اتصال دوربين به نرم افزار مطلب كمكم كنيد.
درباره كنترل ربات از راه دور "بي سيم" هم كمكم كنيد ممنون ميشم.
عذت زياد سايتون كم نشه.
پاسـخ : سلام هادی جان
ممنونم از لطفت دوست خوبم...
راستش پردازش تصویر مبحث مفصلیه، زیاد ساده نیست. ولی مطمئنم اگه یه کم تو اینترنت بگردی، یا یه کتاب در این زمینه تهیه کنی بتونه خیلی کمکت کنه. البته شاید اینجا هم یک بخش مربوط به پردازش تصویر راه بندازیم. البته هنوز قطعی نیستا.
موفق و پیروز باشی هادی جان

فرستنده :
مهمد HyperLink HyperLink 1387/7/28
مـتـن : فكر ميكنم در جلسه هفدهم پايه هاي 9 و 4 برعكس گفته شده.
پاسـخ : سلام. بله دوست عزیزم، ممنون از یادآوریت
موفق باشی

فرستنده :
reza HyperLink HyperLink 1387/7/28
مـتـن : با سلام. مي خواستم مثه قبلا آخر هر درس تاريخ درس بعدي رو هم اعلام کنين. البته بهتره بجاي اينکه تاريخ دقيقي معين کنين، يه بازه دو روزه رو الام کنين. مثلا درس بعدي رو دوشنبه تا چهارشنبه هفته آينده رو سايت مي ذاريم. با تشکر رضا درودي
پاسـخ : سلام رضا جان
چشم،سعی می کنم اگه تونستم تاریخ جلسه ی بعد رو اعلام کنم.
موفق باشی دوست عزیزم

فرستنده :
maysam HyperLink HyperLink 1387/7/28
مـتـن : با سلام

از مطالب خوبتان متشکرم تا چند جلسه ی دیگر می توانیم ربات بسازیم
با تشکر
پاسـخ : سلام میثم جان
خوب ما که تا حالا یک ربات ساختیم، ولی برای ساخت ربات با AVR باید حداقل 5 جلسه صبر کنید.
پیروز باشی

فرستنده :
ناشناس HyperLink HyperLink 1387/7/28
مـتـن : به نظر من طرح بسیار عالیییییییییییییییییییییییییییییییییییییییییییییییییییییه.
پاسـخ : ممنونم دوست عزیزم

فرستنده :
نیلوفر 14 ساله HyperLink HyperLink 1387/7/28
مـتـن : خیلی خوب توضیح دادید واقعا ممنونم
کاش توی سمپاد اموزش ساخت روبات داشتیم
پاسـخ : سلام، خواهش می کنم، اگر شما بتونید از مطالبی که اینجا هست خوب استفاده کنید، می تونید بدون معلم هم خودتون هم ربات بسازید.
پیروز باشید

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

 

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