رفتن به مطلب
انجمن تیم امنیتی گارد ایران

پست های پیشنهاد شده

بررسی پیچ های 90 و 120 درجه و انحناها :


کد حاصل از تمامی این پیچ ها یکی است و کد تولید شده به این صورت میباشد :&B0000010که بیان کننده ی یک پیچ در سمت راست است .که ممکن است به صورت شکل زیر باشد :


%D8%B4%D8%B4%D8%B4%D8%B4%D8%B4%D8%B4.png


 


 


1.png


هنگامیکه کد مربوط به پیچ های سمت راست اتفاق بیفتد ابتدا برنامه به زیر تابع rast_stopمیرود .


2.png


زیر برنامه ی Rast_stop:


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


علت معکوس کردن لحظه ای موتور ایجاد یک حالت ترمز قوی میباشد .چنانچه بخواهیم به حالت ترمز L298پسنده کنیم نتیجه کار جالب نخواهد بود !زیرا برخلاف توضیحات موجود در دیتاشیت این ICحالت ترمز آن خیلی سریع نیست و این امر باعث ایجاد مقداری انحراف در موقع دور زدن ربات با یک موتور خاموش میشود .


بعد از صفر کردن Portb.0و Portb.1برنامه به قسمت بررسی پیچ سمت راست بر میگردد ،زیرا تابع rast_stopرا از انجا فراخوانی کرده بودیم .


با بررسی قسمت پیچ سمت راست خواهیم دید که برنامه بعد از فراخوانی زیر برنامه rast_stopرا از آنجا فراخوانی کرده بودیم .


با بررسی قسمت پیچ سمت راست خواهیم دید که برنامه بعد از فراخوانی زیر برنامه rast_stopوارد یک حلقه ی While-Wendمیشود در این حلقه Portb.0تا زمانیکه PIND.3مجددا روی خط سیاه قرار گیرد صفر نگه داشته میشود .یعنی تا هنگامیکه ربات برروی مسیر مستقیم بعد از پیچ قرار بگیرد موتور سمت راست خاموش خواهد ماند .با عبور از پیچ و قرار گرفتن سنسور S3بر روی خط سیاه ،برنامه از حلقه ی While-Wendخارج میشود .در اینجا قبل از اینکه بخواهیم با یک کردن portb.0موتور سمت راست را روشن کنیم بمدت 20 میلی ثانیه موتور را در جهت معکوس میچرخانیم تا انحراف ناشی از دور زدن ربات را جبران میکنیم .(مقدار 20 میلی ثانیه بطور تجربی بدست آمده است ،برای سرعت های بیشتر زمان بیشتری لازم است )


پس از گذشت این 20 میلی ثانیه موتور سمت راست را روشن میکنیم که این کار با دستورات زیر انجام میدهیمportb.0 = 1,portb.1 = 0انجام میشود .


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


یه نمونه انحنا در سمت چپ مسیر و کد مربوط به آن در زیر اشاره شده است .


Untitlaaaed.png


3.png                                                  4.png


بررسی پیچ های 60 درجه:


بعد از پرداختن به پیچ های 90 درجه ،120 درجه و انحنا  میپردازیم


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


Untitled3.png


 


Untitled4.png


5.png                         6.png


همانطوریکه در کد های بالا مشاهده میکنید برای پیچ های 60 درجه دو کد باینری &B0001111و &B0000001در نظر گرفته شده اند که نحوه ی عملکرد آنها دقیقا مانند کد های مربوط به پیچ های 90 درجه و 120 درجه و انحنا ها میباشد .تنها تفاوت این کد ها با کد قبلی در شرط حلقه ی While-Wendمیباشد .در کد قبلی رسیدن سنسور S3به خط سیاه نشان دهنده ی عبور از پیچ بود اما در کد 60 درجه رسیدن سنسور S5به خط سیاه نشان دهنده ی عبور از پیچ است .این موارد در رابطه با پیچ های 60 درجه سمت چپ نیز صدق میکند .


به امید پیشرفت روزافزون تیم گارد ایران


**تشکر شما باعث دلگرمیه**


به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

معکوس شدن زمینه :


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


%D8%B6.png


%D8%B5.png


 


 


 


%D8%AB.png


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


تمامی برنامه های نوشته در زیر تابع Blackعینا مانند برنامه های نوشته شده در قسمت Whiteمیباشند .با این تفاوت که کدهای مورد بررسی در حلقه ی Select_Caseمعکوس (Not)شده اند .برای مثال در زمینه ی سفید و خط سیاه کد پیچ 90درجه ی سمت راست &B0000010میباشد امابرای زمینه ی سیاه و خط سفید این کد به شکل &B1111101در می آید .در واقع برای نوشتن هر کد در زمینه سیاه کافیست تا حالت زمینه ی سفید آنرا معکوس (Not)کنیم .بقیه ی موارد عینا مانند برنامه های نوشته شده در قسمت Whiteمیباشد.


در زیر برنامه ی Blackنیز دو حالت &B0001000و&B0000000برای تشخیص زمینه ی سفید در نظر گرفته شده است .یعنی با اتفاق افتادن این دو کد به زیر برنامه ی Whiteپرش میکند .


بررسی سایر حالات :


برای عبور از موانع و نیز حالتهای گوناگونی که ممکن است در اثر حرکت ربات بوجود آید حالتی تعریف شده است که در صورت اتفاق نیفتادن هیچ یک از حالات قبل ،اتفاق می افتد،بدین معنی که اگر کدی از سنسور ها دریافت شود که در حلقه ی Select_Caseتعریف نشده باشد برنامه ینوشته شده در این قسمت اجار خواهد شد .این قسمت با عنوان Case Elseدر برنامه لحاظ شده است و در واقع دستور حرکت مستقیم را اجرا میکند .دقیقا مانند کد مربوط به حرکت مستقیم .


%D9%82.png


با کمی دقت و حوصله میتوانید کد های دیگری را نیز به مجموعه ی کدهای فوق اضافه کنید و حرکت دقیق تری را برای ربات فراهم آورید.


خب دوستان آموزش ربات مسیریاب در اینجا به پایان میرسه


امیدوارم که به دردتون بخوره


در ضمن این پروژه عملیه و در حد یک پروژه تئوری نیست و من خودم اونو اجرا کردم ...


تاپیک  قفل میشه پس اگه سوالی داشتید در پیام خصوصی بپرسید


موفق باشید


به امید پیشرفت روز افزون تیم گارد ایران


**تشکرشما باعث دلگرمیه**


به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مهمان
این موضوع برای عدم ارسال قفل گردیده است.

×
×
  • جدید...