Skip to content

نشاط

سجل درجات الحرارة الدنيا والقصوى

مُتقدم | Python | أزرار, شاشة LED, مستشعر درجة الحرارة, موصلات (Pins) | أنواع البيانات, المتغيرات, المدخلات/المخرجات, معالجة البيانات

الخطوة 1: اصنعها

ماذا يعني؟

قم بتحويل micro:bit الخاص بك إلى مسجل بيانات قائم بذاته يسجل قراءات درجات الحرارة القصوى والدنيا، ويخزنها بحيث يحتفظ بالبيانات حتى في حالة نفاد البطاريات أو فصل الطاقة.

إنه برنامج Python، لكنك لست بحاجة إلى فهم أي شيء عن Python لاستخدامه.

ما ستتعلمه

  • كيفية استخدام Python لقراءة البيانات وكتابتها على وحدة تخزين غير متطايرة تظل على micro:bit حتى عند إزالة الطاقة
  • كيفية معالجة الأخطاء في برامج Python
  • كيف تحويل المتغيرات العددية إلى سلاسل والعكس

ما تحتاجه

  • جهاز micro:bit
  • حزمة بطارية اختيارية

كيف تستخدمه؟

  • قم بتنزيل ملف .hex ثم ضعه على micro:bit.
  • إذا كان لديك حزمة بطارية، قم بإرفاقها ووضع micro:bit في مكان ما حيث تتفاوت درجة الحرارة. يمكنك اختباره عن طريق وضعه في الخارج أو في ثلاجة وتركه لبضع دقائق.
  • قم بهزه لإظهار درجة الحرارة الحالية.
  • اضغط على الزر A لعرض الحد الأدنى من درجة الحرارة المسجلة.
  • اضغط على الزر B لإظهار أقصى درجة حرارة مسجلة.
  • اضغط على GND و الدبوس 2 في نفس الوقت بأصابعك لإعادة تعيين درجة الحرارة القصوى والدنيا إلى درجة الحرارة الحالية.

الخطوة 2: برمجها

1from microbit import *
2
3# function to read data file:
4def get_nv_data(name):
5    try:
6        with open(name) as f:
7            v = int(f.read())
8    except OSError:
9        v = temperature()
10        try:
11            with open(name, 'w') as f:
12                f.write(str(v))
13        except OSError:
14            display.scroll('Cannot create file %s' % name)
15
16    except ValueError:
17        display.scroll('invalid data in file %s' % name)
18        v = temperature()
19
20    return v
21
22# function to write data file:
23def set_nv_data(name, value):
24    try:
25        with open(name, 'w') as f:
26            f.write(str(value))
27    except OSError:
28        display.scroll('Cannot write to file %s' % name)
29
30min = get_nv_data('min.txt')
31max = get_nv_data('max.txt')
32
33while True:
34    currentTemp = temperature()
35    if currentTemp < min:
36        min = currentTemp
37        set_nv_data('min.txt', min)
38    if currentTemp > max:
39        max = currentTemp
40        set_nv_data('max.txt', max)
41    if accelerometer.was_gesture('shake'):
42        display.scroll(currentTemp)
43    if button_a.was_pressed():
44        display.scroll(get_nv_data('min.txt'))
45    if button_b.was_pressed():
46        display.scroll(get_nv_data('max.txt'))
47    if pin2.is_touched():
48        display.scroll('clearing data')
49        set_nv_data('min.txt', currentTemp)
50        set_nv_data('max.txt', currentTemp)
51

كيف يعمل ؟

يقوم مسجل البيانات هذا بتخزين قراءاته حتى عندما تكون الطاقة غير متصلة بجهاز micro:bit. يقوم بذلك عن طريق تخزين القراءات في التخزين غير المتطاير. هذه ذاكرة كمبيوتر تحتفظ بمحتوياتها عند إيقاف تشغيل الطاقة، تمامًا مثل micro:bit الذي يحتفظ ببرنامج قمت بتشغيله عندما تقوم بفصله من الكمبيوتر.

يقوم بتخزين البيانات على micro:bit في ملفين نصيين تحت اسم min.txt و max.txt والتي يمكن لبرنامج Python قراءتها وتحديثها.

يستخدم البرنامج ثلاثة متغيرات لتتبع ومقارنة درجة الحرارة:

  • currentTemp هي قراءة درجة الحرارة الحالية من مستشعر درجة الحرارة المدمج في micro:bit
  • الحد الأقصى هو الحد الأقصى لدرجة الحرارة. يتم تعيين قيمة جديدة إذا كانت درجة الحرارة الحالية أكبر من (>) القيمة الحالية الحد الأقصى.
  • الحد الأدنى هو الحد الأدنى لدرجة الحرارة. يتم تعيين قيمة جديدة إذا كانت درجة الحرارة الحالية أقل من (<) القيمة الحالية الحد الأدنى.

دالتان get_nv_data و set_nv_data، لقراءة وكتابة البيانات الرقمية إلى الملفات النصية غير المتطايرة. هذه الدوال تحول الأرقام إلى النص والعكس:

  • int() يحول النص (يسمى أيضًا سلسلة) إلى متغير رقمي (عدد صحيح) يمكننا استخدامه لمقارنة درجة الحرارة الحالية.
  • str() يحول متغير رقمي، مثل قراءة درجة الحرارة، إلى سلسلة نصية حتى يمكن حفظها في ملف نصي.

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

يعمل الجزء الرئيسي من البرنامج داخل حلقة أثناء الصواب. هذا يتصرف مثل كتلة إلى الأبد في MakeCode

الخطوة 3: حسّنها

  • مستشعر درجة حرارة micro:bit داخل المعالج ويعطي عادة قراءات درجة حرارة أعلى من الهواء المحيط. قياس الفرق باستخدام مقياس الحرارة العادي وإضافة تعويض إلى البرنامج بطرح الفرق من قراءة درجة الحرارة ()
  • تحويل البرنامج إلى تسجيل أنواع مختلفة من البيانات، مثل القوى التي تقاس بواسطة مقياس التسارع.
  • إضافة وظيفة الراديو لإرسال البيانات أيضًا إلى micro:bit في موقع آخر.
تعرف على المزيد حول تخزين البيانات في Python