Talaan ng mga Nilalaman:

Sukatin ang Presyon Sa Iyong Micro: bit: 5 Hakbang (na may Mga Larawan)
Sukatin ang Presyon Sa Iyong Micro: bit: 5 Hakbang (na may Mga Larawan)

Video: Sukatin ang Presyon Sa Iyong Micro: bit: 5 Hakbang (na may Mga Larawan)

Video: Sukatin ang Presyon Sa Iyong Micro: bit: 5 Hakbang (na may Mga Larawan)
Video: BYD TANG EV600D Самый Быстрый Электрический Полноприводный Семиместный Кроссовер 0-100Км/ч 4.4🔌В РФ 2024, Hulyo
Anonim
Sukatin ang Presyon Sa Iyong Micro: kaunti
Sukatin ang Presyon Sa Iyong Micro: kaunti
Sukatin ang Presyon Sa Iyong Micro: kaunti
Sukatin ang Presyon Sa Iyong Micro: kaunti

Ang sumusunod na itinuturo ay naglalarawan ng isang madaling bumuo at murang aparato upang magsagawa ng mga sukat ng presyon at ipakita ang batas ni Boyle, gamit ang micro: medyo kasama ng BMP280 pressure / temperatura sensor.

Sapagkat ang kumbinasyon ng syringe / pressure sensor na ito ay inilarawan sa isa sa aking nakaraang mga itinuro, ang kumbinasyon ng micro: bit ay nag-aalok ng mga bagong pagkakataon, hal. para sa mga proyekto sa silid ng klase.

Bilang karagdagan, ang bilang ng mga paglalarawan ng mga application kung saan ang micro: bit ay ginagamit kasama ang isang I2C driven sensor ay limitado sa ngayon. Inaasahan kong ang itinuro na ito ay maaaring maging isang panimulang punto para sa iba pang mga proyekto.

Pinapayagan ng aparato na magsagawa ng mga sukat na sukat sa presyon ng hangin, at upang ipakita ang mga resulta sa micro: bit LED array o sa isang konektadong computer, para sa paglaon gamit ang serial monitor o serial plotter function ng Arduino IDE. Bilang karagdagan mayroon kang isang feedback sa haptic, dahil pipilitin mo o hihilahin mo mismo ang plunger ng hiringgilya, at dito madarama ang kinakailangang lakas.

Bilang default, pinapayagan ka ng display na tantyahin ang presyon sa pamamagitan ng tagapagpahiwatig ng antas na ipinapakita sa LED matrix. Pinapayagan ng serial plotter ng Arduino IDE na gawin ang pareho, ngunit may mas mahusay na resolusyon (tingnan ang video). Ang mga mas detalyadong solusyon ay magagamit din, hal. sa wikang Pinoproseso. Maaari mo ring ipakita ang tumpak na sinusukat na mga halaga ng presyon at temperatura sa LED matrix pagkatapos ng pagpindot sa mga pindutan ng A o B ayon sa pagkakabanggit, ngunit ang serial monitor ng Arduino IDE ay mas mabilis, na pinapayagan na ipakita ang mga halaga sa malapit na real time.

Ang kabuuang mga gastos at mga kasanayang panteknikal na kinakailangan upang mabuo ang aparato ay mas mababa, kaya't ito ay maaaring maging isang magandang proyekto sa silid-aralan sa ilalim ng pangangasiwa ng isang guro. Bilang karagdagan ang aparato ay maaaring maging isang tool para sa mga proyekto ng STEM na may pagtuon sa pisika o ginamit sa iba pang mga proyekto kung saan ang isang puwersa o bigat ay dapat baguhin sa isang digital na halaga.

Ang prinsipyo ay ginamit upang makabuo ng isang napaka-simpleng micro: bit dive-o-meter, isang aparato upang masukat kung gaano kalalim ang iyong pagsisid.

Addendum 27-Mayo-2018:

Tulad ng Pimoroni ay nakabuo ng isang library ng MakeCode para sa sensor ng BMP280, Binigyan ako nito ng pagkakataon na bumuo ng isang script na gagamitin para sa aparato na inilalarawan dito. Ang script at ang kaukulang HEX-file ay matatagpuan sa huling hakbang ng itinuturo na ito. Upang magamit ito, i-load lamang ang HEX file sa iyong micro: bit. Hindi na kailangan para sa espesyal na software, at maaari mong gamitin ang online na editor ng MakeCode para sa pag-edit ng script.

