الدرس 2: استخدام عوامل المقارنة
في هذا الدرس، سوف تتكئ على عوامل المقارنة، واستخدامها في مشروع مع بيانات من مستشعر المسافة. بعد ذلك، ستنشئ مشروعًا يتنقل عبر روبوت الواقع الافتراضي إلى الحرف "A" باستخدام مستشعر المسافة مع حلقات WHEAL والمشغل الأكبر من>(). في التحدي المصغر، ستطبق هذه المهارات للتنقل من بداية متاهة الجدار إلى الرقم "1".

مخرجات التعلم
- حدد أن أكبر من>()، وأقل من<()، ويساوي(==) هي عوامل مقارنة تقارن بين قيمتين، تعرف باسم المعاملات.
- حدد أن المشغل الأكبر من>() يقارن بين قيمتين ويبلغ عن صواب إذا كانت القيمة اليسرى أكبر من القيمة الصحيحة.
- حدد أن المشغل الأقل من<() يقارن بين قيمتين ويبلغ عن صواب إذا كانت القيمة اليسرى أقل من القيمة الصحيحة.
- حدد أن المشغلات الأكبر من (>) أو الأقل من (<) تبلغ عن قيمة True أو False عند استخدامها كشرط في حلقة while .
- صف كيفية إنشاء مشروع يحتوي على محرك روبوت الواقع الافتراضي للأمام حتى تكون قيمة مستشعر المسافة أقل من مبلغ معين.
مشغلو المقارنات
يقارن العاملون أقل من<>()، وأكبر من ()، ويساوي(==) قيمتين، تعرفان أيضًا باسم المعاملات. القيمة الموجودة على يسار المشغل هي المعامل الأول، والقيمة الموجودة على اليمين هي المعامل الثاني. يقوم المشغلون بالإبلاغ عن القيم المنطقية وإرجاع قيمة حقيقية عندما تكون المقارنة صحيحة، و False عندما تكون المقارنة غير صحيحة.
- في هذه الأمثلة باستخدام عامل التشغيل أقل من<()، عندما تكون العبارة صحيحة رقميًا،
سيتم الإبلاغ عن True.

- وبالمثل، في هذه الأمثلة باستخدام عامل التشغيل أكبر من>()، ستبلغ العبارة الصحيحة
رقميًا عن True.

- يقوم عامل التشغيل يساوي(==) بالإبلاغ عن True عندما تكون القيمتان متطابقتين
تمامًا، و False عندما لا تكونان متطابقتين.
- لاحظ أن علامة التساوي المزدوجة تعني "يساوي"، وتقارن بين القيمتين. علامة المساواة المفردة هي عامل تعيين يقوم بتعيين قيمة لمتغير.
يمكن لعوامل المقارنة مقارنة الكسور العشرية أو الأعداد الصحيحة أو أوامر التقارير الرقمية.
استخدام مشغلي المقارنة مع بيانات مستشعر المسافة
تكون عوامل المقارنة مفيدة بشكل خاص عندما تستخدم بيانات رقمية من مستشعر، مثل مستشعر المسافة، لاتخاذ قرار روبوت الواقع الافتراضي. في الوحدة السابقة، تم استخدام البيانات من مستشعر المصد لجعل روبوت الواقع الافتراضي يدور عند الضغط على مستشعر المصد. ومع ذلك، مع مشغل المقارنة، يمكننا استخدام البيانات من مستشعر المسافة لجعل روبوت الواقع الافتراضي يدور في موقع أكثر دقة. هذا مفيد لتجنب القيادة في الجدران، أو لجعل روبوت الواقع الافتراضي ينتقل إلى مكان معين على الملعب.
يمكن استخدام البيانات من مستشعر المسافة كواحدة من القيم في مشغل المقارنة.
front_distance.get_distance(MM) > 50
على سبيل المثال، إذا أردنا أن يتجه روبوت الواقع الافتراضي نحو جسم ما، مثل الحائط، ثم يتوقف عندما يقترب من
الجسم، فيمكننا القيام بذلك باستخدام عامل المقارنة ووظيفة get _distance. في
الأساس، نطلب من روبوت الواقع الافتراضي القيادة بينما تكون المسافة بين الروبوت والكائن أكبر من قيمة الحد
الأدنى، مثل 50 ملم (مم).
بينما يشير مستشعر المسافة إلى أنه يزيد عن 50 ملم (مم)، أو أن القيمة أكبر من >() 50، يمكن لروبوت الواقع الافتراضي القيادة بحرية. عندما يبلغ مستشعر المسافة أنه أقرب من 50 ملليمتر (مم)، أو أن القيمة لا تزيد عن>() 50، يحتاج روبوت الواقع الافتراضي إلى التوقف أو الدوران قبل الاصطدام بالجدار.
لمعلوماتك
يمكن أن يكون اختيار عامل المقارنة الذي يجب استخدامه خيارًا أسلوبيًا. تم استخدام المشغل الأكبر من>() في المثال أعلاه لجعل المشروع واضحًا وقابلًا للقراءة قدر الإمكان. بينما يكون روبوت الواقع الافتراضي على مسافة أكبر من 50 ملم، تقدم للأمام. يمكنك تحقيق نفس الهدف عن طريق عكس ترتيب القيم في المشغل، وباستخدام مشغل أقل من<().
بينما 50 > front_distance.get_distance(MM):
هنا، سيقود روبوت الواقع الافتراضي بينما كان 50 ملم أكبر من القيمة التي أبلغ عنها مستشعر المسافة. سيؤدي روبوت الواقع الافتراضي نفس السلوك، ومع ذلك، فإن المشروع أقل وضوحًا وقابلية للقراءة.
اعتمادًا على بيانات المستشعر التي تستخدمها، قد لا يجعل عامل التشغيل يساوي(==) روبوت الواقع الافتراضي يعمل كما كنت تنوي. على سبيل المثال، إذا كان الهدف هو إيقاف روبوت الواقع الافتراضي على بعد 50 ملليمترًا من جسم ما، فقد تفكر في استخدام عامل التشغيل يساوي(==).
بينما front_distance.get_distance(MM) == 50:
ومع ذلك، في متاهة الجدار على سبيل المثال، فإن استخدام مشغل يساوي(==) مع مستشعر المسافة سيتطلب مثل هذه القراءة الدقيقة من المستشعر، لتكون بالضبط 50 ملم، بحيث أن سرعة روبوت الواقع الافتراضي ستجعل من المستحيل تقريبًا الحصول على هذا المستوى من الدقة في الوقت الفعلي. وبالتالي، من المرجح أن يستمر روبوت الواقع الافتراضي في تجاوز العتبة لأنه سواء كان يبلغ عن قيمة 100 ملليمتر أو 25 ملليمترًا، فإن أيًا من هذين لا يساوي 50 ملليمترًا، وبالتالي فإن المشغل لا يبلغ أبدًا عن كونه صحيحًا.
مشغلي المقارنة ومشكلة متاهة الجدار
يمكن استخدام حلقة بينما مع مشغلي المقارنة ومستشعر المسافة، بحيث يتحقق روبوت الواقع الافتراضي بشكل مستمر من بيانات المستشعر ويقيم المقارنة. يمكن أن يمكّن هذا روبوت الواقع الافتراضي من أداء سلوك عندما تكون القيمة أعلى أو أقل من عتبة معينة. في متاهة الجدار، تكون النتيجة المرجوة هي دفع روبوت الواقع الافتراضي للأمام بينما يكون مستشعر المسافة أكبر من 50 ملم (مم) من الجدار. بعد ذلك، يجب أن يتوقف أو يستدير للاستمرار عبر المتاهة.
def main ():
while front_distance.get_distance (MM) > 50: drivetrain.drive
(FORWARD)
انتظر(5، مللي ثانية
)drivetrain.stop ()
في مثال مقطع الفيديو هذا، ستحافظ الحلقة بينما في المشروع الموضح على اليسار على استمرار قيادة روبوت الواقع الافتراضي للأمام من موقع البداية، طالما تم استيفاء الشرط، وتم الإبلاغ عن أن المسافة بين روبوت الواقع الافتراضي وأقرب جسم (الجدار الأول المقابل) أكبر من 50 ملم (مم). ثم يتوقف الروبوت عندما يقترب من الجدار الأول وتكون المسافة المبلغ عنها أقل من 50 مم.
توضح هذه الصورة تدفق المشروع أعلاه:
- بينما يكون مستشعر المسافة أكبر من 50 ملم (مم) من الحائط، يبلغ المشغل عن True ويبقى في الحلقة بينما
- عندما تكون المسافة أقل من 50 ملم (مم) من الحائط، يقوم المشغل بالإبلاغ عن خطأ، ويخرج من الحلقة بينما .

قم باختيار الزر التالي لمواصلة بقية هذا الدرس.