Mundarija:

Mikrofon yordamida bosimni o'lchang: bit: 5 qadam (rasmlar bilan)
Mikrofon yordamida bosimni o'lchang: bit: 5 qadam (rasmlar bilan)

Video: Mikrofon yordamida bosimni o'lchang: bit: 5 qadam (rasmlar bilan)

Video: Mikrofon yordamida bosimni o'lchang: bit: 5 qadam (rasmlar bilan)
Video: Mavzu.Qattiq jismlarning zichligini shtangensirqul va mikrometr yordamida aniqlash 2024, Noyabr
Anonim
Mikro: bit bilan bosimni o'lchang
Mikro: bit bilan bosimni o'lchang
Mikro: bit bilan bosimni o'lchang
Mikro: bit bilan bosimni o'lchang

Quyidagi ko'rsatmalarda BMP280 bosim/harorat sensori bilan birgalikda bosim o'lchovlarini bajarish va Boyl qonunini namoyish qilish uchun qurilishi oson va arzon qurilma tasvirlangan.

Holbuki, bu shprits/bosim sensori kombinatsiyasi mening oldingi ko'rsatmalarimdan birida tasvirlangan bo'lsa, micro: bit bilan kombinatsiya yangi imkoniyatlar beradi, masalan. sinf xonalari loyihalari uchun.

Bundan tashqari, mikro: bit I2C bilan ishlaydigan sensor bilan birgalikda qo'llaniladigan ilovalar tavsiflari soni hozircha cheklangan. Umid qilamanki, bu ko'rsatma boshqa loyihalar uchun boshlang'ich nuqtasi bo'lishi mumkin.

Qurilma Arduino IDE ning ketma -ket monitorini yoki ketma -ket plotter funktsiyalaridan foydalangan holda, havo bosimining miqdoriy o'lchovlarini bajarishga va natijalarni mikro: bitli LED massivida yoki ulangan kompyuterda ko'rsatishga imkon beradi. Bunga qo'shimcha ravishda sizda teskari aloqa mavjud, chunki siz shpritsning pistonini o'zingiz bosasiz yoki tortasiz va shu orqali kerakli quvvatni sezasiz.

Odatiy bo'lib, displey bosimni LED matritsasida ko'rsatilgan darajali indikator orqali baholashga imkon beradi. Arduino IDE -ning ketma -ket chizig'i xuddi shunday qilishga imkon beradi, lekin aniqligi ancha yaxshi (videoga qarang). Yana batafsil echimlar ham mavjud, masalan. ishlov berish tilida. A yoki B tugmachalarini bosgandan so'ng, siz LED matritsasida bosim va haroratning aniq o'lchangan qiymatlarini ko'rsatishingiz mumkin, lekin Arduino IDE -ning ketma -ket monitorining qiymati tezroq real vaqt rejimida ko'rsatiladi.

Umumiy xarajatlar va qurilmani yaratish uchun zarur bo'lgan texnik ko'nikmalar ancha past, shuning uchun o'qituvchi nazorati ostida o'tkaziladigan yaxshi sinf loyihasi bo'lishi mumkin. Bundan tashqari, qurilma fizikaga yo'naltirilgan STEM loyihalari uchun vosita bo'lishi mumkin yoki kuch yoki og'irlik raqamli qiymatga aylanadigan boshqa loyihalarda qo'llanilishi mumkin.

Bu tamoyil juda oddiy mikrosxemani yaratishda ishlatilgan: siz sho'ng'in qanchalik chuqurligini o'lchaydigan asbob.

2018 yil 27-may:

Pimoroni BMP280 sensori uchun MakeCode kutubxonasini ishlab chiqqach, bu menga bu erda tasvirlangan qurilma uchun ishlatiladigan skriptni ishlab chiqish imkoniyatini berdi. Skript va unga mos keladigan HEX-faylni ushbu ko'rsatmaning oxirgi bosqichida topish mumkin. Uni ishlatish uchun HEX faylini micro: bit -ga yuklang. Maxsus dasturiy ta'minotga hojat yo'q, va siz skriptni tahrir qilish uchun onlayn MakeCode muharriridan foydalanishingiz mumkin.

