جدول المحتويات:

قم بقياس الضغط باستخدام جهاز المايكرو بت: 5 خطوات (بالصور)
قم بقياس الضغط باستخدام جهاز المايكرو بت: 5 خطوات (بالصور)

فيديو: قم بقياس الضغط باستخدام جهاز المايكرو بت: 5 خطوات (بالصور)

فيديو: قم بقياس الضغط باستخدام جهاز المايكرو بت: 5 خطوات (بالصور)
فيديو: 6- كيف تفهم قياسات ضغط الدم 🎛 | بيترو 2024, يوليو
Anonim
قم بقياس الضغط باستخدام المايكرو بت
قم بقياس الضغط باستخدام المايكرو بت
قم بقياس الضغط باستخدام المايكرو بت
قم بقياس الضغط باستخدام المايكرو بت

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

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

بالإضافة إلى ذلك ، فإن عدد أوصاف التطبيقات التي يتم فيها استخدام micro: bit بالاشتراك مع مستشعر مدفوع I2C محدود نوعًا ما حتى الآن. آمل أن تكون هذه التعليمات نقطة انطلاق لمشاريع أخرى.

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

بشكل افتراضي ، تسمح لك الشاشة بتقدير الضغط من خلال مؤشر المستوى الموضح في مصفوفة LED. يسمح الراسم التسلسلي لـ Arduino IDE بفعل الشيء نفسه ، ولكن بدقة أفضل بكثير (انظر الفيديو). تتوفر أيضًا حلول أكثر تفصيلاً ، على سبيل المثال في لغة المعالجة. يمكنك أيضًا عرض القيم المقاسة بدقة للضغط ودرجة الحرارة على مصفوفة LED بعد الضغط على الزرين A أو B على التوالي ، لكن الشاشة التسلسلية لـ Arduino IDE أسرع بكثير ، مما يسمح بعرض القيم في الوقت الفعلي القريب.

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

تم استخدام المبدأ لبناء جهاز micro: bit dive-o-meter ، وهو جهاز لقياس مدى عمق الغوص.

ملحق 27 مايو 2018:

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

الخطوة الأولى: المواد المستعملة

المواد المستعملة
المواد المستعملة
المواد المستعملة
المواد المستعملة
المواد المستعملة
المواد المستعملة
المواد المستعملة
المواد المستعملة
  • مايكرو: بت حصلت عليها من بيموروني - 13.50 جنيه إسترليني
  • Kitronic Edge Connector for micro: bit - عبر Pimoroni - 5 جنيهات إسترلينية ، ملاحظة: تقدم Pimorini الآن موصل حافة مناسب للوح اللوح يسمى pin: bit مع دبابيس على منافذ I2C.
  • 2 × 2 شرائط رأس الدبوس
  • بطارية أو LiPo للمايكرو: بت (ليست ضرورية ، لكنها مفيدة) ، كابل بطارية مع مفتاح (ديتو) - بيموروني
  • كبلات توصيل لتوصيل المستشعرات بموصل الحافة
  • كبلات توصيل طويلة (!) لجهاز الاستشعار ، على الأقل بطول الحقنة ، f / f أو f / m
  • مستشعر الضغط ودرجة الحرارة BMP280 - Banggood - 5 دولارات أمريكية لثلاث وحدات يتراوح نطاق القياس لهذا المستشعر بين 550 و 1537 hPa.
  • محقنة قسطرة بلاستيكية سعة 150 مل بحشية مطاطية - أمازون أو متاجر الأجهزة والحدائق - حوالي 2-3 دولارات أمريكية
  • مسدس الغراء الساخن / الغراء الساخن
  • لحام حديد
  • جهاز كمبيوتر مثبت عليه Arduino IDE

الخطوة 2: تعليمات التجميع

تعليمات التجميع
تعليمات التجميع
تعليمات التجميع
تعليمات التجميع
تعليمات التجميع
تعليمات التجميع

رؤوس اللحام إلى اندلاع مستشعر BMP280.

قم بتوصيل رأسي 2 دبوس في الدبوس 19 ودبوس 20 موصل من موصل الحافة (انظر الصورة).

قم بتوصيل micro: bit بموصل Edge وجهاز الكمبيوتر الخاص بك.

قم بإعداد البرامج و micro: bit كما هو موضح في تعليمات Adafruit micro: bit. اقرأها جيدًا.

قم بتثبيت المكتبات المطلوبة في Arduino IDE.

افتح البرنامج النصي BMP280 المرفق في خطوة لاحقة.

قم بتوصيل المستشعر بموصل Edge. GND إلى 0 فولت ، VCC إلى 3 فولت ، SCL إلى دبوس 19 ، SDA إلى دبوس 20.

قم بتحميل البرنامج النصي على micro: bit.

تأكد من أن المستشعر يعطي بيانات معقولة ، يجب أن تكون قيم الضغط حوالي 1020 hPa ، معروضة على الشاشة التسلسلية. في حالة حدوث ذلك ، تحقق من الكابلات والتوصيلات أولاً ، ثم تثبيت البرنامج ، وصححه.

قم بإيقاف تشغيل micro: bit ، وإزالة المستشعر.

مرر كبلات العبور الطويلة عبر مخرج المحقنة. في حال قد تضطر إلى توسيع الفتحة. احرص على حذف تلف الكابلات.

قم بتوصيل المستشعر بكابلات العبور. تأكد من أن التوصيلات صحيحة وجيدة. قم بالاتصال بـ micro: bit.

تأكد من أن المستشعر يعمل بشكل صحيح. اسحب الكابلات بحذر ، انقل المستشعر إلى أعلى المحقنة.

أدخل المكبس وحركه أبعد قليلاً من وضع الراحة المطلوب (100 مل).

أضف الغراء الساخن إلى نهاية مخرج المحقنة وحرك المكبس للخلف قليلاً. تحقق مما إذا كانت المحقنة محكمة الإغلاق ، أو أضف المزيد من الغراء الساخن. دع الغراء الساخن يبرد.

تحقق مرة أخرى من عمل المستشعر. إذا قمت بتحريك المكبس ، فيجب أن تتغير الأرقام الموجودة في الشاشة التسلسلية وشاشة micro: bit.

إذا لزم الأمر ، يمكنك ضبط مستوى الصوت في المحقنة عن طريق الضغط عليها بالقرب من الحشية وتحريك المكبس.

الخطوة الثالثة: قليل من النظرية وبعض القياسات العملية

قليل من النظرية وبعض القياسات العملية
قليل من النظرية وبعض القياسات العملية
قليل من النظرية وبعض القياسات العملية
قليل من النظرية وبعض القياسات العملية

باستخدام الجهاز الموصوف هنا ، يمكنك إثبات ارتباط الضغط والضغط في تجارب الفيزياء البسيطة. بما أن المحقنة تأتي بمقياس "مل" ، فمن السهل إجراء التجارب الكمية.

النظرية الكامنة وراء ذلك: وفقًا لقانون بويل ، [الحجم * الضغط] هو قيمة ثابتة للغاز عند درجة حرارة معينة.

هذا يعني أنك إذا ضغطت حجمًا معينًا من الغاز N-fold ، أي أن الحجم النهائي هو 1 / N أضعاف من الأصل ، فإن ضغطه سيرتفع N- أضعاف ، على النحو التالي: P0 * V0 = P1 * V1 = سلبيات t. لمزيد من التفاصيل ، يرجى إلقاء نظرة على مقالة ويكيبيديا حول قوانين الغاز. عند مستوى سطح البحر ، يكون الضغط الجوي عادة في حدود 1010 هيكتو باسكال (هيكتو باسكال).