Hakbang 1: Mga Ginamit na Kagamitan

Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
Mga Ginamit na Kagamitan
  • Ang isang micro: kaunti, nakuha ang minahan mula sa Pimoroni - 13.50 GBP
  • Kitronic Edge Connector para sa micro: bit - sa pamamagitan ng Pimoroni - 5 GBP, Remark: Nag-aalok ngayon ang Pimorini ng isang breadboard-friendly edge na konektor na tinatawag na pin: bit na may mga pin sa mga port ng I2C.
  • 2 x 2 pin na mga header strip
  • Baterya o LiPo para sa micro: bit (hindi kinakailangan, ngunit kapaki-pakinabang), baterya cable na may switch (dito) - Pimoroni
  • jumper cables para sa koneksyon ng mga sensor sa Edge konektor
  • mahaba (!) na mga jumper cable para sa sensor, hindi bababa sa hangarin ng syringe,, f / f o f / m
  • Ang sensor ng presyon at temperatura ng BMP280 - Banggood - 5 US $ para sa tatlong mga yunit Ang saklaw ng pagsukat para sa sensor na ito ay nasa pagitan ng 550 at 1537 hPa.
  • 150 ML plastic catheter syringe na may gasket na goma - Amazon o hardware at mga tindahan ng hardin - mga 2 - 3 US $
  • mainit na pandikit / mainit na kola pistol
  • panghinang
  • isang computer na may naka-install na Arduino IDE

Hakbang 2: Mga Tagubilin sa Assembly

Mga Tagubilin sa Assembly
Mga Tagubilin sa Assembly
Mga Tagubilin sa Assembly
Mga Tagubilin sa Assembly
Mga Tagubilin sa Assembly
Mga Tagubilin sa Assembly

Mga solder header sa breakout ng sensor ng BMP280.

Paghinang ng dalawang 2 pin na header sa pin 19 at i-pin ang 20 na konektor ng konektor ng Edge (tingnan ang imahe).

Ikonekta ang micro: kaunti sa konektor ng Edge at iyong computer.

Maghanda ng software at micro: kaunti tulad ng inilarawan sa Adafruit micro: bit na mga tagubilin. Basahing mabuti ang mga ito.

I-install ang kinakailangang mga aklatan sa Arduino IDE.

Buksan ang script na BMP280 na nakakabit sa isang susunod na hakbang.

Ikonekta ang sensor sa konektor ng Edge. Ang GND sa 0V, VCC sa 3V, SCL sa pin 19, SDA sa pin 20.

I-upload ang script sa micro: bit.

Suriin na ang sensor ay nagbibigay ng makatwirang data, ang mga halaga ng presyon ay dapat na nasa 1020 hPa, na ipinakita sa serial monitor. Kung sakali, suriin muna ang mga kable at koneksyon, pagkatapos ay i-install ang software, at iwasto.

I-off ang micro: bit, alisin ang sensor.

Patakbuhin ang mahabang mga jumper cable sa pamamagitan ng outlet ng hiringgilya. Kung sakaling maaari mong palawakin ang pagbubukas. Mag-ingat na alisin na ang mga kable ay nasisira.

Ikonekta ang sensor sa mga jumper cables. Suriin na ang mga koneksyon ay tama at mabuti. Kumonekta sa micro: bit.

Suriin na tumatakbo nang tama ang sensor. Maingat na paghila ng mga kable, ilipat ang sensor sa tuktok ng hiringgilya.

Ipasok ang plunger at ilipat ito nang kaunti pa kaysa sa nais na posisyon ng pamamahinga (100 ML).

Magdagdag ng mainit na pandikit sa dulo ng outlet ng hiringgilya at ilipat pabalik nang kaunti ang plunger. Suriin kung ang hiringgilya ay saradong masikip na naka, kung hindi man magdagdag ng mas mainit na pandikit. Hayaang palamig ang mainit na pandikit.

Suriing muli kung gumagana ang sensor. Kung ilipat mo ang plunger, ang mga numero sa serial monitor at ang micro: display ni bit ay dapat magbago.

Kung kinakailangan maaari mong ayusin ang dami ng hiringgilya sa pamamagitan ng pagpisil nito malapit sa gasket at ilipat ang plunger.

Hakbang 3: Isang Bit ng Teorya at Ilang Praktikal na Pagsukat

Kaunting teorya at ilang praktikal na sukat
Kaunting teorya at ilang praktikal na sukat
Kaunting teorya at ilang praktikal na sukat
Kaunting teorya at ilang praktikal na sukat

Sa aparato na inilarawan dito, maaari mong ipakita ang ugnayan ng compression at presyon sa simpleng mga eksperimento sa pisika. Tulad ng hiringgilya na may kasamang isang "ml"-scale dito, kahit na ang mga eksperimentong dami ay madaling maisagawa.

Ang teorya sa likod nito: Ayon sa batas ni Boyle, ang [Volume * Pressure] ay isang pare-pareho na halaga para sa isang gas sa isang naibigay na temperatura.

Nangangahulugan ito kung pinipiga mo ang isang naibigay na dami ng gas N-tiklop, ibig sabihin ang huling dami ay 1 / N tiklop ng orihinal, ang presyon nito ay tataas N-tiklop, tulad ng: P0 * V0 = P1 * V1 = cons t. Para sa karagdagang detalye, mangyaring tingnan ang artikulo sa Wikipedia tungkol sa mga batas sa gas. Sa antas ng dagat, ang presyon ng barometric ay karaniwang nasa saklaw na 1010 hPa (hecto Pascal).

Kaya't nagsisimula sa isang resting point ng hal. Ang V0 = 100 ml at P0 = 1000 hPa, isang compression ng hangin sa halos 66 ml (ibig sabihin, V1 = 2/3 * V0) ay magreresulta sa isang presyon ng halos 1500 hPa (P1 = 3/2 ng P0). Ang paghila ng plunger sa 125 ML (5/4 dami ng tiklop) ay nagreresulta sa isang presyon ng halos 800 hPa (4/5 pressure). Ang mga sukat ay nakakagulat na tiyak para sa isang simpleng aparato.

Pinapayagan ka ng aparato na magkaroon ng isang direktang impression ng haptic kung magkano ang lakas na kinakailangan upang ma-compress o mapalawak ang medyo maliit na halaga ng hangin sa hiringgilya.

Ngunit maaari rin kaming magsagawa ng ilang mga kalkulasyon at suriin ang mga ito nang eksperimento. Ipagpalagay na pinipiga natin ang hangin sa 1500 hPa, sa isang basal na barometric pressure na 1000 hPa. Kaya't ang pagkakaiba-iba ng presyon ay 500 hPa, o 50, 000 Pa. Para sa aking hiringgilya, ang diameter (d) ng piston ay tungkol sa 4 cm o 0.04 meter.

Ngayon ay maaari mong kalkulahin ang lakas na kinakailangan upang hawakan ang piston sa posisyon na iyon. Naibigay na P = F / A (Ang presyon ay Pilit na hinati sa Lugar), o binago ang F = P * A. Ang yunit ng SI para sa lakas ay "Newton" N, para sa haba na "Meter" m, at 1 Pa ay 1N bawat metro kuwadradong. Para sa isang bilog na piston, ang lugar ay maaaring kalkulahin gamit ang A = ((d / 2) ^ 2) * pi, na nagbibigay ng 0.00125 square meters para sa aking hiringgilya. Kaya

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

Sa Daigdig, ang 1 N ay magkakaugnay sa bigat na 100 gr, kaya't 63 N ay katumbas ng paghawak ng bigat na 6.3 kg.

Madali itong masuri gamit ang isang sukatan. Itulak ang hiringgilya gamit ang plunger papunta sa sukatan, hanggang sa maabot ang presyon na halos 1500 hPa, pagkatapos basahin ang sukatan. O itulak hanggang ipakita ang sukat tungkol sa 6-7 kg, pagkatapos ay pindutin ang pindutang "A" at basahin ang halagang ipinakita sa micro: bit ng LED matrix. Bilang ito ay naka-out, ang pagtatantya batay sa mga nakalkula sa itaas ay hindi masama. Isang presyon nang bahagya sa itaas ng 1500 hPa na naiugnay sa isang ipinakitang "bigat" na halos 7 kg sa isang sukat ng katawan (tingnan ang mga imahe). Maaari mo ring iikot ang konsepto na ito at gamitin ang aparato upang bumuo ng isang simpleng digital scale na batay sa mga sukat ng presyon.

Mangyaring magkaroon ng kamalayan na ang itaas na limitasyon para sa sensor ay tungkol sa 1540 hPa, kaya ang anumang presyon sa itaas na ito ay hindi masusukat at maaaring makapinsala sa sensor.

Bukod sa mga layuning pang-edukasyon, maaari ding gamitin ng isa ang system para sa ilang mga totoong aplikasyon ng mundo, dahil pinapayagan nitong sukatin ang dami ng mga puwersa na sumusubok na ilipat ang plunger sa isang paraan o sa iba pa. Kaya't maaari mong sukatin ang isang timbang na nakalagay sa plunger o isang puwersa ng epekto na tumama sa plunger. O bumuo ng isang switch na nagpapagana ng isang ilaw o buzzer o nagpapatugtog ng isang tunog matapos na maabot ang isang tiyak na halaga ng threshold. O maaari kang bumuo ng isang instrumentong pang-musika na nagbabago ng dalas depende sa lakas ng puwersa na inilapat sa plunger. O gamitin ito bilang isang game controller. Gamitin ang iyong imahinasyon at maglaro!

Hakbang 4: Ang MicroPython Script

Nakalakip na hanapin mo ang aking BMP280 script para sa micro: bit. Ito ay isang hango ng isang script na BMP / BME280 na nakita ko sa isang lugar ang website ng Banggood, na sinamahan ng Microbit library ng Adafruit. Pinapayagan ka ng una na gamitin ang sensor ng Banggood, ang pangalawa ay nagpapadali sa paghawak ng 5x5 LED display. Ang aking pasasalamat ay napupunta sa mga tagabuo ng pareho.

Bilang default, ipinapakita ng script ang mga resulta ng mga sukat ng presyon sa 5 mga hakbang sa micro: 5x5 LED display na bit, na pinapayagan na makita ang mga pagbabago nang may kaunting pagkaantala. Ang tumpak na mga halaga ay maaaring ipakita nang kahanay sa serial monitor ng Arduino IDE, o isang mas detalyadong grap ay maaaring ipakita ang taglay ng seral ng Arduino IDE.

Kung pinindot mo ang isang pindutan, ang mga sinusukat na halaga ng presyon ay ipinapakita sa micro: 5x5 LED array. Kung pinindot mo ang pindutang B, ipapakita ang mga halagang temperatura. Habang pinapayagan nitong basahin ang tumpak na data, pinapabagal nang malaki ang mga siklo ng pagsukat.

Sigurado ako na may higit pang mga matikas na paraan upang mai-program ang mga gawain at pagbutihin ang script. Anumang tulong ay maligayang pagdating.

# isama ang xxx