1 -qadam: Ishlatilgan materiallar

Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
Ishlatilgan materiallar
  • Mikro: bit, meniki Pimoronidan - 13,50 GBP
  • Kitronic Edge Connector for micro: bit - Pimoroni orqali - 5 GBP, Izoh: Pimorini endi I2C portlaridagi pinli: pin deb nomlangan non paneli uchun qulay bo'lgan ulagichni taklif qiladi.
  • 2 x 2 pinli sarg'ish chiziqlar
  • Micro uchun batareya yoki LiPo: bit (kerak emas, lekin foydali), kalitli batareya kabeli (dito) - Pimoroni
  • Sensorlarni Edge ulagichiga ulash uchun o'tish kabellari
  • Sensor uchun uzun (!) o'tish kabellari, hech bo'lmaganda shprits, f/f yoki f/m
  • BMP280 bosim va harorat sensori - Banggood - 3 birlik uchun 5 AQSh dollari Ushbu sensorning o'lchov diapazoni 550 dan 1537 hPa gacha.
  • Rezina qistirmali 150 ml plastik kateterli shprits - Amazon yoki uskuna va bog 'do'konlari - taxminan 2-3 AQSh dollari
  • issiq elim/issiq yopishtiruvchi to'pponcha
  • lehim temir
  • Arduino IDE o'rnatilgan kompyuter

2 -qadam: O'rnatish bo'yicha ko'rsatmalar

O'rnatish bo'yicha ko'rsatmalar
O'rnatish bo'yicha ko'rsatmalar
O'rnatish bo'yicha ko'rsatmalar
O'rnatish bo'yicha ko'rsatmalar
O'rnatish bo'yicha ko'rsatmalar
O'rnatish bo'yicha ko'rsatmalar

Lehim sarlavhalari BMP280 sensori uzilishiga.

Edge ulagichining ikkita 2 pinli sarlavhasini pin 19 va pin 20 ulagichlariga lehimlang (rasmga qarang).

Micro: bitni Edge ulagichiga va kompyuteringizga ulang.

Adafruit micro: bit yo'riqnomasida tasvirlanganidek, dasturiy ta'minot va mikro: bitni tayyorlang. Ularni yaxshilab o'qing.

Arduino IDE -ga kerakli kutubxonalarni o'rnating.

Keyingi bosqichda biriktirilgan BMP280 skriptini oching.

Sensorni Edge ulagichiga ulang. GND - 0V, VCC - 3V, SCL - 19 pin, SDA - 20 pin.

Skriptni micro: bit -ga yuklang.

Sensor oqilona ma'lumot berishini tekshiring, bosim qiymatlari ketma -ket monitorda ko'rsatiladigan 1020 gPa atrofida bo'lishi kerak. Agar kerak bo'lsa, avval kabellar va ulanishlarni tekshiring, so'ngra dasturiy ta'minot o'rnatilishi va to'g'riligi.

Mikro: bitni o'chiring, sensorni olib tashlang.

Uzoq o'tish kabellarini shpritsning chiqish joyidan o'tkazing. Agar siz teshikni kengaytirishingiz kerak bo'lsa. Ehtiyot bo'ling, kabellar shikastlangan.

Sensorni o'tish kabellariga ulang. Ulanishlarning to'g'ri va yaxshi ekanligini tekshiring. Micro: bit -ga ulaning.

Sensor to'g'ri ishlayotganligini tekshiring. Ehtiyotkorlik bilan kabellarni torting, sensorni shpritsning yuqori qismiga o'tkazing.

Pistonni joylashtiring va uni kerakli dam olish joyidan (100 ml) biroz uzoqroqqa siljiting.

Shpritsning uchiga issiq elim qo'shing va pistonni biroz orqaga torting. Shpritsning havo o'tkazmaydigan yopiqligini tekshiring, aks holda ko'proq issiq elim qo'shing. Issiq elimni sovutib qo'ying.

Sensor ishlayotganligini yana tekshiring. Agar siz pistonni siljitsangiz, ketma -ket monitor va micro: bit displeyidagi raqamlar o'zgarishi kerak.

Agar kerak bo'lsa, siz shpritsning hajmini qistirmaga yaqin qisib, pistonni siljitib sozlashingiz mumkin.

3 -qadam: Bir oz nazariya va ba'zi amaliy o'lchovlar

Bir oz nazariya va ba'zi amaliy o'lchovlar
Bir oz nazariya va ba'zi amaliy o'lchovlar
Bir oz nazariya va ba'zi amaliy o'lchovlar
Bir oz nazariya va ba'zi amaliy o'lchovlar