لذا فالبدء من نقطة استراحة مثل V0 = 100 ml و P0 = 1000 hPa ، سيؤدي ضغط الهواء إلى حوالي 66 مللي (أي V1 = 2/3 * V0) إلى ضغط يبلغ حوالي 1500 hPa (P1 = 3/2 من P0). يؤدي سحب المكبس إلى 125 مل (حجم 5/4 أضعاف) إلى ضغط يبلغ حوالي 800 hPa (ضغط 4/5). القياسات دقيقة بشكل مذهل لمثل هذا الجهاز البسيط.

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

ولكن يمكننا أيضًا إجراء بعض العمليات الحسابية والتحقق منها تجريبيًا. لنفترض أننا نضغط الهواء إلى 1500 hPa ، عند ضغط بارومتري قاعدي 1000 hPa. إذن ، فرق الضغط هو 500 هكتو باسكال ، أو 50 ألف باسكال.بالنسبة للحقنة الخاصة بي ، يبلغ قطر المكبس (د) حوالي 4 سم أو 0.04 متر.

يمكنك الآن حساب القوة المطلوبة لتثبيت المكبس في هذا الوضع. بالنظر إلى P = F / A (الضغط هو القوة مقسومًا على المنطقة) ، أو المحول F = P * A. وحدة SI للقوة هي "نيوتن" N للطول "متر" متر ، و 1 باسكال هي 1 نيوتن لكل متر مربع. بالنسبة للمكبس المستدير ، يمكن حساب المنطقة باستخدام A = ((d / 2) ^ 2) * pi ، والتي تعطي 0.00125 متر مربع للحقنة الخاصة بي. وبالتالي

50 ، 000 باسكال * 0.00125 م ^ 2 = 63 نيوتن.

على الأرض ، 1 نيوتن يرتبط بوزن 100 غرام ، لذا فإن 63 نيوتن يساوي حمل وزن 6.3 كجم.

يمكن التحقق من ذلك بسهولة باستخدام مقياس. ادفع المحقنة بالمكبس على الميزان ، حتى يصل الضغط إلى 1500 hPa ، ثم اقرأ الميزان. أو اضغط حتى يظهر المقياس حوالي 6-7 كجم ، ثم اضغط على الزر "A" واقرأ القيمة المعروضة على مصفوفة LED الخاصة بـ micro: bit. كما اتضح ، لم يكن التقدير المبني على الحسابات المذكورة أعلاه سيئًا. يرتبط ضغط أعلى قليلاً من 1500 hPa ب "وزن" معروض يبلغ حوالي 7 كجم على مقياس للجسم (انظر الصور). يمكنك أيضًا قلب هذا المفهوم واستخدام الجهاز لبناء مقياس رقمي بسيط يعتمد على قياسات الضغط.

يرجى الانتباه إلى أن الحد الأعلى لجهاز الاستشعار يبلغ حوالي 1540 هيكتوباسكال ، لذلك لا يمكن قياس أي ضغط أعلى من ذلك وقد يؤدي إلى تلف المستشعر.

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

الخطوة 4: البرنامج النصي MicroPython

مرفقًا تجد البرنامج النصي BMP280 الخاص بي لـ micro: bit. إنه مشتق من برنامج نصي BMP / BME280 وجدته في مكان ما على موقع Banggood ، مدمجًا مع مكتبة Adafruit's Microbit. الأول يسمح لك باستخدام مستشعر Banggood ، والثاني يبسط التعامل مع شاشة LED مقاس 5 × 5. شكري لمطوري كليهما.

بشكل افتراضي ، يعرض البرنامج النصي نتائج قياسات الضغط في 5 خطوات على شاشة micro: bit 5x5 LED ، مما يسمح برؤية التغييرات مع تأخير بسيط. يمكن عرض القيم الدقيقة بالتوازي على جهاز العرض التسلسلي Arduino IDE ، أو يمكن عرض رسم بياني أكثر تفصيلاً على الرسم البياني الخاص بـ Arduino IDE.

إذا قمت بالضغط على الزر A ، فسيتم عرض قيم الضغط المقاسة على مصفوفة micro: bit 5x5 LED. إذا ضغطت على الزر B ، فسيتم عرض قيم درجة الحرارة. بينما يسمح هذا بقراءة البيانات الدقيقة ، فإنه يبطئ دورات القياس بشكل كبير.

أنا متأكد من أن هناك طرقًا أكثر أناقة لبرمجة المهام وتحسين النص. نرحب بأي مساعدة.

# تضمين xxx

# تضمين ميكروبيت Adafruit_Microbit_Matrix ؛ #define BME280_ADDRESS 0x76 غير موقعة طويلة int hum_raw ، temp_raw ، pres_raw ؛ وقعت طويلة int t_fine ؛ uint16_t dig_T1 ؛ int16_t dig_T2 ؛ int16_t dig_T3 ؛ uint16_t dig_P1 ؛ int16_t dig_P2 ؛ int16_t dig_P3 ؛ int16_t dig_P4 ؛ int16_t dig_P5 ؛ int16_t dig_P6 ؛ int16_t dig_P7 ؛ int16_t dig_P8 ؛ int16_t dig_P9 ؛ int8_t dig_H1 ؛ int16_t dig_H2 ؛ int8_t dig_H3 ؛ int16_t dig_H4 ؛ int16_t dig_H5 ؛ int8_t dig_H6 ؛ // حاويات للقيم المقاسة int value0 ؛ قيمة int1 ؛ قيمة int2 ؛ قيمة int3 ؛ قيمة كثافة العمليات 4 ؛ // ------------------------------------------------ -------------------------------------------------- ------------------ إعداد باطل () {uint8_t osrs_t = 1؛ // تجاوز درجة الحرارة × 1 uint8_t osrs_p = 1 ؛ // الضغط الزائد x 1 uint8_t osrs_h = 1 ؛ // زيادة أخذ عينات الرطوبة × 1 وضع uint8_t = 3 ؛ // الوضع العادي uint8_t t_sb = 5 ؛ // Tstandby 1000ms uint8_t filter = 0 ؛ // تصفية uint8_t spi3w_en = 0 ؛ // 3-wire SPI Disable uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | الوضع؛ uint8_t config_reg = (t_sb << 5) | (مرشح << 2) | spi3w_ar ؛ uint8_t ctrl_hum_reg = osrs_h ؛ pinMode (PIN_BUTTON_A ، INPUT) ؛ pinMode (PIN_BUTTON_B ، INPUT) ؛ Serial.begin (9600) ؛ // Serial.println ("درجة الحرارة [درجة مئوية]") ؛ // Serial.print ("\ t") ؛ Serial.print ("الضغط [hPa]") ؛ // header Wire.begin () ؛ writeReg (0xF2، ctrl_hum_reg) ، writeReg (0xF4، ctrl_meas_reg) ، writeReg (0xF5، config_reg) ؛ readTrim () ، // microbit.begin () ؛ // microbit.print ("x") ؛ تأخير (1000) ؛ } // ----------------------------------------------- -------------------------------------------------- -------- حلقة فارغة () {double temp_act = 0.0، press_act = 0.0، hum_act = 0.0؛ وقعت طويلة int temp_cal ؛ الصحافة_cal ، hum_cal كثافة العمليات طويلة بدون توقيع ؛ كثافة العمليات N ؛ // تعيين قيم العتبة لعرض مصفوفة LED ، في hPa double max_0 = 1100 ؛ مزدوج max_1 = 1230 ؛ مزدوج max_2 = 1360 ؛ مزدوج max_3 = 1490 ؛ إقرأ البيانات()؛ temp_cal = calibration_T (temp_raw) ؛ press_cal = calibration_P (pres_raw) ؛ hum_cal = calibration_H (hum_raw) ؛ temp_act = (مزدوج) temp_cal / 100.0 ؛ press_act = (مزدوج) press_cal / 100.0 ؛ hum_act = (مزدوج) hum_cal / 1024.0 ؛ microbit.clear () ؛ // إعادة ضبط مصفوفة LED / * Serial.print ("اضغط:") ؛ Serial.println (press_act) ؛ Serial.print ("hPa") ؛ Serial.print ("TEMP:") ؛ Serial.print ("\ t") ؛ Serial.println (temp_act) ؛ * / if (! digitalRead (PIN_BUTTON_B)) {// عرض القيم بالأرقام يؤخر قياس دوائر microbit.print ("T:") ؛ microbit.print (temp_act ، 1) ؛ microbit.print ("C") ؛ // Serial.println ("") ؛ } else if (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:")؛ microbit.print (press_act، 0) ؛ microbit.print ("hPa") ؛ } else {// عرض قيم الضغط كوحدات بكسل أو خطوط في مستوى معين // 5 خطوات: 1490 hPa // عتبات محددة بواسطة قيم max_n if (press_act> max_3) {(N = 0)؛ // upper row} else if (press_act> max_2) {(N = 1)؛ } else if (press_act> max_1) {(N = 2) ؛ } else if (press_act> max_0) {(N = 3) ؛ } آخر {(N = 4) ؛ // base row} // Serial.println (N) ؛ // لأغراض التطوير // microbit.print (N) ؛ // as Line // microbit.drawLine (N ، 0 ، 0 ، 4 ، LED_ON) ؛ // تحويل القيم إلى السطر التالي value4 = value3 ؛ القيمة 3 = القيمة 2 ؛ القيمة 2 = القيمة 1 ؛ value1 = value0 ؛ value0 = N ؛ // رسم صورة ، عمود بعمود microbit.drawPixel (0 ، value0 ، LED_ON) ؛ // كبكسل: عمود ، صف. 0 ، 0 الزاوية اليسرى العليا microbit.drawPixel (1 ، القيمة 1 ، LED_ON) ؛ microbit.drawPixel (2 ، القيمة 2 ، LED_ON) ؛ microbit.drawPixel (3 ، القيمة 3 ، LED_ON) ؛ microbit.drawPixel (4 ، القيمة 4 ، LED_ON) ؛ } // إرسال البيانات إلى جهاز العرض التسلسلي والرسام التسلسلي // Serial.println (press_act) ؛ // إرسال القيمة (القيم) إلى المنفذ التسلسلي للعرض الرقمي ، اختياري

Serial.print (press_act) ؛ // إرسال القيمة إلى المنفذ التسلسلي للراسم

// رسم خطوط المؤشر وإصلاح النطاق المعروض Serial.print ("\ t") ؛ Serial.print (600) ؛ Serial.print ("\ t") ؛ Serial.print (1100) ، Serial.print ("\ t") ؛ Serial.println (1600) ؛ تأخير (200) ؛ // قس ثلاث مرات في الثانية} // ---------------------------------------- -------------------------------------------------- -------------------------------------------------- - // ما يلي مطلوب من أجل مستشعر bmp / bme280 ، احتفظ به كما هو باطل readTrim () {uint8_t data [32]، i = 0 ؛ // إصلاح 2014 / Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0x88) ؛ Wire.endTransmission () ؛ Wire.request From (BME280_ADDRESS ، 24) ، // إصلاح 2014 / while (Wire.available ()) {data = Wire.read () ؛ أنا ++ ؛ } Wire.beginTransmission (BME280_ADDRESS) ؛ // إضافة 2014 / Wire.write (0xA1) ؛ // إضافة 2014 / Wire.endTransmission () ؛ // إضافة 2014 / Wire.requestFrom (BME280_ADDRESS، 1) ؛ // إضافة 2014 / البيانات = Wire.read () ؛ // إضافة 2014 / i ++ ؛ // إضافة 2014 / Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xE1) ؛ Wire.endTransmission () ؛ Wire.request From (BME280_ADDRESS، 7) ، // إصلاح 2014 / while (Wire.available ()) {data = Wire.read () ؛ أنا ++ ؛ } dig_T1 = (البيانات [1] << 8) | البيانات [0] ؛ dig_P1 = (البيانات [7] << 8) | البيانات [6] ؛ dig_P2 = (البيانات [9] << 8) | البيانات [8] ؛ dig_P3 = (البيانات [11] << 8) | البيانات [10] ؛ dig_P4 = (البيانات [13] << 8) | البيانات [12] ؛ dig_P5 = (البيانات [15] << 8) | البيانات [14] ؛ dig_P6 = (البيانات [17] << 8) | البيانات [16] ؛ dig_P7 = (البيانات [19] << 8) | البيانات [18] ؛ dig_T2 = (البيانات [3] << 8) | البيانات [2] ؛ dig_T3 = (البيانات [5] << 8) | البيانات [4] ؛ dig_P8 = (البيانات [21] << 8) | البيانات [20] ؛ dig_P9 = (البيانات [23] << 8) | البيانات [22] ؛ dig_H1 = البيانات [24] ، dig_H2 = (البيانات [26] << 8) | البيانات [25] ؛ dig_H3 = البيانات [27] ، dig_H4 = (البيانات [28] << 4) | (0x0F والبيانات [29]) ؛ dig_H5 = (البيانات [30] 4) & 0x0F) ؛ // إصلاح 2014 / dig_H6 = البيانات [31] ؛ // إصلاح 2014 /} void writeReg (uint8_t reg_address، uint8_t data) {Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (reg_address) ؛ Wire.write (البيانات) ؛ Wire.endTransmission () ؛ }

قراءة البيانات الباطلة ()

{int i = 0 ؛ uint32_t data [8] ؛ Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xF7) ؛ Wire.endTransmission () ؛ Wire.request From (BME280_ADDRESS، 8) ، while (Wire.available ()) {data = Wire.read () ؛ أنا ++ ؛ } pres_raw = (البيانات [0] << 12) | (البيانات [1] 4) ؛ temp_raw = (البيانات [3] << 12) | (البيانات [4] 4) ؛ hum_raw = (البيانات [6] << 8) | البيانات [7] ؛ }

معايرة طويلة موقعة_ (توقيع طويل int adc_T)

{توقيع طويل int var1، var2، T؛ var1 = ((((adc_T >> 3) - ((علامة طويلة int) dig_T1 11 ؛ var2 = (((((adc_T >> 4) - ((موقع طويل int) dig_T1)) * ((adc_T >> 4) - ((موقع طويل int) dig_T1))) >> 12) * ((عدد مرات الدخول الطويلة) dig_T3)) >> 14 ؛ t_fine = var1 + var2 ؛ T = (t_fine * 5 + 128) >> 8 ؛ إرجاع T؛} long int calibration_P (توقيع long int adc_P) {موقع long int var1، var2؛ unsigned long int P؛ var1 = (((long int) t_fine) >> 1) - (long int) 64000؛ var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((علامة طويلة int) dig_P6) ؛ var2 = var2 + ((var1 * ((موقع طويل int) dig_P5)) 2) + ((موقع طويل int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + (((علامة طويلة int) dig_P2) * var1) >> 1)) >> 18 ؛ var1 = ((((32768 + var1)) * ((توقيع عدد صحيح طويل) dig_P1)) >> 15) ؛ إذا (var1 == 0) {إرجاع 0 ؛ } P = (((int long int) (((علامة طويلة int) 1048576) -adc_P) - (var2 >> 12))) * 3125 ؛ إذا (P <0x80000000) {P = (P << 1) / ((عدد صحيح طويل بدون إشارة) var1) ؛ } else {P = (P / (unsigned long int) var1) * 2 ؛ } var1 = (((علامة طويلة int) dig_P9) * ((علامة int طويلة) (((P >> 3) * (P >> 3)) >> 13))) >> 12 ؛ var2 = (((علامة int طويلة) (P >> 2)) * ((علامة int طويلة) dig_P8)) >> 13 ؛ P = (int long int) ((علامة طويلة int) P + ((var1 + var2 + dig_P7) >> 4)) ؛ عودة P ؛ } long int calibration_H غير الموقعة (long int adc_H) {signature long int v_x1؛ v_x1 = (t_fine - ((توقيع عقد طويل) 76800)) ؛ v_x1 = (((((adc_H << 14) - (((موقع طويل int) dig_H4) 15) * ((((((v_x1 * ((موقع طويل int) dig_H6)) >> 10) * (((v_x1 * ((توقيع طويل int) dig_H3)) >> 11) + ((توقيع طويل int) 32768))) >> 10) + ((توقيع طويل int) 2097152)) * ((علامة طويلة int) dig_H2) + 8192) >> 14)) ؛ v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((توقيع طويل int) dig_H1)) >> 4)) ؛ v_x1 = (v_x1 419430400؟ 419430400: v_x1) ؛ إرجاع (عدد صحيح طويل بدون توقيع) (v_x1 >> 12) ؛}

الخطوة 5: البرامج النصية MakeCode / JavaScript

البرامج النصية MakeCode / JavaScript
البرامج النصية MakeCode / JavaScript

أصدرت Pimoroni مؤخرًا enviro: bit ، الذي يأتي مع مستشعر ضغط BMP280 ، ومستشعر الضوء / اللون وميكروفون MEMS.كما أنها توفر MicroPython ومكتبة MakeCode / JavaScript.

لقد استخدمت لاحقًا لكتابة نص MakeCode لمستشعر الضغط. يمكن نسخ ملف hex المقابل مباشرة إلى micro: bit الخاص بك. يتم عرض الرمز أدناه ويمكن تعديله باستخدام محرر MakeCode عبر الإنترنت.

إنه تباين في البرنامج النصي لـ micro: bit dive-o-meter. يعرض بشكل افتراضي فرق الضغط كرسم بياني شريطي. الضغط على الزر A يضبط الضغط المرجعي ، ويؤدي الضغط على الزر B إلى عرض الفرق بين الضغط الفعلي والضغط المرجعي في hPa.

بالإضافة إلى إصدار الباركود الأساسي ، تجد أيضًا إصدار "X" ، ونسخة متقاطعة ونسخة "L" ، تهدف إلى تسهيل القراءة.

دع العمود = 0

دعنا نبقى = 0 دع الصف = 0 دع العداد = 0 دع دلتا = 0 دع المرجع = 0 دع هو = 0 هو = 1012 basic.showLeds (`# # # # # #.. # #. #. # #.. # # # # # # `) المرجع = 1180 basic.clearScreen () basic.forever (() => {basic.clearScreen () if (input.buttonIsPressed (Button. A)) {Ref = envirobit.getPressure () مصابيح العرض الأساسية ("#. #. #. #. #. # # # # #. #. #. #. #. #`) basic.pause (1000)} وإلا إذا (المدخلات.) {basic.showString ("" + Delta + "hPa") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) إذا (العداد> = 400) {Row = 4} else if (العداد> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {Row = 1} آخر {Row = 0} تظل = عداد - الصف * 100 إذا (تبقى> = 80) {العمود = 4} وإلا إذا (تبقى> = 60) {العمود = 3} وإلا (تبقى> = 40) {العمود = 2 } else if (stay> = 20) {Column = 1} else {Column = 0} لـ (let ColA = 0؛ ColA <= Column؛ ColA ++) {led.plot (ColA، Row)} basic.pause (500)}})

موصى به: