بامپر و موقعیت در روبی: حسگرهای ربات واقعی
رباتهای واقعی ضربهگیر و مختصات دارند. ربات روبی هم در حالت پیشرفته همین حسگرها را دارد.
این حسگرها چه کار میکنند؟
bumperFront اگر جلوی روبی مانع سفت یا لبهی نقشه باشد عدد ۱ و وگرنه ۰ میدهد؛ مثل یک ضربهگیر که به دیوار چسبیده. bumper چیز دیگری است: درست بعد از اینکه یک حرکت به دیوار، آب یا لبهی نقشه خورد بله میشود و بعد از اولین حرکت موفق دوباره خیر میشود. یعنی bumper میپرسد «همین الان به جایی خوردم؟».
positionX و positionY جای روبی را با دو عدد میدهند. مبدأ گوشهی پایین و چپ نقشه است؛ X به سمت راست و Y به سمت بالا زیاد میشود، مثل نمودار ریاضی.
شکل بلوکی و شکل کد
این حسگرها مخصوص حالت کد هستند و در آزمایشگاه آزاد روبی در پنل زندهی حسگرها، کنار فاصلهسنجها و حسگر رنگ، نمایش داده میشوند.
- ✅ ضربهگیر جلو: bumperFront با مقدار ۰ یا ۱
- ✅ برخورد قبلی: bumper یا bumped
- ✅ موقعیت: positionX و positionY
- ✅ مثال: if bumper == 1: left
یک مثال کوچک با ربات روبی
ربات جاروبرقی ساده: repeat(30): و داخلش forward و بعد if bumper == 1: right. روبی جلو میرود و هر بار به چیزی بخورد، میچرخد. یا برای رفتن تا ستون چهارم نقشه: while positionX < 4: forward، به شرطی که روبی رو به راست باشد.
در هر دو مثال، روبی بدون شمردن خانهها و فقط با خواندن حسگرها تصمیم میگیرد؛ همان کاری که رباتهای واقعی با ضربهگیر و مختصات انجام میدهند.
اشتباههای رایج
bumperFront قبل از حرکت چک میکند و bumper بعد از حرکت؛ قاطی کردن این دو رایجترین خطاست.
- ✅ انتظار اینکه bumperFront آب را هم تشخیص دهد
- ✅ فکر کردن به اینکه Y مثل صفحه به پایین زیاد میشود
- ✅ پرسیدن bumper قبل از اینکه حرکتی انجام شده باشد
در کدام درسها و لیگها استفاده میشود؟
این حسگرها همراه فاصلهسنج در درس ۲۰ و برای حل مسئله در درس ۲۱ «هزارتو» و پروژهی درس ۲۳ کاربرد دارند. positionX و positionY در تمرینهای لیگ ۳ و لیگ ۴ هم استفاده شدهاند.
نکته برای والدین و معلم
positionX و positionY فرصت خوبی برای وصل کردن برنامهنویسی به محور مختصات کلاس ریاضی است. از نوجوان بخواهید قبل از اجرا مختصات مقصد را روی کاغذ بنویسد.
سوالهای پرتکرار
فرق bumperFront و bumper چیست؟
bumperFront میگوید الان جلوی روبی مانع هست؛ bumper میگوید حرکت قبلی به مانع خورده است.
مبدأ positionX و positionY کجاست؟
گوشهی پایین و چپ نقشه.
آیا این حسگرها در بلوکها هستند؟
نه، در حالت کد و آزمایشگاه آزاد استفاده میشوند.