Bu erda tasvirlangan qurilma yordamida siz oddiy fizika tajribalarida siqish va bosimning o'zaro bog'liqligini ko'rsatishingiz mumkin. Shpritsda "ml" o'lchovi bo'lgani uchun, hatto miqdoriy tajribalarni ham bajarish oson.

Buning nazariyasi: Boyl qonuniga ko'ra, [Volume * Pressure] - ma'lum bir haroratdagi gaz uchun doimiy qiymat.

Bu shuni anglatadiki, agar siz ma'lum hajmdagi gazni N marta siqsangiz, ya'ni yakuniy hajmi asl nusxaning 1/N barobariga teng bo'lsa, uning bosimi N barobar oshadi, masalan: P0*V0 = P1*V1 = minus t. Qo'shimcha ma'lumot olish uchun, iltimos, gaz qonunlari haqidagi Vikipediyadagi maqolani ko'rib chiqing. Dengiz sathida barometrik bosim odatda 1010 gPa (Paso gektosi) oralig'ida bo'ladi.

Shunday qilib, masalan, dam olish joylaridan boshlab. V0 = 100 ml va P0 = 1000 gPa, havoning taxminan 66 ml gacha siqilishi (ya'ni V1 = 2/3 * V0) taxminan 1500 gPa bosimga olib keladi (P0 = P1 = 3/2). Pistonni 125 ml ga (5/4 barobar) tortish natijasida taxminan 800 gPa (4/5 bosim) bosim hosil bo'ladi. O'lchovlar bunday oddiy qurilma uchun hayratlanarli darajada aniq.

Qurilma shpritsdagi nisbatan kichik miqdordagi havoni siqish yoki kengaytirish uchun qancha kuch sarflanishi kerakligi haqida to'g'ridan -to'g'ri haptik taassurot qoldirishga imkon beradi.

Lekin biz ham ba'zi hisob -kitoblarni amalga oshirishimiz va ularni eksperimental tarzda tekshirishimiz mumkin. Faraz qilaylik, biz havoni 1500 hPa ga, bazal barometrik bosim 1000 gPa ga siqamiz. Shunday qilib, bosim farqi 500 gPa yoki 50 000 Pa. Mening shpritsim uchun pistonning diametri (d) taxminan 4 sm yoki 0,04 metrni tashkil qiladi.

Endi siz pistonni shu holatda ushlab turish uchun zarur bo'lgan kuchni hisoblashingiz mumkin. Berilgan P = F/A (Bosim maydonga bo'linadi) yoki o'zgartirilgan F = P*A. SI kuch birligi "Nyuton" N, uzunligi "Metr" m uchun va 1 Pa kvadrat metr uchun 1N. Dumaloq piston uchun maydonni A = ((d/2)^2)*pi yordamida hisoblash mumkin, bu mening shpritsim uchun 0,00125 kvadrat metrni beradi. Shunday qilib

50 000 Pa * 0,00125 m^2 = 63 N.

Er yuzida 1 N 100 gramm vaznga to'g'ri keladi, shuning uchun 63 N 6,3 kg vaznga teng.

Buni o'lchov yordamida osongina tekshirish mumkin. Piston bilan shpritsni shkalaga suring, bosim 1500 gPa ga yetguncha, shkalani o'qing. Yoki o'lchov taxminan 6-7 kg ko'rsatilguncha bosing, so'ng "A" tugmasini bosing va micro: bit LED matritsasida ko'rsatilgan qiymatni o'qing. Ma'lum bo'lishicha, yuqoridagi hisob -kitoblarga asoslangan baho yomon emas edi. Bosim 1500 gPa dan biroz yuqoriroq, tana vazni bo'yicha taxminan 7 kg bo'lgan "og'irlik" bilan bog'liq (rasmlarga qarang). Shuningdek, siz ushbu kontseptsiyani o'zgartirib, qurilmani bosim o'lchovlariga asoslangan oddiy raqamli o'lchovni yaratish uchun ishlatishingiz mumkin.

Shuni yodda tutingki, sensorning yuqori chegarasi taxminan 1540 gPa ni tashkil qiladi, shuning uchun uning ustidagi bosimni o'lchab bo'lmaydi va sensorga zarar etkazishi mumkin.

Ta'lim maqsadlari bilan bir qatorda, bu tizimni haqiqiy dunyodagi ba'zi ilovalar uchun ham ishlatish mumkin, chunki u pistonni u yoki bu tomonga siljitmoqchi bo'lgan kuchlarni miqdoriy jihatdan o'lchash imkonini beradi. Shunday qilib, siz pistonga qo'yilgan og'irlikni yoki pistonga tushadigan zarba kuchini o'lchashingiz mumkin. Yoki ma'lum bir chegara qiymatiga etib kelgandan so'ng, chiroqni yoki signalni yoqadigan yoki ovoz chiqaradigan kalitni yarating. Yoki siz pistonga qo'llaniladigan kuch kuchiga qarab chastotani o'zgartiradigan musiqa asbobini yasashingiz mumkin. Yoki uni o'yin boshqaruvchisi sifatida ishlating. Tasavvuringizdan foydalaning va o'ynang!

4 -qadam: MicroPython skript

Siz BMP280 skriptini micro: bit uchun topasiz. Bu men Banggood veb -saytidan Adafruit -ning Microbit kutubxonasi bilan birlashtirilgan BMP/BME280 skriptining hosilasi. Birinchisi Banggood sensoridan foydalanish imkonini beradi, ikkinchisi 5x5 LED displey bilan ishlashni osonlashtiradi. Ikkalasini ham ishlab chiquvchilarga minnatdorchilik bildiraman.

Odatiy bo'lib, skript bosimni o'lchash natijalarini 5 bosqichda micro: bit 5x5 LED displeyida ko'rsatadi, bu esa o'zgarishlarni biroz kechikish bilan ko'rish imkonini beradi. Aniq qiymatlarni Arduino IDE ketma -ket monitorida parallel ravishda ko'rsatish mumkin yoki Arduino IDE ning seral chizgichini batafsilroq ko'rsatish mumkin.

Agar siz A tugmachasini bosgan bo'lsangiz, o'lchangan bosim qiymatlari mikro: bitning 5x5 LEDli massivida ko'rsatiladi. Agar siz B tugmachasini bosgan bo'lsangiz, harorat qiymatlari ko'rsatiladi. Bu aniq ma'lumotlarni o'qishga imkon beradigan bo'lsa -da, o'lchov davrlarini sezilarli darajada sekinlashtiradi.

Ishonchim komilki, vazifalarni dasturlash va skriptni takomillashtirishning yanada oqilona usullari mavjud. Har qanday yordam xush kelibsiz.

#xxx qo'shing

#Adafruit_Microbit_Matrix mikrobitini qo'shing; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; long int t_fine imzolangan; 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; // o'lchangan qiymatlar uchun idlar int value0; int qiymati 1; int qiymati 2; int qiymati 3; int qiymati 4; // ------------------------------------------------ -------------------------------------------------- ------------------ void setup () {uint8_t osrs_t = 1; // Haddan tashqari namuna olish x 1 uint8_t osrs_p = 1; // Haddan tashqari namuna olish x 1 uint8_t osrs_h = 1; // Namlikdan ortiqcha namuna olish x 1 uint8_t rejimi = 3; // Oddiy rejim uint8_t t_sb = 5; // Tstandby 1000ms uint8_t filter = 0; // Filtrni o'chiring uint8_t spi3w_en = 0; // 3-simli SPI o'chirish uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | rejim; uint8_t config_reg = (t_sb << 5) | (filtr << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMod (PIN_BUTTON_A, INPUT); pinMod (PIN_BUTTON_B, INPUT); Serial.begin (9600); // Serial.println ("Harorat [daraja C]"); // Serial.print ("\ t"); Serial.print ("Bosim [hPa]"); // sarlavha Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); kechikish (1000); } // ----------------------------------------------- -------------------------------------------------- -------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; long int temp_cal imzolangan; imzosiz uzoq int press_cal, hum_cal; int N; // LED matritsali displey uchun pol qiymatlarini o'rnating, hPa dual max_0 = 1100; er -xotin max_1 = 1230; er -xotin max_2 = 1360; er -xotin max_3 = 1490; readData (); temp_kal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); hum_cal = kalibrlash_H (hum_raw); temp_act = (ikki marta) temp_cal / 100.0; press_act = (ikki marta) press_cal / 100.0; hum_act = (er -xotin) hum_cal / 1024.0; microbit.clear (); // LED matritsasini tiklash /* 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)) {// qiymatlarni raqamlarda ko'rsatish microbit.print doiralarini o'lchashni kechiktiradi ("T:"); microbit.print (temp_act, 1); microbit.print ("'C"); // Serial.println (""); } if if (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (press_act, 0); microbit.print ("hPa"); } else {// bosim qiymatlarini ma'lum darajada piksel yoki chiziqlar ko'rinishida ko'rsatish // 5 qadam: 1490 hPa // max_n qiymatlari bilan belgilangan chegaralar if (press_act> max_3) {(N = 0); // yuqori qator} else if if (press_act> max_2) {(N = 1); } if if (press_act> max_1) {(N = 2); } if if (press_act> max_0) {(N = 3); } boshqa {(N = 4); // tayanch qator} // Serial.println (N); // rivojlanish maqsadlari uchun // microbit.print (N); // chiziq sifatida // microbit.drawLine (N, 0, 0, 4, LED_ON); // qiymatlarni keyingi satr qiymatiga siljitish4 = qiymat3; qiymat3 = qiymat2; qiymat2 = qiymat1; qiymat1 = qiymat 0; qiymat 0 = N; // rasm chizish, ustunlar ustuni bilan microbit.drawPixel (0, value0, LED_ON); // piksel sifatida: ustun, qator. 0, 0 chap yuqori burchakdagi microbit.drawPixel (1, qiymat1, LED_ON); microbit.drawPixel (2, qiymat2, LED_ON); microbit.drawPixel (3, qiymat3, LED_ON); microbit.drawPixel (4, qiymat4, LED_ON); } // ma'lumotlarni ketma -ket monitor va ketma -ket plotterga yuborish // Serial.println (press_act); // raqamli ko'rsatish uchun ketma -ket portga qiymat (lar) yuborish, ixtiyoriy

Serial.print (press_act); // plotter uchun ketma -ket portga qiymat yuborish

// indikator chiziqlarini chizish va ko'rsatilgan qatorni tuzatish Serial.print ("\ t"); Ketma -ket chop etish (600); Serial.print ("\ t"); Serial.print (1100), Serial.print ("\ t"); Serial.println (1600); kechikish (200); // Sekundiga uch marta o'lchang} // ---------------------------------------- -------------------------------------------------- -------------------------------------------------- - // bmp/bme280 sensori uchun quyidagilar talab qilinadi, chunki u bekor bo'lganidek saqlansin readTrim () {uint8_t data [32], i = 0; // 2014 yil tuzatish/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // 2014 -yilni tuzatish (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // 2014/Wire.write -ni qo'shing (0xA1); // 2014/Wire.endTransmission () ni qo'shing; // 2014/Wire.requestFrom -ni qo'shing (BME280_ADDRESS, 1); // 2014 yil/ma'lumotlarni qo'shing = Wire.read (); // 2014/i ++ ni qo'shing; // 2014/Wire.beginTransmission (BME280_ADDRESS) ni qo'shing; Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // 2014 -yilni tuzatish (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (ma'lumotlar [1] << 8) | ma'lumotlar [0]; dig_P1 = (ma'lumotlar [7] << 8) | ma'lumotlar [6]; dig_P2 = (ma'lumotlar [9] << 8) | ma'lumotlar [8]; dig_P3 = (ma'lumotlar [11] << 8) | ma'lumotlar [10]; dig_P4 = (ma'lumotlar [13] << 8) | ma'lumotlar [12]; dig_P5 = (ma'lumotlar [15] << 8) | ma'lumotlar [14]; dig_P6 = (ma'lumotlar [17] << 8) | ma'lumotlar [16]; dig_P7 = (ma'lumotlar [19] << 8) | ma'lumotlar [18]; dig_T2 = (ma'lumotlar [3] << 8) | ma'lumotlar [2]; dig_T3 = (ma'lumotlar [5] << 8) | ma'lumotlar [4]; dig_P8 = (ma'lumotlar [21] << 8) | ma'lumotlar [20]; dig_P9 = (ma'lumotlar [23] << 8) | ma'lumotlar [22]; dig_H1 = ma'lumotlar [24]; dig_H2 = (ma'lumotlar [26] << 8) | ma'lumotlar [25]; dig_H3 = ma'lumotlar [27]; dig_H4 = (ma'lumotlar [28] << 4) | (0x0F va ma'lumotlar [29]); dig_H5 = (ma'lumotlar [30] 4) & 0x0F); // Tuzatish 2014/dig_H6 = ma'lumotlar [31]; // Tuzatish 2014/} bekorRegReg (uint8_t reg_address, uint8_t ma'lumotlar) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (ma'lumotlar); Wire.endTransmission (); }

void readData ()

{int i = 0; uint32_t ma'lumotlari [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } pres_raw = (ma'lumotlar [0] << 12) | (ma'lumotlar [1] 4); temp_raw = (ma'lumotlar [3] << 12) | (ma'lumotlar [4] 4); hum_raw = (ma'lumotlar [6] << 8) | ma'lumotlar [7]; }

long int calibration_T imzolandi (long int adc_T imzolandi)

{imzolangan long int var1, var2, T; var1 = (((((adc_T >> 3) - ((imzolangan uzoq int) dig_T1 11; var2 = {) - ((imzolangan uzun int) dig_T1))) >> 12) * ((imzolangan uzun int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; qaytish T;} belgisiz uzun int kalibratsiya_P (imzolangan uzun int adc_P) {imzolangan uzun int var1, var2; imzosiz uzun int P; var1 = (((imzolangan uzun int) t_fine) >> 1) - (imzolangan uzun int) 64000; var2 (+ (((imzolangan uzun int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + (((((imzolangan uzun int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768+var1))*((imzolangan uzoq int) dig_P1)) >> 15); if (var1 == 0) {qaytarish 0; } P = (((imzosiz uzun int) (((imzolangan uzun int) 1048576) -adc_P)-(var2 >> 12)))*3125; if (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } else {P = (P / (unsigned long int) var1) * 2; } var1 = (((imzolangan uzun int) dig_P9) * ((imzolangan uzun int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((imzolangan uzun int) (P >> 2)) * ((imzolangan uzun int) dig_P8)) >> 13; P = (imzosiz uzun int) ((imzolangan uzun int) P + ((var1 + var2 + dig_P7) >> 4)); qaytarish P; } imzosiz long int calibration_H (imzolangan long int adc_H) {imzolangan long int v_x1; v_x1 = (t_fine - ((imzolangan uzoq int) 76800)); v_x1 = ((((((adc_H << 14) -(((imzolangan uzoq int) dig_H4) 15) * ((((((((v_x1 * ((imzolangan uzun int) dig_H3)) >> 11) + ((imzolangan uzun int) 32768))) >> 10) + ((imzolangan uzun int) 2097152)) * ((imzolangan uzun int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) 7) * ((imzolangan uzoq int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); qaytish (imzosiz uzoq int) (v_x1 >> 12);}

5 -qadam: MakeCode/JavaScript skriptlari

MakeCode/JavaScript skriptlari
MakeCode/JavaScript skriptlari

Pimoroni yaqinda BMP280 bosim sensori, yorug'lik/rang sensori va MEMS mikrofoni bilan ta'minlangan muhit: bitni chiqardi. Ular, shuningdek, MicroPython va MakeCode/JavaScript kutubxonasini taklif qilishadi.

Men keyinroq bosim sensori uchun MakeCode skriptini yozdim. Tegishli o'n oltilik faylni to'g'ridan -to'g'ri micro: bit -ga nusxalash mumkin. Kod quyida ko'rsatilgan va uni MakeCode onlayn muharriri yordamida o'zgartirish mumkin.

Bu micro: bit sho'ng'in-o-metr uchun skriptning o'zgarishi. Odatiy bo'lib, u bosim farqini chiziqli grafik sifatida ko'rsatadi. A tugmachasini bosish mos yozuvlar bosimini belgilaydi, B tugmachasini bosish haqiqiy va mos yozuvlar bosimi o'rtasidagi farqni ko'rsatadi.

Shtrix -kodning asosiy versiyasidan tashqari, siz o'qishni osonlashtirish uchun mo'ljallangan "X", kesishma va "L" versiyasini ham topasiz.

ustun = 0 bo'lsin

let = 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) if (Metr> = 400) {Qator = 4} agar boshqa (Metr> = 300) {Qator = 3} boshqa bo'lsa (Metr> = 200) {Qator = 2} agar (Metr> = 100) bo'lsa {Qator = 1} else {Row = 0} qoladi = Metr - Qator * 100 agar (qolsa> = 80) {Ustun = 4} boshqa bo'lsa (qoladi> = 60) {Ustun = 3} boshqa bo'lsa (qolsa> = 40) {Ustun = 2 } else if (qolsa> = 20) {Ustun = 1} boshqa {Ustun = 0} uchun (bo'lsin ColA = 0; ColA <= Ustun; ColA ++) {led.plot (ColA, Qator)} asosiy.pauza (500)}})

Tavsiya: