Tartalomjegyzék:

Mérje meg a nyomást a mikro segítségével: bit: 5 lépés (képekkel)
Mérje meg a nyomást a mikro segítségével: bit: 5 lépés (képekkel)

Videó: Mérje meg a nyomást a mikro segítségével: bit: 5 lépés (képekkel)

Videó: Mérje meg a nyomást a mikro segítségével: bit: 5 lépés (képekkel)
Videó: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Július
Anonim
Mérje meg a nyomást a Micro: bit segítségével
Mérje meg a nyomást a Micro: bit segítségével
Mérje meg a nyomást a Micro: bit segítségével
Mérje meg a nyomást a Micro: bit segítségével

Az alábbi utasítás egy könnyen megépíthető és olcsó eszközt ír le a nyomásmérések elvégzésére és Boyle törvényének bemutatására, a micro: bit és a BMP280 nyomás/hőmérséklet érzékelő kombinációjával.

Míg ezt a fecskendő/nyomásérzékelő kombinációt már leírtam egyik korábbi utasításomban, addig a micro: bit kombinációja új lehetőségeket kínál, pl. osztálytermi projektekhez.

Ezen túlmenően, azoknak az alkalmazásoknak a leírása, amelyekben a micro: bitet I2C hajtású érzékelővel együtt használják, eddig meglehetősen korlátozott. Remélem, ez az oktatható kiindulópont lehet más projektekhez.

Az eszköz lehetővé teszi kvantitatív légnyomásmérések elvégzését, és az eredmények megjelenítését a micro: bit LED tömbön vagy egy csatlakoztatott számítógépen, később az Arduino IDE soros monitor vagy soros plotter funkcióinak használatával. Ezenkívül haptikus visszajelzést is kap, mivel maga fogja nyomni vagy húzni a fecskendő dugattyúját, és ezáltal érzi a szükséges teljesítményt.

Alapértelmezés szerint a kijelző lehetővé teszi a nyomás megbecsülését a LED -mátrixon látható szintjelző segítségével. Az Arduino IDE soros plottere lehetővé teszi ugyanezt, de sokkal jobb felbontással (lásd a videót). Bonyolultabb megoldások is rendelkezésre állnak, pl. feldolgozó nyelven. Az A vagy B gomb megnyomása után a LED és a hőmérséklet pontos mért értékeit is megjelenítheti, de az Arduino IDE soros monitorja sokkal gyorsabb, lehetővé téve az értékek közel valós idejű megjelenítését.

A teljes költség és az eszköz megépítéséhez szükséges technikai készségek meglehetősen alacsonyak, ezért ez egy jó osztálytermi projekt lehet egy tanár felügyelete alatt. Ezenkívül a készülék eszköz lehet a STEM projektekben, amelyek a fizikára összpontosítanak, vagy más projektekben használhatók, ahol egy erőt vagy súlyt digitális értékké kell átalakítani.

Ezt az elvet használták egy nagyon egyszerű mikro: bites merülő-méter mérőeszköz elkészítéséhez, amely egy eszköz a merülés mélységének mérésére.

2018. május 27-i kiegészítés:

Mivel a Pimoroni MakeCode könyvtárat fejlesztett ki a BMP280 érzékelőhöz, ez lehetőséget adott arra, hogy kifejlesszek egy szkriptet, amelyet az itt leírt eszközhöz használhatok. A parancsfájl és a megfelelő HEX-fájl ennek az utasításnak az utolsó lépésében található. Használatához töltse be a HEX fájlt a micro: bit -re. Nincs szükség speciális szoftverre, és használhatja az online MakeCode szerkesztőt a szkript szerkesztéséhez.

1. lépés: Használt anyagok

Használt anyagok
Használt anyagok
Használt anyagok
Használt anyagok
Használt anyagok
Használt anyagok
Használt anyagok
Használt anyagok
  • Egy micro: bit, az enyémet Pimoroniból szereztem - 13,50 GBP
  • Kitronic Edge csatlakozó micro: bithez - Pimoroni útján - 5 GBP, Megjegyzés: A Pimorini most egy kenyérsütőlap -barát peremcsatlakozót kínál pin: bit néven, csapokkal az I2C portokon.
  • 2 x 2 tűs fejléc
  • Akkumulátor vagy LiPo a mikro számára: bit (nem szükséges, de hasznos), akkumulátor kábel kapcsolóval (dito) - Pimoroni
  • áthidaló kábelek az érzékelők Edge csatlakozóhoz való csatlakoztatásához
  • hosszú (!) áthidaló kábelek az érzékelőhöz, legalább olyan hosszúak, mint a fecskendő,, f/f vagy f/m
  • BMP280 nyomás- és hőmérséklet -érzékelő - Banggood - 5 amerikai dollár három egységért. Ennek az érzékelőnek a mérési tartománya 550 és 1537 hPa között van.
  • 150 ml -es műanyag katéteres fecskendő gumitömítéssel - Amazon vagy hardver- és kerti üzletek - körülbelül 2-3 USD
  • forró ragasztó/forró ragasztó pisztoly
  • forrasztópáka
  • számítógép, amelyen telepítve van az Arduino IDE

2. lépés: Összeszerelési utasítások

összeszerelési útmutató
összeszerelési útmutató
összeszerelési útmutató
összeszerelési útmutató
összeszerelési útmutató
összeszerelési útmutató

Forrasztófej a BMP280 szenzorhoz.

Forrasztja a két 2 tűs fejet az Edge csatlakozó 19 és 20 tűs csatlakozóira (lásd az ábrát).

Csatlakoztassa a micro: bitet az Edge csatlakozóhoz és a számítógéphez.

Készítse elő a szoftvert és a micro: bit -t az Adafruit micro: bit utasításai szerint. Olvassa el őket alaposan.

Telepítse a szükséges könyvtárakat az Arduino IDE -be.

Nyissa meg a BMP280 parancsfájlt egy későbbi lépésben.

Csatlakoztassa az érzékelőt az Edge csatlakozóhoz. GND - 0V, VCC - 3V, SCL - 19 -es, SDA - 20 -as.

Töltse fel a szkriptet a micro: bitre.

Ellenőrizze, hogy az érzékelő ésszerű adatokat szolgáltat -e, a nyomásértékeknek 1020 hPa körül kell lenniük, a soros monitoron. Ebben az esetben először ellenőrizze a kábeleket és csatlakozásokat, majd a szoftver telepítését, és javítsa ki.

Kapcsolja ki a micro: bit -et, vegye ki az érzékelőt.

Vezesse át a hosszú áthidaló kábeleket a fecskendő kimenetén. Ha esetleg ki kell szélesíteni a nyílást. Ügyeljen arra, hogy figyelmen kívül hagyja a kábelek sérülését.

Csatlakoztassa az érzékelőt az áthidaló kábelekhez. Ellenőrizze, hogy a csatlakozók helyesek és jók. Csatlakozás a micro: bit -hez.

Ellenőrizze, hogy az érzékelő megfelelően működik -e. Óvatosan húzza a kábeleket, és helyezze az érzékelőt a fecskendő tetejére.

Helyezze be a dugattyút, és mozgassa kissé tovább a kívánt nyugalmi helyzetben (100 ml).

Adjon forró ragasztót a fecskendő kimenetének végéhez, és mozgassa kissé hátra a dugattyút. Ellenőrizze, hogy a fecskendő légmentesen le van -e zárva, ellenkező esetben adjon hozzá több forró ragasztót. Hagyja kihűlni a forró ragasztót.

Ellenőrizze újra, hogy az érzékelő működik -e. Ha elmozdítja a dugattyút, akkor a soros monitoron és a micro: bit kijelzőjén lévő számoknak meg kell változniuk.

Ha szükséges, beállíthatja a fecskendő hangerejét úgy, hogy összenyomja a tömítést, és mozgatja a dugattyút.

3. lépés: Egy kis elmélet és néhány gyakorlati mérés

Egy kis elmélet és néhány gyakorlati mérés
Egy kis elmélet és néhány gyakorlati mérés
Egy kis elmélet és néhány gyakorlati mérés
Egy kis elmélet és néhány gyakorlati mérés

Az itt leírt eszközzel egyszerű fizikai kísérletekben demonstrálhatja a kompresszió és a nyomás korrelációját. Mivel a fecskendő "ml" skálával rendelkezik, még a mennyiségi kísérletek is könnyen elvégezhetők.

A mögöttes elmélet: Boyle törvénye szerint a [Térfogat * Nyomás] egy állandó érték egy gáz számára egy adott hőmérsékleten.

Ez azt jelenti, hogy ha egy adott térfogatú gázt N-szeresre présel, azaz a végső térfogat 1/N-szerese az eredetinek, a nyomása N-szeresére emelkedik, például: P0*V0 = P1*V1 = hátrányok t. További részletekért tekintse meg a Wikipedia gáztörvényekkel foglalkozó cikkét. Tengerszinten a légnyomás általában 1010 hPa (hecto Pascal) tartományban van.

Tehát nyugalmi helyeken kezdve pl. V0 = 100 ml és P0 = 1000 hPa, a levegő 66 ml -re történő összenyomása (azaz V1 = 2/3 * V0) körülbelül 1500 hPa nyomást eredményez (P1 = 3/2 a P0 -ból). Ha a dugattyút 125 ml -re (5/4 -szeres térfogat) húzza, körülbelül 800 hPa (4/5 nyomás) nyomást eredményez. A mérések elképesztően pontosak egy ilyen egyszerű eszköznél.

A készülék lehetővé teszi, hogy közvetlen haptikus benyomást keltsen, mennyi erőre van szükség a fecskendőben lévő viszonylag kis mennyiségű levegő összenyomásához vagy kitágításához.

De elvégezhetünk néhány számítást, és kísérletileg ellenőrizhetjük őket. Tegyük fel, hogy a levegőt 1500 hPa -ra sűrítjük, 1000 hPa bazális légnyomás mellett. Tehát a nyomáskülönbség 500 hPa, vagy 50 000 Pa. Fecskendőmnél a dugattyú átmérője (d) körülbelül 4 cm vagy 0,04 méter.

Most kiszámíthatja a dugattyúnak ebben a helyzetben tartásához szükséges erőt. Adott P = F/A (a nyomás erővel osztva területtel), vagy átalakítva F = P*A. Az erő SI mértékegysége "Newton" N, "Meter" hosszúság esetén, 1 Pa pedig 1 N négyzetméterenként. Kerek dugattyú esetén a terület kiszámítható A = ((d/2)^2)*pi segítségével, ami 0,00125 négyzetmétert ad a fecskendőm számára. Így

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

A Földön 1 N 100 gramm súlynak felel meg, tehát 63 N egyenlő 6,3 kg súly tartásával.

Ez könnyen ellenőrizhető egy skála segítségével. Nyomja a fecskendőt a dugattyúval a mérlegre, amíg el nem éri az 1500 hPa nyomást, majd olvassa le a skálát. Vagy nyomja addig, amíg a mérleg 6-7 kg-ot mutat, majd nyomja meg az "A" gombot, és olvassa el a micro: bit LED-mátrixán megjelenített értéket. Mint kiderült, a fenti számítások alapján végzett becslés nem volt rossz. Az enyhén 1500 hPa feletti nyomás korrelált a test skálán megjelenő, körülbelül 7 kg -os "tömegével" (lásd a képeket). Ön is megfordíthatja ezt a koncepciót, és az eszköz segítségével egy egyszerű digitális skálát készíthet a nyomásmérések alapján.

Kérjük, vegye figyelembe, hogy az érzékelő felső határa körülbelül 1540 hPa, ezért az e fölötti nyomás nem mérhető, és károsíthatja az érzékelőt.

Az oktatási célok mellett a rendszert néhány valós világbeli alkalmazáshoz is használhatjuk, mivel ez lehetővé teszi a dugattyú egyik vagy másik mozgatására törekvő erők mennyiségi mérését. Így megmérheti a dugattyúra helyezett súlyt vagy a dugattyút érő ütőerőt. Vagy építsen olyan kapcsolót, amely aktiválja a fényt vagy a zümmögőt, vagy egy bizonyos küszöbérték elérése után hangot ad ki. Vagy építhet egy hangszert, amely megváltoztatja a frekvenciát a dugattyú erősségének függvényében. Vagy használd játékvezérlőként. Használd a fantáziádat és játssz!

4. lépés: A MicroPython szkript

Csatolva megtalálod a BMP280 szkriptemet a micro: bithez. Ez egy BMP/BME280 szkript származéka, amelyet valahol a Banggood webhelyen találtam, az Adafruit Microbit könyvtárával kombinálva. Az első lehetővé teszi a Banggood érzékelő használatát, a második egyszerűsíti az 5x5 LED kijelző kezelését. Köszönöm mindkettő fejlesztőinek.

Alapértelmezés szerint a szkript 5 lépésben jeleníti meg a nyomásmérések eredményeit a micro: bit 5x5 LED -es kijelzőjén, lehetővé téve a változások kis késleltetést. A pontos értékek párhuzamosan megjeleníthetők az Arduino IDE soros monitoron, vagy részletesebb grafikonon az Arduino IDE szériarajzolója.

Ha megnyomja az A gombot, a mért nyomásértékek megjelennek a micro: bit 5x5 LED -es tömbjén. Ha megnyomja a B gombot, megjelenik a hőmérséklet értéke. Bár ez lehetővé teszi a pontos adatok leolvasását, jelentősen lelassítja a mérési ciklusokat.

Biztos vagyok benne, hogy sokkal elegánsabb módszerek vannak a feladatok programozására és a forgatókönyv javítására. Bármilyen segítséget szívesen fogadunk.

#include xxx

#include Adafruit_Microbit_Matrix microbit; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; aláírt hosszú 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; // konténerek a mért értékekhez int value0; int érték1; int érték2; int érték3; int érték4; // ------------------------------------------------ -------------------------------------------------- ------------------ void setup () {uint8_t osrs_t = 1; // Hőmérséklet -túlmintavétel x 1 uint8_t osrs_p = 1; // Nyomás túlmintavétele x 1 uint8_t osrs_h = 1; // Páratartalom túlmintavételezés x 1 uint8_t mód = 3; // Normál mód uint8_t t_sb = 5; // Készenléti állapot 1000ms uint8_t filter = 0; // szűrés ki uint8_t spi3w_en = 0; // 3 vezetékes SPI Letiltás uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mód; uint8_t config_reg = (t_sb << 5) | (szűrő << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Sorozat.kezdet (9600); // Serial.println ("Hőmérséklet [° C]"); // Sorozat.nyomtatás ("\ t"); Serial.print ("Nyomás [hPa]"); // fejléc Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); késleltetés (1000); } // ----------------------------------------------- -------------------------------------------------- -------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; aláírt hosszú int temp_cal; előjel nélküli hosszú int press_cal, hum_cal; int N; // küszöbértékek beállítása a LED mátrix kijelzőhöz, hPa -ban dupla max_0 = 1100; dupla max_1 = 1230; dupla max_2 = 1360; dupla max_3 = 1490; readData (); temp_cal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); hum_cal = kalibrálás_H (hum_rajz); temp_act = (dupla) temp_cal / 100.0; press_act = (dupla) press_cal / 100.0; hum_act = (kettős) hum_cal / 1024,0; microbit.clear (); // reset LED mátrix /* 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)) {// az értékek számokban történő megjelenítése késlelteti a körök mérését microbit.print ("T:"); microbit.print (temp_act, 1); microbit.print ("'C"); // Sorozat.println (""); } else if (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (press_act, 0); microbit.print ("hPa"); } else {// a nyomásértékek pixelként vagy vonalként való megjelenítése egy bizonyos szinten // 5 lépés: 1490 hPa // a max_n értékek által meghatározott küszöbértékek, ha (press_act> max_3) {(N = 0); // felső sor} 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); // alapsor} // Sorozat.println (N); // fejlesztési célokra // microbit.print (N); // mint vonal // microbit.drawLine (N, 0, 0, 4, LED_ON); // értékek eltolása a következő sor értékére4 = érték3; érték3 = érték2; érték2 = érték1; érték1 = érték0; érték0 = N; // kép rajzolása, oszloponként mikrobit.drawPixel (0, érték0, LED_ON); // Pixelként: oszlop, sor. 0, 0 bal felső sarok microbit.drawPixel (1, érték1, LED_ON); microbit.drawPixel (2, érték2, LED_ON); microbit.drawPixel (3, érték3, LED_ON); microbit.drawPixel (4, érték4, LED_ON); } // adatok küldése soros monitorra és soros plotterre // Serial.println (press_act); // érték (ek) küldése a soros portra a numerikus megjelenítéshez, opcionális

Serial.print (press_act); // érték küldése a plotter soros portjára

// rajzoljon jelzővonalakat és javítsa a megjelenített tartományt Serial.print ("\ t"); Sorozatnyomtatás (600); Serial.print ("\ t"); Soros.nyomtatás (1100), Soros.nyomtatás ("\ t"); Sorozat.println (1600); késleltetés (200); // Mérjen másodpercenként háromszor} // ---------------------------------------- -------------------------------------------------- -------------------------------------------------- - // a következő szükséges a bmp/bme280 érzékelőhöz, tartsa érvénytelennek readTrim () {uint8_t data [32], i = 0; // Javítás 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Javítás 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Add 2014/Wire.write (0xA1); // 2014 hozzáadása/Wire.endTransmission (); // Add 2014/Wire.requestFrom (BME280_ADDRESS, 1); // Add 2014/data = Wire.read (); // Hozzáadás 2014/i ++; // Add 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Javítás 2014/while (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (adatok [1] << 8) | adatok [0]; dig_P1 = (adatok [7] << 8) | adatok [6]; dig_P2 = (adatok [9] << 8) | adatok [8]; dig_P3 = (adatok [11] << 8) | adatok [10]; dig_P4 = (adatok [13] << 8) | adatok [12]; dig_P5 = (adatok [15] << 8) | adatok [14]; dig_P6 = (adatok [17] << 8) | adatok [16]; dig_P7 = (adatok [19] << 8) | adatok [18]; dig_T2 = (adatok [3] << 8) | adatok [2]; dig_T3 = (adatok [5] << 8) | adatok [4]; dig_P8 = (adatok [21] << 8) | adatok [20]; dig_P9 = (adatok [23] << 8) | adatok [22]; dig_H1 = adatok [24]; dig_H2 = (adatok [26] << 8) | adatok [25]; dig_H3 = adatok [27]; dig_H4 = (adatok [28] << 4) | (0x0F és adatok [29]); dig_H5 = (adatok [30] 4) & 0x0F); // 2014 javítása/dig_H6 = adatok [31]; // 2014/} javítása void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (adatok); Wire.endTransmission (); }

void readData ()

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

aláírt hosszú int kalibráció_T (aláírt hosszú int adc_T)

{aláírt hosszú int var1, var2, T; var1 = (((((adc_T >> 3) - ((aláírt hosszú int) dig_T1 11; var2 = ((((((adc_T >> 4) - ((aláírt hosszú int) dig_T1)) * ((adc_T >> 4) - ((aláírt hosszú int) dig_T1))) >> 12) * ((aláírt hosszú int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T;} előjel nélküli hosszú int kalibrálás_P (aláírt hosszú int adc_P) {aláírt hosszú int var1, var2; előjel nélküli hosszú int P; var1 = (((aláírt hosszú int) t_fine) >> 1) - (aláírt hosszú int) 64000; var2 = ((((var1 >> 2) * (var1 >> 2)) >> 11) * ((aláírt hosszú int) dig_P6); var2 = var2 + ((var1 * ((aláírt hosszú int) dig_P5)) 2) + (((aláírt hosszú int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((aláírt hosszú int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768+var1))*((aláírt hosszú int) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((előjel nélküli hosszú int) (((aláírt hosszú int) 1048576) -adc_P)-(var2 >> 12)))*3125; ha (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } else {P = (P / (előjel nélküli hosszú int) var1) * 2; } var1 = (((aláírt hosszú int) dig_P9) * ((aláírt hosszú int) ((((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((aláírt hosszú int) (P >> 2)) * ((aláírt hosszú int) dig_P8)) >> 13; P = (előjel nélküli hosszú int) ((aláírt hosszú int) P + ((var1 + var2 + dig_P7) >> 4)); visszatérés P; } unsigned long int kalibráció_H (aláírt hosszú int adc_H) {aláírt hosszú int v_x1; v_x1 = (t_finom - ((aláírt hosszú int) 76800)); v_x1 = ((((((adc_H << 14) -(((aláírt hosszú int) dig_H4) 15) * (((((((v_x1 * ((aláírt hosszú int) dig_H6)) >> 10) * (((v_x1 * ((aláírt hosszú int) dig_H3)) >> 11) + ((aláírt hosszú int) 32768))) >> 10) + ((aláírt hosszú int) 2097152)) * ((aláírt hosszú int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((aláírt hosszú int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (előjel nélküli hosszú int) (v_x1 >> 12);}

5. lépés: MakeCode/JavaScript szkriptek

MakeCode/JavaScript szkriptek
MakeCode/JavaScript szkriptek

A Pimoroni nemrég kiadta az enviro: bit -et, amely BMP280 nyomásérzékelővel, fény-/színérzékelővel és MEMS mikrofonnal rendelkezik. MicroPython és MakeCode/JavaScript könyvtárat is kínálnak.

A későbbiekben MakeCode -szkriptet írtam a nyomásérzékelőhöz. A megfelelő hexa fájl közvetlenül a micro: bitre másolható. A kód alább látható, és az online MakeCode szerkesztővel módosítható.

Ez a micro: bit dive-o-meter szkriptjének egy változata. Alapértelmezésben a nyomáskülönbséget oszlopdiagramként jeleníti meg. Az A gomb megnyomásával beállítható a referencianyomás, a B gomb megnyomásával megjelenik a tényleges és a referencianyomás közötti különbség hPa -ban.

Az alap vonalkód verzió mellett egy "X", szálkeresztes és egy "L" változatot is talál, amelyek megkönnyítik az olvasást.

legyen az oszlop = 0

hagyjuk marad = 0 hagyja sor = 0 hagyja Meter = 0 hagyja Delta = 0 hagyja Ref = 0 hagyja 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), ha (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {Row = 1} else {Sor = 0} marad = Méter - Sor * 100, ha (marad>> 80) {Oszlop = 4} más, ha (marad>> 60) {Oszlop = 3} más, ha (marad>> 40) {Oszlop = 2 } else if (marad> = 20) {Oszlop = 1} else {Oszlop = 0} a (legyen ColA = 0; ColA <= Oszlop; ColA ++) {led.plot (ColA, Row)} basic.pause (500)}})

Ajánlott: