درس ۱۹ روبی: دنبال رنگ با colorSensor
رباتهای واقعی با حسگر نور و رنگ خط را دنبال میکنند. در درس ۱۹، ربات روبی هم با colorSensor رنگ زیر پایش را میخواند و بر اساس آن تصمیم میگیرد.
هدف درس دنبال رنگ
هدف درس ۱۹ روبی استفاده از حسگر رنگ برای مسیریابی است. تا اینجا حسگرها جواب بله یا خیر میدادند؛ colorSensor اما نام یک رنگ را برمیگرداند و کودک باید آن را با رنگ مورد نظر مقایسه کند، مثلاً colorSensor = "red".
در پایان، دانشآموز میتواند رنگها را به عنوان «علامت راهنما» روی زمین ببیند و برنامهای بنویسد که با دیدن هر رنگ، کار متفاوتی انجام دهد.
مفهوم برنامهنویسی: مقایسه و دادهی حسگر
در این درس کودک با عملگر مقایسهی == آشنا میشود. حسگر یک مقدار برمیگرداند و برنامه میپرسد «آیا این مقدار برابر با قرمز است؟». نتیجهی این مقایسه همان بله یا خیری است که if و while لازم دارند.
برای والدین: این اولین تماس جدی کودک با «داده» است. رباتهای صنعتی، ماشینهای خودران و حتی جاروبرقیهای هوشمند هم دادهی حسگر را میخوانند و با مقدارهای مشخص مقایسه میکنند. ربات روبی همین ایده را در سادهترین شکل نشان میدهد.
فعالیت قدمبهقدم با ربات روبی
در یک ماموریت نمونه، مسیر با خانههای رنگی علامتگذاری شده و هر جا رنگ زرد باشد روبی باید به راست بپیچد. برنامه: while not onTarget: if colorSensor = "yellow": turnRight، سپس forward داخل همان حلقه. روبی در هر قدم رنگ را میخواند، اگر زرد بود میچرخد و بعد جلو میرود.
در حالت بلوکی، داخل بلوک «♾️ تا وقتی» یک بلوک «❓ اگر» میگذاریم، در شرط آن حسگر رنگ را با رنگ زرد مقایسه میکنیم و «↻ راست» را داخلش قرار میدهیم. «⬆️ جلو» بعد از بلوک اگر و هنوز داخل حلقه است. برای دو جهت میتوان از if / else با دو رنگ استفاده کرد.
- ✅ هر رنگ را یک علامت راهنما در نظر بگیر
- ✅ برای هر علامت یک شرط بنویس
- ✅ حرکت اصلی را بیرون شرط و داخل حلقه بگذار
اشتباههای رایج و راه رفعشان
گاهی کودک رنگ را اشتباه تایپ میکند یا رنگی را بررسی میکند که در نقشه نیست؛ شرط هیچوقت درست نمیشود و روبی هرگز نمیپیچد. اشتباه دیگر ترتیب است: اگر forward قبل از خواندن رنگ باشد، روبی رنگ خانهی بعدی را دیر میبیند و یک قدم اضافه میرود.
راه رفع: اجرای قدمبهقدم و پرسیدن «روبی الان روی چه رنگی ایستاده؟» در هر مرحله. این کار نشان میدهد حسگر دقیقاً کی و کجا خوانده میشود.
گاهی هم کودک یک = بهجای == مینویسد؛ در روبی و پایتون این دو با هم فرق دارند و مقایسه همیشه با دو علامت مساوی است. یک کارت یادآوری کنار کامپیوتر با نوشتهی «مقایسه یعنی ==» کمک زیادی میکند و این عادت را برای پایتون واقعی هم میسازد.
فعالیت بدون کامپیوتر: مسیر کاغذهای رنگی
با کاغذهای رنگی روی زمین یک مسیر بسازید. قانونها را روی تخته بنویسید: «زرد یعنی راست، آبی یعنی چپ، سبز یعنی هدف». یک کودک ربات شود و فقط با نگاه به رنگ زیر پایش حرکت کند. بعد بچهها مسیرهای جدید بچینند و ببینند همان قانونها همهجا کار میکند.
در دور بعد، یک رنگ تازه با قانون تازه، مثلاً «قرمز یعنی بایست و دو بار دست بزن»، اضافه کنید. بچهها میبینند اضافه کردن یک قانون یعنی اضافه کردن یک شرط به برنامه. سپس همین قانونها را در ربات روبی به شکل شرطهای جداگانه با colorSensor بنویسند و نتیجه را با بازی واقعی مقایسه کنند.
نکته برای معلم و والدین
به کودک یادآوری کنید در ردهی ۲ خودش با paint("color") زمین را رنگ میکرد. حالا همان رنگها را حسگر روبی میخواند. اگر وقت داشتید، چالش بدهید که کودک اول مسیر را رنگ کند و بعد برنامهای بنویسد که آن را دنبال کند.
این درس فرصت خوبی برای گفتوگو دربارهی رباتهای اطراف ماست. از کودک بپرسید کدام وسیلهها در خانه یا شهر با حسگر کار میکنند و به چه چیزی واکنش نشان میدهند؛ مثلاً درهای خودکار یا چراغهایی که با تاریک شدن هوا روشن میشوند. وقتی کودک این ارتباط را ببیند، حسگرهای روبی برایش معنای واقعی پیدا میکنند.
سوالهای پرتکرار
colorSensor چه مقداری برمیگرداند؟
رنگ خانهای را که ربات روبی رویش ایستاده؛ برای استفاده در شرط آن را مقایسه میکنیم، مثلاً colorSensor = "red".
این درس با رباتهای خطیاب واقعی چه ربطی دارد؟
منطق یکسان است: خواندن داده از حسگر و تصمیمگیری بر اساس آن. روبی همین منطق را بدون نیاز به سختافزار آموزش میدهد.
چرا علامت == دو تا مساوی دارد؟
در پایتون یک = برای مقداردهی است و == برای مقایسه. روبی از همان شکل استفاده میکند تا کودک برای پایتون واقعی آماده شود.