تبليغاتX
E.l.e.B.o.y.s - آموزش ساخت ربات (برنامه نویسی 2)
منوی کاربری

Make Your HomePage    Send Email To Admin    Add to Favorites

پيغام مدير : با سلام امیدوارم از مطالب وبلاگ راضی شده باشید

با تشکر   

لينك دوستان
_.:: P30 پدرام ::.._

براي تبادل لينک ابتدا لينک مارو بانام:E.l.e.B.o.y.s - آموزش ساخت ربات (برنامه نویسی 2) در وبلاگ ياسايتتان قراردهيد ،

سپس از طریق فرم نظرات به ما خبر دهيد تاما هم اين کار رو براي شما بکنيم.

چت بامديـــــر
جستجوگر

Google
  
            
     در كل اينترنت
     در اين سايت

آرشيو
طراح قالب
آموزش ساخت ربات (برنامه نویسی 2)

سلام. امروز (البته الان شبه ) می خوام ادامه کدی رو که تو پست قبل داشتیم رو تحلیل کنم:

Do
  'some code
Loop

حتی اگر مقدار کمی هم برنامه نویسی (حتی نه به زبان بیسیک) بلد باشید، در این قسمت هیچ احتیاجی به توضیح نخواهید داشت. اما برای دوستانی که آشنایی کافی ندارن حتما باید بگم که هر کدی که بین دو کلمه Do و  Loop قرار میگیره به صورت حلقه از بالا به پایین به صورت مکرر تکرار میشه. البته در استفاده از این دستور میشه شرایطی تعیین کرد که درصورت لزوم از حلقه بی پایان خارج شد ولی ما در اینجا به این حلقه بی پایان احتیاج داریم و دلیلش رو هم بعد از توضیح کد بین اون خواهید فهمید.
راستی یادتونه که در بیسیک هر متنی که بعد از علامت " ' " قرار میگیره به عنوان توضیحات محصوب میشه. شما میتونید در قسمتهای مختلف کدتون از توضیحات استفاده کنید تا اگر کدتون طولانی شد یا اون رو به بقیه دادید در فهمش دچار مشکل نشید.

Rotate A , Left

شاید ندونید که در بیسیک (وبعضی زبانهای دیگه) میشه از توابع و رویه ها بدون حضور پرانتز استفاده کرد! در این کد هم در واقع Rotate یک دستور یا رویه هستش که در اینجا ۲ مقدار ورودی A و Left رو به اون دادیم که بعد از توضیح کار این دستور دلیل استفاده ازا ین ۲ مقدار رو به عنوان ورودی خواهم گفت. از تابع برای چرخاندن تمام بیتهای یک متغیر به سمت راست یا چپ استفاده میشه...  خوب یادتون هست که A رو به عنوان یک متغیر از نوع بایت معرفی کردیم و اون رو برابر با مقدار دودویی B۱۰۰۰۱۰۰۰ (یا معادل دهدهی ۱۳۶) قرار دادیم. پارامتر اول این دستور نام متغیر برای چرخاندن بیتهاش هست و پارامتر دوم یک مقدار LEFT یا RIGHT هستش به معنی چرخش بیتها به سمت چپ یا راست، هستش. در اینجا دستور Rotate باعث چرخش بیتهای A به سمت چپ و تبدیل مقدار اون به B0010001 (معادل دهدهی ۶۸) میشه. اگر توجه کنید می بینید که با استفاده از این دستور هیچ بیتی از بین نمیره! بلکه همه بیتها به چپ یا راست می چرخن. دلیل این کار رو در توضیح کد پایین ملاحضه کنید.

Portb = A

یادتون هست که پورت b رو به عنوان خروجی معرفی کردیم در این مرحله مقدار خروجی اون رو مشخص می کنیم. دونستیم که هر پورت دارای ۸ پین هست که میشه با اونها مثل ۸ بیت یا در کل با یک پورت مثل یک بایت رفتار کرد. در اینجا هم پورت بی رو مساوی متغیر A که اون هم از نوع بایت هست قرار می دیم. چون متغیر A حاوی مقدار B00010001 بود بنابراین پینهای شماره ۱،2،۳،۵،۶ و ۷ پورت، صفر و پینهای شماره ۰ و ۴ ، یک خواهند شد. 
در دوخط بعد نیز اتفاقات بالا عینا برای متغیر B و پورت سی اتفاق میافتد. اما در خط بعد داریم:

Waitms 15

Waitms هم یک دستور یا رویه می باشد که به اندازه مقدار ورودی اش برحسب میلی ثانیه در اجرای برنامه وقفه ایجاد خواهد کرد. مقدار ۱۵ برای تاخیر ۱۵ میلی ثانیه ای در این کد است.

در خطهای بعد هم Loop که نماد پایان حلقه و End که قبلا گفتیم نماد پایان برنامه می باشد را داریم اما ببینیم کدهای داخل حلقه چه عملی را انجام می دهند و علت استفاده از انها چیست؟

طبق جدولهای پست شماره 19 دیدم که چه بیتهایی را باید پشت سر هم به سیمهای موتور القا کنیم با کمی تامل در کد بالا هم میبینیم که با چرخاندن بیتهای دو متغیر A و B در واقع مدل یک بیتی راه اندازی موتورهای پله ای را شبیه سازی کرده ایم. شما می توانید با وصل کردن ۴ پین اول پورت b و c به آیسی درایور همانند شکل پست شماره 20 باعث چرخش موتور متصل به پورت b در خلاف جهت ساعت و موتور متصل به پورت c در جهت ساعتگرد شوید.
همچنین با کم کردن مقدار تاخیر در دستور Waitms می توانید باعث افزایش سرعت چرخش شوید. البته توجه کنید این تاخیر را تا حدی معینی می توان کم کرد (۳ یا ۴ میلی ثانیه) و کم کردن بیش از حد آن به دلیل گشتاور مشخص موتور نتنها باعث افزایش سرعت نمی شود بلکه مانع از استارت موتور و در نتیجه چرخش آن خواهد شد.

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

موفق باشید

[+] نوشته شده توسط نیما در 0:40 | |

مطالب پيشين