فهرست مطالب:
- مرحله 1: مواد مورد استفاده
- مرحله 2: دستورالعمل های مونتاژ
- مرحله 3: کمی نظریه و برخی اندازه گیری های عملی
- مرحله 4: اسکریپت MicroPython
- مرحله 5: اسکریپت های MakeCode/JavaScript
تصویری: اندازه گیری فشار با میکرو: بیت: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
دستورالعمل زیر دستگاهی آسان برای ساخت و ارزان برای انجام اندازه گیری فشار و نشان دادن قانون بویل ، با استفاده از micro: bit در ترکیب با سنسور فشار/دما BMP280 توصیف می کند.
در حالی که این ترکیب سرنگ/سنسور فشار قبلاً در یکی از دستورالعمل های قبلی من توضیح داده شده است ، ترکیب با micro: bit فرصت های جدیدی را ارائه می دهد ، به عنوان مثال. برای پروژه های اتاق کلاس
علاوه بر این ، تعداد توصیف برنامه هایی که در آنها micro: bit در ترکیب با یک سنسور I2C استفاده می شود تا کنون محدود است. امیدوارم این دستورالعمل نقطه شروع پروژه های دیگر باشد.
این دستگاه اجازه می دهد تا اندازه گیری های کمی از فشار هوا را انجام داده و نتایج را در آرایه LED micro: bit یا در رایانه متصل نمایش دهد ، تا بعداً از مانیتور سریال یا توابع پلاتر سریال Arduino IDE استفاده شود. علاوه بر این ، شما یک بازخورد لمسی دارید ، زیرا خودتان پیستون سرنگ را فشار داده یا می کشید و بدین ترتیب قدرت مورد نیاز را احساس می کنید.
به طور پیش فرض ، صفحه نمایش به شما امکان می دهد فشار را با نشانگر سطح نشان داده شده در ماتریس LED تخمین بزنید. پلاتر سریال Arduino IDE اجازه می دهد همین کار را انجام دهید ، اما با وضوح بسیار بهتر (به ویدیو مراجعه کنید). راه حل های مفصل تری نیز موجود است ، به عنوان مثال در زبان پردازش شما همچنین می توانید مقادیر اندازه گیری شده دقیق فشار و دما را بر روی ماتریس LED پس از فشار دادن دکمه های A یا B به ترتیب نمایش دهید ، اما مانیتور سریال Arduino IDE بسیار سریعتر است و اجازه می دهد تا مقادیر را در زمان واقعی نمایش دهید.
هزینه های کل و مهارت های فنی مورد نیاز برای ساخت دستگاه نسبتاً کم است ، بنابراین می تواند یک پروژه خوب در کلاس درس زیر نظر معلم باشد. علاوه بر این ، دستگاه می تواند ابزاری برای پروژه های STEM با تمرکز بر فیزیک باشد یا در پروژه های دیگر مورد استفاده قرار گیرد که در آن نیرو یا وزن باید به مقدار دیجیتالی تبدیل شود.
این اصل برای ساخت یک میکرو بسیار ساده استفاده شد: bit dive-o-meter ، وسیله ای برای اندازه گیری عمق غواصی.
الحاقی 27-مه -2018:
از آنجا که Pimoroni یک کتابخانه MakeCode برای سنسور BMP280 ایجاد کرده است ، این به من این فرصت را داد تا اسکریپتی را توسعه دهم که برای دستگاهی که در اینجا توضیح داده می شود استفاده شود. اسکریپت و فایل HEX مربوطه را می توانید در آخرین مرحله این دستورالعمل مشاهده کنید. برای استفاده از آن ، فقط فایل HEX را در micro: bit خود بارگذاری کنید. نیازی به نرم افزار خاصی نیست و ممکن است از ویرایشگر MakeCode آنلاین برای ویرایش اسکریپت استفاده کنید.
مرحله 1: مواد مورد استفاده
- میکرو: بیت ، معدن را از پیمورونی گرفت - 13.50 پوند
- Kitronic Edge Connector for micro: bit - via Pimoroni - 5 GBP ، توجه: Pimorini در حال حاضر یک کانکتور لبه ورق دوست دار به نام pin: bit با پین در درگاه های I2C ارائه می دهد.
- 2 نوار هدر 2 پین
- باتری یا LiPo برای میکرو: بیت (ضروری نیست ، اما مفید است) ، کابل باتری با سوئیچ (dito) - Pimoroni
- کابل های بلوز برای اتصال سنسورها به کانکتور Edge
- کابل های بلوز بلند (!) برای سنسور ، حداقل به اندازه سرنگ ، f/f یا f/m
- سنسور فشار و دما BMP280 - Banggood - 5 دلار آمریکا برای سه واحد محدوده اندازه گیری برای این سنسور بین 550 تا 1537 hPa است.
- سرنگ کاتتر پلاستیکی 150 میلی لیتری با واشر لاستیکی - آمازون یا مغازه های سخت افزار و باغ - حدود 2 - 3 دلار آمریکا
- چسب حرارتی/تپانچه چسب داغ
- آهن لحیم کاری
- یک کامپیوتر با Arduino IDE نصب شده است
مرحله 2: دستورالعمل های مونتاژ
سرصفحه های لحیم کاری به شکست سنسور BMP280.
دو سربرگ 2 پینی را به پین 19 و پین 20 کانکتور Edge لحیم کنید (تصویر را ببینید).
micro: bit را به کانکتور Edge و رایانه خود وصل کنید.
نرم افزار و micro: bit را طبق دستورالعمل Adafruit micro: bit تهیه کنید. آنها را به طور کامل بخوانید.
کتابخانه های مورد نیاز را بر روی Arduino IDE نصب کنید.
اسکریپت BMP280 پیوست شده را در مرحله بعد باز کنید.
سنسور را به کانکتور Edge وصل کنید. GND تا 0V ، VCC تا 3V ، SCL به پین 19 ، SDA تا پین 20.
اسکریپت را در micro: bit بارگذاری کنید.
بررسی کنید که سنسور داده های معقول را ارائه می دهد ، مقادیر فشار باید در حدود 1020 hPa باشد که روی مانیتور سریال نمایش داده می شود. در این صورت ، ابتدا کابل ها و اتصالات را بررسی کنید ، سپس نصب نرم افزار را انجام دهید و آن را اصلاح کنید.
میکرو: بیت را خاموش کنید ، سنسور را بردارید.
کابل های بلوز بلند را از طریق خروجی سرنگ عبور دهید. در صورت نیاز به باز کردن دهانه مراقب باشید که کابل ها خراب نشوند.
سنسور را به کابل های بلوز وصل کنید. بررسی کنید که اتصالات صحیح و خوب هستند. اتصال به میکرو: bit.
بررسی کنید که سنسور به درستی کار می کند. با کشیدن کابل ها ، سنسور را به بالای سرنگ منتقل کنید.
پیستون را وارد کرده و کمی بیشتر از حالت استراحت مورد نظر (100 میلی لیتر) حرکت دهید.
چسب داغ را به انتهای خروجی سرنگ اضافه کنید و پیستون را کمی به عقب حرکت دهید. بررسی کنید که آیا سرنگ هوا بسته است ، در غیر این صورت چسب داغ بیشتری به آن اضافه کنید. بگذارید چسب داغ سرد شود.
دوباره بررسی کنید که سنسور کار می کند. اگر پیستون را حرکت می دهید ، اعداد در مانیتور سریال و صفحه نمایش micro: bit باید تغییر کند.
در صورت لزوم ، می توانید حجم سرنگ را با فشار دادن آن در نزدیکی واشر و حرکت دادن پیستون تنظیم کنید.
مرحله 3: کمی نظریه و برخی اندازه گیری های عملی
با دستگاه توصیف شده در اینجا ، می توانید ارتباط فشرده سازی و فشار را در آزمایشات ساده فیزیک نشان دهید. از آنجا که سرنگ مقیاس "میلی لیتر" روی آن می آید ، حتی آزمایشات کمی نیز آسان است.
نظریه پشت آن: طبق قانون بویل ، [حجم * فشار] یک مقدار ثابت برای یک گاز در دمای معین است.
این بدان معناست که اگر حجم معینی از گاز را N-fold فشرده کنید ، یعنی حجم نهایی 1/N برابر مقدار اصلی است ، فشار آن N-برابر می شود ، مانند: P0*V0 = P1*V1 = منفی t. برای اطلاعات بیشتر ، لطفاً به مقاله ویکی پدیا در مورد قوانین گاز نگاه کنید. در سطح دریا ، فشار فشار معمولاً در محدوده 1010 hPa (هکتو پاسکال) است.
بنابراین شروع در نقاط استراحت مانند V0 = 100 میلی لیتر و 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 hPa یا 50 ، 000 Pa است. برای سرنگ من ، قطر (d) پیستون حدود 4 سانتی متر یا 0.04 متر است.
حالا می توانید نیروی لازم برای نگه داشتن پیستون در آن موقعیت را محاسبه کنید. با توجه به P = F/A (فشار بر نیروی تقسیم بر مساحت است) ، یا تبدیل F = P*A. واحد SI نیرو "نیوتن" N ، طول "متر" متر ، و 1 Pa 1N در متر مربع است. برای یک پیستون گرد ، مساحت را می توان با استفاده از A = ((d/2)^2)*pi محاسبه کرد ، که 0.00125 متر مربع برای سرنگ من می دهد. بنابراین
50 ، 000 Pa * 0.00125 m^2 = 63 N.
بر روی زمین ، 1 N با وزن 100 گرم ارتباط دارد ، بنابراین 63 N برابر با نگه داشتن وزن 6.3 کیلوگرم است.
این را می توان به راحتی با استفاده از ترازو بررسی کرد. سرنگ را با پیستون بر روی ترازو فشار دهید تا فشار 1500 hPa برسد ، سپس مقیاس را بخوانید. یا فشار دهید تا مقیاس حدود 6-7 کیلوگرم نشان داده شود ، سپس دکمه "A" را فشار داده و مقدار نمایش داده شده روی ماتریس LED میکرو: بیت را بخوانید. همانطور که معلوم شد ، برآورد بر اساس محاسبات فوق بد نبود. فشار کمی بالاتر از 1500 hPa با "وزن" نمایش داده شده در حدود 7 کیلوگرم در مقیاس بدن مرتبط است (تصاویر را ببینید). همچنین می توانید این مفهوم را تغییر دهید و از دستگاه برای ایجاد یک مقیاس دیجیتالی ساده بر اساس اندازه گیری فشار استفاده کنید.
لطفاً توجه داشته باشید که حد بالایی سنسور حدود 1540 hPa است ، بنابراین هر فشاری بالاتر از این اندازه گیری نمی شود و ممکن است به سنسور آسیب برساند.
علاوه بر اهداف آموزشی ، ممکن است از سیستم برای برخی از برنامه های کاربردی در دنیای واقعی نیز استفاده شود ، زیرا این امر به شما امکان می دهد تا نیروهایی را که سعی می کنند پیستون را به این طرف و آن طرف حرکت دهند ، اندازه گیری کمی کنیم. بنابراین می توانید وزنه ای را که روی پیستون قرار می گیرد یا ضربه ای که به پیستون وارد می شود را اندازه گیری کنید. یا سوئیچ بسازید که چراغ یا زنگ را فعال می کند یا بعد از رسیدن به مقدار آستانه صدا را پخش می کند. یا می توانید یک ساز موسیقی بسازید که فرکانس را بسته به قدرت نیروی وارد شده به پیستون تغییر می دهد. یا از آن به عنوان کنترل کننده بازی استفاده کنید. از تخیل و بازی خود استفاده کنید!
مرحله 4: اسکریپت MicroPython
پیوست اسکریپت BMP280 من را برای micro: bit پیدا می کنید. این یک مشتق از یک اسکریپت BMP/BME280 است که من در جایی در وب سایت Banggood یافتم ، همراه با کتابخانه Microbit Adafruit. اولین مورد به شما امکان می دهد از سنسور Banggood استفاده کنید ، دومی کار با صفحه نمایش LED 5x5 را ساده می کند. از توسعه دهندگان هر دو تشکر می کنم.
به طور پیش فرض ، اسکریپت نتایج اندازه گیری فشار را در 5 مرحله بر روی نمایشگر LED micro: bit در 5: 5 نمایش می دهد و به شما اجازه می دهد تغییرات را با تاخیر کمی مشاهده کنید. مقادیر دقیق را می توان به طور موازی در مانیتور سریال Arduino IDE نمایش داد ، یا نمودار دقیق تری را می توان پلاتر اصلی IDE آردوینو نشان داد.
اگر دکمه A را فشار دهید ، مقادیر فشار اندازه گیری شده بر روی آرایه LED میکرو: بیت 5x5 نمایش داده می شود. اگر دکمه B را فشار دهید ، مقادیر دما نمایش داده می شود. در حالی که این امر به شما امکان می دهد داده های دقیق را بخوانید ، چرخه های اندازه گیری را به میزان قابل توجهی کند می کند.
من مطمئن هستم که روشهای بسیار ظریفی برای برنامه ریزی وظایف و بهبود اسکریپت وجود دارد. از هرگونه کمکی استقبال می شود.
#شامل xxx
#شامل میکروبیت Adafruit_Microbit_Matrix ؛ #تعریف BME280_ADDRESS 0x76 unsigned long 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؛ int value1؛ int value2؛ int value3 ؛ int value4 ؛ // ---------------------------------------------------- ------------------------------------------------------ ------------------ void setup () {uint8_t osrs_t = 1؛ // نمونه برداری بیش از حد دما x 1 uint8_t osrs_p = 1؛ // نمونه گیری بیش از حد فشار x 1 uint8_t osrs_h = 1؛ // نمونه برداری بیش از حد رطوبت x 1 حالت uint8_t = 3؛ // حالت عادی uint8_t t_sb = 5؛ // Tstandby 1000ms uint8_t filter = 0؛ // فیلتر کردن uint8_t spi3w_fa = 0؛ // SPI 3 سیمه uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | حالت uint8_t config_reg = (t_sb << 5) | (فیلتر << 2) | spi3w_fa ؛ 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]") ؛ // سرصفحه 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؛ unsigned long int press_cal، hum_cal؛ int N ؛ // مقادیر آستانه برای نمایش ماتریس LED ، در hPa double max_0 = 1100 ؛ دو برابر max_1 = 1230؛ max max_2 = 1360؛ max max_3 = 1490؛ readData ()؛ 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 ("PRESS:") ؛ 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 تعریف می شوند اگر (press_act> max_3) {(N = 0) ؛ // ردیف بالا} else if (press_act> max_2) {(N = 1) ؛ } else if (press_act> max_1) {(N = 2)؛ } else if (press_act> max_0) {(N = 3) ؛ } else {(N = 4)؛ // ردیف پایه} // Serial.println (N)؛ // برای اهداف توسعه // microbit.print (N)؛ // به عنوان خط // microbit.drawLine (N ، 0 ، 0 ، 4 ، LED_ON) ؛ // تغییر مقادیر به خط بعدی value4 = value3؛ ارزش 3 = ارزش 2 ؛ ارزش 2 = ارزش 1 ؛ ارزش 1 = ارزش 0 ؛ مقدار 0 = N ؛ // رسم تصویر ، ستون به ستون microbit.drawPixel (0 ، مقدار 0 ، LED_ON) ؛ // به عنوان پیکسل: ستون ، ردیف. 0 ، 0 سمت چپ microbit.drawPixel (1 ، مقدار 1 ، LED_ON) ؛ microbit.drawPixel (2 ، مقدار 2 ، LED_ON) ؛ microbit.drawPixel (3 ، value3 ، 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 ()؛ سیم. درخواست از (BME280_ADDRESS ، 24) ؛ // رفع 2014/در حالی که (Wire.available ()) {data = Wire.read ()؛ من ++ ؛ } Wire.beginTransmission (BME280_ADDRESS) ؛ // افزودن 2014/Wire.write (0xA1) ؛ // افزودن 2014/Wire.endTransmission () ؛ // اضافه کردن 2014/Wire.requestFrom (BME280_ADDRESS، 1) ؛ // اضافه کردن 2014/data = Wire.read ()؛ // افزودن 2014/i ++ ؛ // افزودن 2014/Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xE1) ؛ Wire.endTransmission ()؛ سیم. درخواست از (BME280_ADDRESS، 7) ؛ // رفع 2014/در حالی که (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 ()؛ }
void readData ()
{int i = 0؛ uint32_t data [8]؛ Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xF7) ؛ Wire.endTransmission ()؛ سیم. درخواست از (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] ؛ }
امضا طولانی calibration_T (امضای int طولانی adc_T)
{sign long int var1، var2، T؛ var1 = ((((adc_T >> 3) - ((int long sign) dig_T1 11 ؛ var2 = ((((((adc_T >> 4) - ((int طولانی امضا شده) dig_T1)) *) ((adc_T >> 4) - ((int long sign) dig_T1))) >> 12) * ((int long sign) dig_T3)) >> 14؛ t_fine = var1 + var2؛ T = (t_fine * 5 + 128) >> 8؛ بازگشت T؛} unsigned long int calibration_P (long int int adc_P) {sign long int var1، var2؛ int طولانی بدون علامت P؛ var1 = (((sign long int) t_fine) >> 1) - (int long sign) 64000؛ var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((int long sign) dig_P6) ؛ var2 = var2 + ((var1 * ((int long sign) dig_P5)) 2) + (((با امضای long int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((sign long int) dig_P2) * var1) >> 1)) >> 18؛ var1 = ((((32768+var1))*((با int طولانی امضا شده) dig_P1)) >> 15)؛ if (var1 == 0) {return 0؛ } P = (((int طولانی بدون امضا) (((int طولانی امضا شده) 1048576) -adc_P)-(var2 >> 12)))*3125؛ if (P <0x80000000) {P = (P << 1) / ((int طولانی بدون امضا) var1) ؛ } else {P = (P / (int طولانی بدون علامت) var1) * 2؛ } var1 = (((sign long int) dig_P9) * ((int long sign) (((P >> 3) * (P >> 3)) >> 13))] 12؛ var2 = (((int long sign) (P >> 2)) * ((int long sign) dig_P8)) >> 13؛ P = (int طولانی بدون امضا) ((int طولانی امضا شده) P + ((var1 + var2 + dig_P7) >> 4)) ؛ بازگشت P ؛ } unsigned long int calibration_H (sign long int adc_H) {sign long int v_x1؛ v_x1 = (t_fine - ((sign long int) 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) + ((با امضای long 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)؛ بازگشت (int طولانی بدون علامت) (v_x1 >> 12)؛}
مرحله 5: اسکریپت های MakeCode/JavaScript
Pimoroni به تازگی enviro: bit را منتشر کرده است که دارای سنسور فشار BMP280 ، سنسور نور/رنگ و میکروفون MEMS است.آنها همچنین یک MicroPython و یک کتابخانه MakeCode/JavaScript ارائه می دهند.
من بعداً برای نوشتن یک اسکریپت MakeCode برای سنسور فشار استفاده کردم. فایل هگز مربوطه را می توان مستقیماً در micro: bit خود کپی کرد. کد زیر نمایش داده می شود و ممکن است با استفاده از ویرایشگر آنلاین MakeCode اصلاح شود.
این یک نسخه از متن برای micro: bit dive-o-meter است. به طور پیش فرض اختلاف فشار را به صورت نمودار میله ای نمایش می دهد. با فشار دادن دکمه A فشار مرجع تنظیم می شود ، با فشار دادن دکمه B تفاوت بین فشار واقعی و مرجع در hPa نمایش داده می شود.
علاوه بر نسخه بارکد اصلی ، شما همچنین یک "X" ، یک نسخه متقاطع و یک نسخه "L" پیدا می کنید که برای سهولت خواندن مفید است.
بگذار ستون = 0
let stay = 0 let Row = 0 let Meter = 0 let Delta = 0 let Ref = 0 let Is = 0 Is = 1012 basic.showLeds (` # # # # # # # #. # # # # # # #… # # # # # # #) Ref = 1180 basic.clearScreen () basic.forever (() => {basic.clearScreen () if (input.buttonIsPressed (Button. A)) {Ref = envirobit.getPressure () Basic.showLeds (` # # #. #. #. #. # # # # #. #. #. #. #. #`) Basic.pause (1000)} else if (input.buttonIsPressed (Button. B)) {basic.showString ("" + Delta + "hPa") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) اگر (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {Row = 1} else {ردیف = 0} باقی مانده = متر - ردیف * 100 اگر (بماند> = 80) {ستون = 4} دیگری اگر (بماند> = 60) {ستون = 3} دیگری اگر (بماند> = 40) {ستون = 2 } else if (باقی بماند = = 20) {Column = 1} else {Column = 0} for (let ColA = 0؛ ColA <= Column؛ ColA ++) {led.plot (ColA، Row)} Basic.pause (500)}})
توصیه شده:
اندازه گیری زمان (ساعت اندازه گیری نوار): 5 مرحله (همراه با تصاویر)
Time Time (Tape Measure Clock): برای این پروژه ، ما (Alex Fiel & amp؛ Anna Lynton) یک ابزار اندازه گیری روزانه تهیه کردیم و آن را به ساعت تبدیل کردیم! طرح اولیه این بود که یک نوار اندازه گیری موجود را موتور کنید. در ساخت آن ، ما تصمیم گرفتیم که راحت تر بتوانیم پوسته خودمان را ایجاد کنیم
میکرو: ربات - میکرو: بیت: 20 مرحله
Micro: Bot - Micro: Bit: برای خود میکرو بسازید: Bot! این یک ربات Micro: Bit با سونار برای رانندگی مستقل است ، یا اگر دو Micro دارید: Bits ، رادیو کنترل رانندگی
سرعت باد را با مدارهای میکرو: بیت و Snap: 10 مرحله اندازه گیری کنید
اندازه گیری سرعت باد با میکرو: بیت و مدارهای ضربه محکم و ناگهانی: داستان همانطور که من و دخترم در حال کار بر روی بادسنج پروژه آب و هوا بودیم ، تصمیم گرفتیم با درگیر کردن برنامه نویسی ، سرگرمی را افزایش دهیم. بادسنج چیست؟ احتمالاً از شما می پرسید & quot؛ بادسنج & quot؛ است. خوب ، این دستگاه اندازه گیری باد است
سه فشار فشار - خاموش فشار مدارهای اتصال: 3 مرحله
سه Push ON-Push OFF Latching Circuits: فلیپ فلاپ یا لچ مداری است که دارای دو حالت پایدار است و می توان از آن برای ذخیره اطلاعات حالت استفاده کرد. مدار را می توان با اعمال سیگنال (در این مورد ، با فشار دادن یک دکمه) تغییر حالت داد. در اینجا ، من سه روش مختلف برای نشان دادن
اندازه گیری نور و رنگ با Pimoroni Enviro: بیت برای میکرو: بیت: 5 مرحله
اندازه گیری نور و رنگ با Pimoroni Enviro: bit for the Micro: bit: من قبلاً روی برخی از دستگاه ها کار می کردم که اندازه گیری نور و رنگ را امکان پذیر می کند و ممکن است در مورد نظریه ای که در پشت چنین اندازه گیری هایی وجود دارد ، دستورالعمل های آموزشی اینجا و اینجا را بیابید. اخیراً Enviro: bit ، افزونه ای برای متر