# isama ang Adafruit_Microbit_Matrix microbit; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; nilagdaan ng mahabang 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 maghukay_H6; // lalagyan para sa sinusukat na halaga int halaga0; int halaga1; int halaga2; int halaga3; int halaga4; // ----------------- ---- ------------------ void setup () {uint8_t osrs_t = 1; // Temperature oversampling x 1 uint8_t osrs_p = 1; // Pressure oversampling x 1 uint8_t osrs_h = 1; // Humidity oversampling x 1 uint8_t mode = 3; // Normal mode uint8_t t_sb = 5; // Tstandby 1000ms uint8_t filter = 0; // Filter off uint8_t spi3w_en = 0; // 3-wire SPI Huwag paganahin ang uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode; uint8_t config_reg = (t_sb << 5) | (salain << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // Serial.println ("Temperatura [deg C]"); // Serial.print ("\ t"); Serial.print ("Pressure [hPa]"); // header Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); pagkaantala (1000); } // -------------------------------------------- ---- -------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; nilagdaan ng mahabang int temp_cal; unsigned long int press_cal, hum_cal; int N; // itakda ang mga halaga ng threshold para sa pagpapakita ng LED matrix, sa hPa dobleng max_0 = 1100; dobleng max_1 = 1230; dobleng max_2 = 1360; dobleng max_3 = 1490; readData (); temp_cal = pagkakalibrate_T (temp_raw); press_cal = calibration_P (pres_raw); hum_cal = pagkakalibrate_H (hum_raw); temp_act = (doble) temp_cal / 100.0; press_act = (doble) press_cal / 100.0; hum_act = (doble) hum_cal / 1024.0; microbit.clear (); // reset LED matrix / * 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)) {// pagpapakita ng mga halaga sa mga pagkaantala sa pagsukat ng mga bilog na microbit.print ("T:"); microbit.print (temp_act, 1); microbit.print ("'C"); // Serial.println (""); } iba pa kung (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (press_act, 0); microbit.print ("hPa"); } iba pa {// pagpapakita ng mga halaga ng presyon bilang mga pixel o linya sa isang tiyak na antas // 5 mga hakbang: 1490 hPa // na mga threshold na tinukoy ng mga halagang max_n kung (press_act> max_3) {(N = 0); // upper row} pa kung (pindutin ang_act> max_2) {(N = 1); } iba pa kung (pindutin ang_act> max_1) {(N = 2); } iba pa kung (pindutin ang_act> max_0) {(N = 3); } iba pa {(N = 4); // base row} // Serial.println (N); // para sa mga hangarin sa pag-unlad // microbit.print (N); // as Line // microbit.drawLine (N, 0, 0, 4, LED_ON); // shift halaga sa susunod na linya na halaga4 = halaga3; halaga3 = halaga2; halaga2 = halaga1; halaga1 = halaga0; halaga0 = N; // gumuhit ng imahe, haligi ayon sa haligi microbit.drawPixel (0, halaga0, LED_ON); // bilang Pixel: haligi, hilera. 0, 0 kaliwang itaas na sulok microbit.drawPixel (1, halaga1, LED_ON); microbit.drawPixel (2, halaga2, LED_ON); microbit.drawPixel (3, value3, LED_ON); microbit.drawPixel (4, value4, LED_ON); } // magpadala ng data sa serial monitor at serial plotter // Serial.println (press_act); // send (mga) halaga sa serial port para sa pagpapakita ng bilang, opsyonal

Serial.print (press_act); // magpadala ng halaga sa serial port para sa plotter

// gumuhit ng mga linya ng tagapagpahiwatig at ayusin ang ipinakitang saklaw na Serial.print ("\ t"); Serial.print (600); Serial.print ("\ t"); Serial.print (1100), Serial.print ("\ t"); Serial.println (1600); pagkaantala (200); // Sukatin ng tatlong beses sa isang segundo} // ----------------- ---- ---- - // ang sumusunod ay kinakailangan para sa sensor ng bmp / bme280, panatilihing walang bisa ang readTrim () {uint8_t data [32], i = 0; // Fix 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Fix 2014 / habang (Wire.available ()) {data = Wire.read (); ako ++; } Wire.beginTransmission (BME280_ADDRESS); // Add 2014 / Wire.write (0xA1); // Add 2014 / Wire.endTransmission (); // Add 2014 / Wire.requestFrom (BME280_ADDRESS, 1); // Add 2014 / data = Wire.read (); // Add 2014 / i ++; // Add 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Fix 2014 / habang (Wire.available ()) {data = Wire.read (); ako ++; } dig_T1 = (data [1] << 8) | data [0]; dig_P1 = (data [7] << 8) | data [6]; dig_P2 = (data [9] << 8) | data [8]; dig_P3 = (data [11] << 8) | data [10]; dig_P4 = (data [13] << 8) | data [12]; dig_P5 = (data [15] << 8) | data [14]; dig_P6 = (data [17] << 8) | data [16]; dig_P7 = (data [19] << 8) | data [18]; dig_T2 = (data [3] << 8) | data [2]; dig_T3 = (data [5] << 8) | data [4]; dig_P8 = (data [21] << 8) | data [20]; dig_P9 = (data [23] << 8) | data [22]; dig_H1 = data [24]; dig_H2 = (data [26] << 8) | data [25]; dig_H3 = data [27]; dig_H4 = (data [28] << 4) | (0x0F & data [29]); dig_H5 = (data [30] 4) & 0x0F); // Fix 2014 / dig_H6 = data [31]; // Fix 2014 /} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (data); Wire.endTransmission (); }

walang bisa ang readData ()

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

naka-sign long int calibration_T (sign long int adc_T)

{sign long int var1, var2, T; var1 = (((((adc_T >> 3) - ((sign long int) dig_T1 11; var2 = (((((adc_T >> 4) - ((sign long int) dig_T1)) * ((adc_T >> 4) - ((sign long int) dig_T1))) >> 12) * ((sign long int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T;} unsigned long int calibration_P (sign long int adc_P) {sign long int var1, var2; unsigned long int P; var1 = (((sign long int) t_fine) >> 1) - (sign long int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((sign long int) dig_P6); var2 = var2 + ((var1 * ((sign long int) dig_P5)) 2) + (((sign long int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((sign long int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768 + var1)) * ((sign long int) dig_P1)) >> 15); kung (var1 == 0) {return 0; } P = (((unsigned long int) (((sign long int) 1048576) -adc_P) - (var2 >> 12))) * 3125; kung (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } iba pa {P = (P / (unsigned long int) var1) * 2; } var1 = (((sign long int) dig_P9) * ((sign long int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((sign long int) (P >> 2)) * ((sign long int) dig_P8)) >> 13; P = (unsigned long int) ((sign long int) P + ((var1 + var2 + dig_P7) >> 4)); ibalik ang 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) - (((sign long int) dig_H4) 15) * (((((((v_x1 * ((sign long int) dig_H6)) >> 10) * (((v_x1 * ((sign long int) dig_H3)) >> 11) + ((sign long int) 32768))) >> 10) + ((sign long int) 2097152)) * ((sign long int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((sign long int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (unsigned long int) (v_x1 >> 12);}

Hakbang 5: Mga Script ng MakeCode / JavaScript

Mga Script ng MakeCode / JavaScript
Mga Script ng MakeCode / JavaScript

Kamakailan ay inilabas ni Pimoroni ang enviro: bit, na kasama ng isang sensor ng presyon ng BMP280, isang ilaw / sensor ng kulay at isang mikropono ng MEMS. Nag-aalok din sila ng isang MicroPython at isang library ng MakeCode / JavaScript.

Ginamit ko ang paglaon upang magsulat ng isang script ng MakeCode para sa sensor ng presyon. Ang kaukulang hex file ay maaaring kopyahin nang direkta sa iyong micro: bit. Ang code ay ipinapakita sa ibaba at maaaring mabago gamit ang online na editor ng MakeCode.

Ito ay isang pagkakaiba-iba ng script para sa micro: bit dive-o-meter. Sa pamamagitan ng default ipinapakita nito ang pagkakaiba sa presyon bilang isang graph ng bar. Ang pagpindot sa pindutan A ay nagtatakda ng presyon ng sanggunian, ipinapakita ng pagpindot sa pindutan B ang pagkakaiba sa pagitan ng aktwal at ng presyon ng sanggunian sa hPa.

Bilang karagdagan sa pangunahing bersyon ng barcode makakahanap ka rin ng isang "X", bersyon ng crosshair at isang bersyon na "L", na inilaan upang gawing mas madali ang pagbabasa.

hayaan ang Haligi = 0

hayaan mananatili = 0 hayaan ang Hilera = 0 hayaan ang Meter = 0 hayaan ang Delta = 0 hayaan ang Ref = 0 hayaan ang Is = 0 Ay = 1012 pangunahing.showLeds (`# # # # # #… # #. #. # #… # # # # # # `` Ref = 1180 basic.clearScreen () basic.forever (() => {basic.clearScreen () kung (input.buttonIsPressed (Button. A)) {Ref = envirobit.getPressure () basic.showLeds (`#. #. #. #. #. # # # # #. #. #. #. #. #. #`) basic.pause (1000)} iba pa kung (input.buttonIsPressed (Button. B)) {basic.showString ("" + Delta + "hPa") basic.pause (200) basic.clearScreen ()} iba pa {Ay = envirobit.getPressure () Delta = Ay - Ref Meter = Math.abs (Delta) kung (Meter> = 400) {Row = 4} iba pa kung (Meter> = 300) {Row = 3} iba pa kung (Meter> = 200) {Row = 2} iba pa kung (Meter> = 100) {Row = 1} iba pa {Row = 0} mananatiling = Meter - Row * 100 kung (mananatili> = 80) {Column = 4} iba pa kung (mananatili> = 60) {Column = 3} iba pa kung (mananatili> = 40) {Column = 2 } iba pa kung (mananatili> = 20) {Column = 1} iba pa {Column = 0} para sa (let ColA = 0; ColA <= Column; ColA ++) {led.plot (ColA, Row)} basic.pause (500)}})

Inirerekumendang: