Skip to content

النشاط

انفخ الشمعة

متوسط | MakeCode, Python | شاشة العرض, مِصوات (ميكروفون) | أجهزة الاستشعار, الإختيار, المنطق البوليني
اعتبارات تتعلق بإمكانية الوصول
الأضواء الوامضة

الخطوة ١: صنّع

ما هو؟

اصنع شمعة إلكترونية يمكنك إطفاؤها عن طريق النفخ! يكتشف المصوات المدمج في جهاز مايكروبت صوت نفَسك، فيُطفئ الشمعة، ثم يعيد تشغيلها مرة أخرى.

مقدمة

دليل البرمجة

ماذا ستتعلم؟

  • كيفية استخدام الأعداد العشوائية للتحكم في إضاءة المصابيح.
  • كيفية تبديل المخرجات استجابةً للمدخلات.
  • كيفية استخدام منطق القيم المنطقية لعمل محمول يقوم بتبديل التشغيل والإيقاف عند تشغيله في نفس الحدث

كيف يعمل ؟

  • يُخزَّن عدد عشوائي بين (1-3) في متغير يُسمّى «وميض (flicker)».
  • يُستخدم هذا العدد للتحكم في تشغيل المصابيح وإطفائها عشوائيًا، لتبدو مثل لهب يومض.
  • تُرتب المصابيح في الجهاز على شكل شبكة من الصفوف والأعمدة مرقّمة من (0-4). يرسم البرنامج أنماطًا مختلفة في الصف العلوي من الشاشة المصابيح ثم يقوم بإطفائها، وفقًا للعدد العشوائي المخزَّن في المتغير «وميض».
  • تُحدَّد إحداثيات المصابيح بذكر رقم العمود أولًا (المحور (x))، ثم رقم الصف (المحور (y)). يقع مركز اللهب عند الإحداثيات (2, 0).
شبكة تعرض تنسيقات عرض شاشة LED في micro:bit
  • تضمن حلقة التكرار استمرار تشغيل الرسوم المتحركة دون توقف.
  • يستخدم البرنامج أيضًا متغيرًا يُسمّى «مضاء (lit)» لتتبّع ما إذا كانت الشمعة مضاءة أم لا. هذا متغير منطقي. متغيرات القيم المنطقية يمكن أن تحتوي فقط على قيمتين: «صواب» (تشغيل) أو «خطأ» (إيقاف).
  • عندما يستشعر المصوات صوتًا مرتفعًا، مثل النفخ باتجاهه، يقوم البرنامج بتبديل قيمة «مضاء» إلى عكس قيمتها الحالية. فإذا كانت قيمة «مضاء» هي «صواب»، ستقلب إلى «خطأ»، وتُمسح الشاشة لإطفاء المصابيح.
  • أما إذا كانت قيمة «مضاء» هي «خطأ»، فتصبح«صواب»، ويُعاد تشغيل الرسوم المتحركة.

المطلوب

  • مايكروبت
  • محرر «بايثون» أو «ميك كود»
  • حزمة بطاريات (اختياري).

الخطوة ٢: بَرمج

1from microbit import *
2import random
3
4lit = True
5
6while True:
7    if microphone.was_event(SoundEvent.LOUD):
8        lit = not lit
9        sleep(500)
10    if lit:
11        display.show(Image(
12        "00900:"
13        "09990:"
14        "09990:"
15        "09990:"
16        "09990"))
17        sleep(150)
18        flicker = random.randint(1, 3)
19        if flicker != 2:
20            display.set_pixel(2,0,0)
21            display.set_pixel(flicker,0,9)
22        sleep(150)
23    else:
24        display.clear()

الخطوة ٣: حسّن

  • صمّم رسومك المتحركة بحيث يتم تشغيلها أو إيقافها استجابةً للصوت.
  • يمكنك ضبط الكتلة البرمجية «على الصوت المرتفع» بزيادة حساسيتها أو تقليلها، وذلك بإضافة كتلة «تعيين عتبة الصوت (المرتفع)» إلى كتلة «عند البدء». ستجدها تحت قسم «عنصر الإدخال» ثم …«المزيد». استخدم قيمًا أصغر للأصوات الهادئة، وقيمًا أكبر للأصوات المرتفعة.
  • في «بايثون» لتغيير عتبة الأصوات المرتفعة، استخدم التعليمة التالية «microphone.set_threshold(SoundEvent.LOUD, 128)» قبل حلقة «طالما أن الشرط صحيح (while true)» ، مع تغيير القيمة (١٢٨) إلى قيمة الصوت المطلوبة. يمكن أن يكون هذا أي رقم بين (صفر - 255)، علمًا بأن (255) هو الصوت الأعلى.