Spisu treści:

Pomiar ciśnienia za pomocą Micro:bit: 5 kroków (ze zdjęciami)
Pomiar ciśnienia za pomocą Micro:bit: 5 kroków (ze zdjęciami)

Wideo: Pomiar ciśnienia za pomocą Micro:bit: 5 kroków (ze zdjęciami)

Wideo: Pomiar ciśnienia za pomocą Micro:bit: 5 kroków (ze zdjęciami)
Wideo: NISKIE CIŚNIENIE OLEJU W SILNIKU czujnik ciśnienia oleju, filtr, panewki, pompa oleju | ForumWiedzy 2024, Lipiec
Anonim
Zmierz ciśnienie za pomocą Micro:bit
Zmierz ciśnienie za pomocą Micro:bit
Zmierz ciśnienie za pomocą Micro:bit
Zmierz ciśnienie za pomocą Micro:bit

Poniższa instrukcja opisuje łatwe do zbudowania i niedrogie urządzenie do wykonywania pomiarów ciśnienia i demonstrowania prawa Boyle'a, przy użyciu micro:bit w połączeniu z czujnikiem ciśnienia/temperatury BMP280.

Podczas gdy ta kombinacja strzykawki/czujnika ciśnienia została już opisana w jednej z moich poprzednich instrukcji, połączenie z micro:bit oferuje nowe możliwości, m.in. do projektów sal lekcyjnych.

Ponadto liczba opisów zastosowań, w których micro:bit jest używany w połączeniu z czujnikiem sterowanym przez I2C, jest jak dotąd dość ograniczona. Mam nadzieję, że ta instrukcja może być punktem wyjścia dla innych projektów.

Urządzenie umożliwia wykonywanie ilościowych pomiarów ciśnienia powietrza, a także wyświetlanie wyników na tablicy micro:bit LED lub na podłączonym komputerze, w celu późniejszego wykorzystania funkcji monitora szeregowego lub plotera szeregowego Arduino IDE. Dodatkowo otrzymujesz haptyczne sprzężenie zwrotne, ponieważ samodzielnie naciskasz lub ciągniesz tłok strzykawki i tym samym odczuwasz wymaganą moc.

Domyślnie wyświetlacz umożliwia oszacowanie ciśnienia za pomocą wskaźnika poziomu pokazanego na matrycy LED. Szeregowy ploter Arduino IDE pozwala zrobić to samo, ale z dużo lepszą rozdzielczością (zobacz wideo). Dostępne są również bardziej wyszukane rozwiązania, m.in. w języku Przetwarzania. Można również wyświetlać precyzyjne zmierzone wartości ciśnienia i temperatury na matrycy LED po naciśnięciu odpowiednio przycisków A lub B, ale szeregowy monitor Arduino IDE jest znacznie szybszy, pozwalając na wyświetlanie wartości w czasie zbliżonym do rzeczywistego.

Całkowite koszty i umiejętności techniczne wymagane do zbudowania urządzenia są raczej niskie, więc może to być fajny projekt w klasie pod nadzorem nauczyciela. Ponadto urządzenie może być narzędziem do projektów STEM z naciskiem na fizykę lub być wykorzystywane w innych projektach, w których siła lub ciężar zostaną przekształcone na wartość cyfrową.

Zasada ta została wykorzystana do skonstruowania bardzo prostego mikro:bit dive-o-meter, urządzenia do pomiaru głębokości nurkowania.

Dodatek 27 maja 2018 r.:

Ponieważ firma Pimoroni opracowała bibliotekę MakeCode dla czujnika BMP280, dało mi to możliwość opracowania skryptu do wykorzystania dla opisanego tutaj urządzenia. Skrypt i odpowiedni plik HEX można znaleźć w ostatnim kroku tej instrukcji. Aby z niego skorzystać, po prostu załaduj plik HEX do swojego micro:bit. Nie potrzebujesz specjalnego oprogramowania, a do edycji skryptu możesz użyć internetowego edytora MakeCode.

Krok 1: Używane materiały

Używane materiały
Używane materiały
Używane materiały
Używane materiały
Używane materiały
Używane materiały
Używane materiały
Używane materiały
  • Micro:bit, dostałem od Pimoroni - 13,50 GBP
  • Kitronic Edge Connector for micro:bit - via Pimoroni - 5 GBP, Uwaga: Pimorini oferuje teraz przyjazne dla płytek stykowych złącze krawędziowe o nazwie pin:bit z pinami na portach I2C.
  • 2 x 2 listwy z nagłówkiem pinowym
  • Akumulator lub LiPo do micro:bit (niekonieczne, ale pomocne), kabel akumulatora z włącznikiem (dito) - Pimoroni
  • kable rozruchowe do podłączenia czujników do złącza Edge
  • długie (!) przewody połączeniowe do czujnika, co najmniej tak długie jak strzykawka, f/f lub f/m
  • Czujnik ciśnienia i temperatury BMP280 - Banggood - 5 USD za trzy jednostkiZakres pomiaru dla tego czujnika wynosi od 550 do 1537 hPa.
  • 150 ml plastikowa strzykawka cewnika z gumową uszczelką - Amazon lub sklepy ze sprzętem i ogrodnictwem - około 2 - 3 USD
  • pistolet do gorącego kleju/gorącego kleju
  • lutownica
  • komputer z zainstalowanym Arduino IDE

Krok 2: Instrukcja montażu

Instrukcje składania
Instrukcje składania
Instrukcje składania
Instrukcje składania
Instrukcje składania
Instrukcje składania

Przylutuj nagłówki do złącza czujnika BMP280.

Przylutuj dwie 2-pinowe listwy do złączy pin 19 i pin 20 złącza Edge (patrz zdjęcie).

Podłącz micro:bit do złącza Edge i komputera.

Przygotuj oprogramowanie i micro:bit zgodnie z instrukcją Adafruit micro:bit. Przeczytaj je dokładnie.

Zainstaluj wymagane biblioteki w Arduino IDE.

Otwórz skrypt BMP280 dołączony w późniejszym kroku.

Podłącz czujnik do złącza Edge. GND do 0V, VCC do 3V, SCL do pinu 19, SDA do pinu 20.

Prześlij skrypt do micro:bit.

Sprawdź, czy czujnik podaje odpowiednie dane, wartości ciśnienia powinny wynosić około 1020 hPa, wyświetlane na monitorze szeregowym. W takim przypadku najpierw sprawdź kable i połączenia, a następnie instalację oprogramowania i popraw.

Wyłącz micro:bit, wyjmij czujnik.

Przeprowadź długie kable rozruchowe przez wylot strzykawki. Na wypadek, gdybyś musiał poszerzyć otwór. Uważaj, aby nie uszkodzić kabli.

Podłącz czujnik do kabli rozruchowych. Sprawdź, czy połączenia są prawidłowe i dobre. Podłącz do micro:bit.

Sprawdź, czy czujnik działa prawidłowo. Ostrożnie pociągając za kable, przesuń czujnik na górę strzykawki.

Włożyć tłok i przesunąć go nieco dalej niż żądana pozycja spoczynkowa (100 ml).

Dodaj gorący klej do końca wylotu strzykawki i cofnij nieco tłok. Sprawdź, czy strzykawka jest szczelnie zamknięta, w przeciwnym razie dodaj więcej gorącego kleju. Ostudź gorący klej.

Sprawdź ponownie, czy czujnik działa. Jeśli przesuniesz tłok, liczby na monitorze szeregowym i na wyświetlaczu micro:bit powinny się zmienić.

W razie potrzeby można dostosować objętość strzykawki, ściskając ją w pobliżu uszczelki i przesuwając tłok.

Krok 3: Trochę teorii i kilka praktycznych pomiarów

Trochę teorii i kilka praktycznych pomiarów
Trochę teorii i kilka praktycznych pomiarów
Trochę teorii i kilka praktycznych pomiarów
Trochę teorii i kilka praktycznych pomiarów

Za pomocą opisanego tutaj urządzenia można zademonstrować korelację kompresji i ciśnienia w prostych eksperymentach fizycznych. Ponieważ strzykawka jest wyposażona w skalę „ml”, nawet eksperymenty ilościowe są łatwe do przeprowadzenia.

Teoria stojąca za tym: Zgodnie z prawem Boyle'a [Objętość * Ciśnienie] jest stałą wartością dla gazu w danej temperaturze.

Oznacza to, że jeśli skompresujesz daną objętość gazu N-krotnie, tj. końcowa objętość jest 1/N-krotnie większa od oryginalnej, jego ciśnienie wzrośnie N-krotnie, ponieważ: P0*V0=P1*V1=cons t. Więcej informacji można znaleźć w artykule Wikipedii na temat przepisów dotyczących gazu. Na poziomie morza ciśnienie barometryczne zwykle mieści się w zakresie 1010 hPa (hektopaskali).

A więc zaczynając od miejsca spoczynku m.in. V0=100 ml i P0=1000 hPa, sprężanie powietrza do około 66 ml (tj. V1 = 2/3 * V0) spowoduje powstanie ciśnienia około 1500 hPa (P1= 3/2 P0). Pociągnięcie tłoka do 125 ml (5/4-krotna objętość) powoduje powstanie ciśnienia około 800 hPa (4/5 ciśnienia). Pomiary są zadziwiająco precyzyjne jak na tak proste urządzenie.

Urządzenie pozwala odnieść bezpośrednie wrażenie dotykowe, jaka siła jest potrzebna do skompresowania lub rozprężenia stosunkowo niewielkiej ilości powietrza w strzykawce.

Ale możemy też wykonać pewne obliczenia i sprawdzić je eksperymentalnie. Załóżmy, że sprężamy powietrze do 1500 hPa przy podstawowym ciśnieniu barometrycznym 1000 hPa. Czyli różnica ciśnień wynosi 500 hPa, czyli 50 000 Pa. Dla mojej strzykawki średnica (d) tłoka to około 4 cm czyli 0,04 metra.

Teraz możesz obliczyć siłę potrzebną do utrzymania tłoka w tej pozycji. Dane P = F/A (ciśnienie to siła podzielona przez powierzchnię) lub przekształcone F = P*A. Jednostką SI dla siły jest „Newton” N, dla długości „Metr” m, a 1 Pa to 1N na metr kwadratowy. W przypadku okrągłego tłoka powierzchnię można obliczyć za pomocą A = ((d/2)^2)*pi, co daje 0,00125 metra kwadratowego dla mojej strzykawki. Więc

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

Na Ziemi 1 N odpowiada wadze 100 gr, więc 63 N równa się utrzymywaniu wagi 6,3 kg.

Można to łatwo sprawdzić za pomocą wagi. Wcisnąć strzykawkę z tłokiem na skalę, aż do osiągnięcia ciśnienia około 1500 hPa, a następnie odczytać skalę. Lub naciskaj, aż waga pokaże około 6-7 kg, a następnie naciśnij przycisk „A” i odczytaj wartość wyświetlaną na matrycy LED micro:bit. Jak się okazało, szacunki na podstawie powyższych obliczeń nie były złe. Ciśnienie nieco powyżej 1500 hPa korelowało z wyświetlaną „masą” około 7 kg na wadze ciała (patrz zdjęcia). Można również odwrócić tę koncepcję i wykorzystać urządzenie do zbudowania prostej wagi cyfrowej opartej na pomiarach ciśnienia.

Należy pamiętać, że górna granica dla czujnika wynosi około 1540 hPa, więc jakiekolwiek ciśnienie powyżej tej wartości nie może być zmierzone i może uszkodzić czujnik.

Poza celami edukacyjnymi system można również wykorzystać do niektórych zastosowań w świecie rzeczywistym, ponieważ pozwala on na ilościowy pomiar sił, które próbują poruszyć tłokiem w jedną lub drugą stronę. Możesz więc zmierzyć ciężar umieszczony na tłoku lub siłę uderzenia uderzającą w tłok. Lub zbuduj przełącznik, który aktywuje światło lub brzęczyk lub odtwarza dźwięk po osiągnięciu określonej wartości progowej. Możesz też zbudować instrument muzyczny, który zmienia częstotliwość w zależności od siły przyłożonej do tłoka. Lub użyj go jako kontrolera gier. Użyj swojej wyobraźni i graj!

Krok 4: Skrypt MicroPython

W załączeniu mój skrypt BMP280 dla micro:bit. Jest to pochodna skryptu BMP/BME280, który znalazłem gdzieś na stronie Banggood, w połączeniu z biblioteką Microbit Adafruit. Pierwszy umożliwia korzystanie z czujnika Banggood, drugi upraszcza obsługę wyświetlacza LED 5x5. Moje podziękowania kieruję do twórców obu.

Domyślnie skrypt wyświetla wyniki pomiarów ciśnienia w 5 krokach na wyświetlaczu LED micro:bit 5x5, co pozwala zobaczyć zmiany z niewielkim opóźnieniem. Dokładne wartości mogą być wyświetlane równolegle na monitorze szeregowym Arduino IDE lub bardziej szczegółowy wykres może być wyświetlany na ploterze seralnym Arduino IDE.

Jeśli naciśniesz przycisk A, zmierzone wartości ciśnienia zostaną wyświetlone na tablicy 5x5 LED micro:bit. Po naciśnięciu przycisku B wyświetlane są wartości temperatury. Pozwala to na odczytanie dokładnych danych, ale znacznie spowalnia cykle pomiarowe.

Jestem pewien, że istnieją znacznie bardziej eleganckie sposoby programowania zadań i ulepszania skryptu. Każda pomoc jest mile widziana.

#dołącz xxx

#zawiera mikrobit Adafruit_Microbit_Matrix; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; podpisany długi 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; // pojemniki na zmierzone wartości int value0; int wartość1; int wartość2; int wartość3; int wartość4; //------------------------------------------------ -------------------------------------------------- ------------------ void setup() { uint8_t osrs_t = 1; //Nadpróbkowanie temperatury x 1 uint8_t osrs_p = 1; //Nadpróbkowanie ciśnienia x 1 uint8_t osrs_h = 1; //Nadpróbkowanie wilgotności x 1 uint8_t mode = 3; //Tryb normalny uint8_t t_sb = 5; //Tstandby 1000ms filtr uint8_t = 0; //Wyłącz filtr uint8_t spi3w_en = 0; //3-wire SPI Wyłącz uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | tryb; uint8_t config_reg = (t_sb << 5) | (filtr << 2) | spi3w_pl; uint8_t ctrl_hum_reg = osrs_h; pinMode(PIN_BUTTON_A, WEJŚCIE); pinMode(PIN_BUTTON_B, WEJŚCIE); Serial.początek(9600); // Serial.println("Temperatura [stopnie C]"); // Serial.print("\t"); Serial.print("Ciśnienie [hPa]"); // nagłówek Wire.begin(); writeReg(0xF2, ctrl_hum_reg); writeReg(0xF4, ctrl_meas_reg); writeReg(0xF5, config_reg); przeczytajPrzytnij(); // microbit.begin(); // microbit.print("x"); opóźnienie (1000); } //--------------------------------------------------------------- -------------------------------------------------- -------- void loop() { double temp_act = 0.0, press_act = 0.0, hum_act=0.0; podpisany długi int temp_cal; unsigned long int press_cal, hum_cal; int N; // ustaw wartości progowe dla wyświetlacza LED matrix, w hPa double max_0 = 1100; podwójne max_1 = 1230; podwójne max_2 = 1360; podwójne max_3 = 1490; czytajDane(); temp_cal = kalibracja_T(temp_surowy); press_cal = kalibracja_P(pres_raw); hum_cal = kalibracja_H(hum_surowy); temp_act = (podwójny) temp_cal / 100.0; press_act = (podwójne) press_cal / 100.0; hum_act = (podwójny) hum_cal / 1024.0; microbit.clear(); //resetuj matrycę 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)) { // wyświetlanie wartości w liczbach opóźnia okręgi pomiarowe 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{ // wyświetlanie wartości ciśnienia w pikselach lub liniach na określonym poziomie // 5 kroków: 1490 hPa // progi zdefiniowane przez wartości max_n if (press_act > max_3){ (N=0); // górny wiersz } else if (press_act > max_2){ (N=1); } else if (press_act > max_1){ (N=2); } else if (press_act > max_0){ (N=3); } inaczej { (N=4); // wiersz bazowy } // Serial.println(N); // do celów programistycznych // microbit.print(N); // jako Linia // microbit.drawLine(N, 0, 0, 4, LED_ON); // przesuń wartości do następnej linii wartość4 = wartość3; wartość3 = wartość2; wartość2 = wartość1; wartość1 = wartość0; wartość0 = N; // rysuj obraz, kolumna po kolumnie microbit.drawPixel(0, value0, LED_ON); // jako Pixel: kolumna, wiersz. 0, 0 lewy górny róg microbit.drawPixel(1, wartość1, LED_ON); microbit.drawPixel(2, wartość2, LED_ON); microbit.drawPixel(3, wartość3, LED_ON); microbit.drawPixel(4, wartość4, LED_ON); } // wyślij dane do monitora szeregowego i plotera szeregowego // Serial.println(press_act); // wyślij wartości do portu szeregowego w celu wyświetlenia numerycznego, opcjonalnie

Serial.print(press_act); // wyślij wartość do portu szeregowego dla plotera

// narysuj linie wskaźnika i napraw wyświetlany zakres Serial.print("\t"); druk.seryjny(600); Serial.print("\t"); Serial.print(1100), Serial.print("\t"); Serial.println(1600); opóźnienie(200); // Mierz trzy razy na sekundę } //-------------------------------------------- -------------------------------------------------- -------------------------------------------------- -- // poniższe wymagania są wymagane dla czujnika bmp/bme280, zachowaj bez zmian readTrim() { uint8_t data[32], i=0; // Napraw 2014/Wire.beginTransmission(BME280_ADDRESS); Wire.write(0x88); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 24); // Napraw 2014/while(Wire.available()){ data = Wire.read(); i++; } Wire.beginTransmission(BME280_ADDRESS); // Dodaj 2014/Wire.write(0xA1); // Dodaj 2014/Wire.endTransmission(); // Dodaj 2014/Wire.requestFrom(BME280_ADDRESS, 1); // Dodaj 2014/data = Wire.read(); // Dodaj 2014/i++; // Dodaj 2014/Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xE1); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 7); // Napraw 2014/while(Wire.available()){ data = Wire.read(); i++; } dig_T1 = (dane[1] << 8) | dane[0]; dig_P1 = (dane[7] << 8) | dane[6]; dig_P2 = (dane[9] << 8) | dane[8]; dig_P3 = (dane[11]<< 8) | dane[10]; dig_P4 = (dane[13]<< 8) | dane[12]; dig_P5 = (dane[15]<< 8) | dane[14]; dig_P6 = (dane[17]<< 8) | dane[16]; dig_P7 = (dane[19]<< 8) | dane[18]; dig_T2 = (dane[3] << 8) | dane[2]; dig_T3 = (dane[5] << 8) | dane[4]; dig_P8 = (dane[21]<< 8) | dane[20]; dig_P9 = (dane[23]<< 8) | dane[22]; dig_H1 = dane[24]; dig_H2 = (dane[26]<< 8) | dane[25]; dig_H3 = dane[27]; dig_H4 = (dane[28]<< 4) | (0x0F i dane[29]); dig_H5 = (dane[30] 4) & 0x0F); // Napraw 2014/dig_H6 = dane[31]; // Napraw 2014/} void writeReg(uint8_t reg_address, uint8_t data) { Wire.beginTransmission(BME280_ADDRESS); Wire.write(reg_address); Drut.zapis(dane); Wire.endTransmission(); }

nieważne odczytajDane()

{ int i = 0; dane uint32_t[8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write(0xF7); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 8); while(Przewód.dostępny()){ dane = Przewód.odczyt(); i++; } pres_raw = (dane[0] << 12) | (dane[1] 4); temp_raw = (dane[3] << 12) | (dane[4] 4); hum_raw = (dane[6] << 8) | dane[7]; }

signed long int kalibracja_T(signed long int adc_T)

{ długi ze znakiem int zm1, zm2, T; var1 = ((((adc_T >> 3) - ((długa ze znakiem)dig_T1 11; zmienna2 = (((((adc_T >> 4) - ((długa ze znakiem)dig_T1)) * ((adc_T>>4) - ((długa liczba ze znakiem)dig_T1))) >> 12) * ((długa liczba ze znakiem)dig_T3)) >> 14; t_fine = zm1 + zm2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int kalibracja_P(signed long int adc_P) { signed long int zm1, zm2; unsigned long int P; zmienna1 = (((signed long int)t_fine)>>1) - (signed long int)64000;zvar2 = (((zmienna1>>2) * (zmienna1>>2)) >> 11) * ((długa liczba ze znakiem)dig_P6); zmienna2 = zmienna2 + ((zmienna1*((długa liczba ze znakiem)dig_P5))2) +(((długa liczba ze znakiem)dig_P4)2)*(zmienna1>>2)) >> 13)) >>3) + ((((długa liczba ze znakiem)dig_P2) * zmienna1)>>1))>> 18; var1 = ((((32768+var1))*((długa ze znakiem)dig_P1))>>15); if (var1 == 0) { return 0; } P = (((unsigned long int)(((signed long int)1048576)-adc_P)-(var2>>12)))*3125; if(P<0x80000000) { P = (P<<1) / ((unsigned long int) var1); } else { P = (P / (long unsigned long int)var1) * 2; } var1 = (((długa liczba ze znakiem)dig_P9) * ((długa liczba ze znakiem)(((P>>3) * (P>>3))>>13)))>>12; var2 = (((długa liczba ze znakiem)(P>>2)) * ((długa liczba ze znakiem)dig_P8))>>13; P = (długa liczba bez znaku)((długa liczba bez znaku)P + ((zmienna1 + zmienna2 + dig_P7) >> 4)); powrót P; } unsigned long int kalibracja_H(signed long int adc_H) { signed long int v_x1; v_x1 = (t_fine - ((długa ze znakiem int)76800)); v_x1 = (((((adc_H << 14) -(((długa liczba ze znakiem)dig_H4) 15) * (((((((v_x1 * ((długa liczba ze znakiem)dig_H6))) >> 10) * (((v_x1 * ((długa ze znakiem int)dig_H3)) >> 11) + ((długa ze znakiem int) 32768))) >> 10) + ((długa ze znakiem int)2097152)) * ((długa ze znakiem int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((długa liczba ze znakiem)dig_H1)) >> 4)); v_x1 = (v_x1 419430400 ? 419430400: v_x1); return (długi int bez znaku)(v_x1 >> 12); }

Krok 5: Skrypty MakeCode/JavaScript

Skrypty MakeCode/JavaScript
Skrypty MakeCode/JavaScript

Pimoroni wypuścił niedawno enviro:bit, który jest wyposażony w czujnik ciśnienia BMP280, czujnik światła/koloru i mikrofon MEMS. Oferują również MicroPython i bibliotekę MakeCode/JavaScript.

Później wykorzystałem go do napisania skryptu MakeCode dla czujnika ciśnienia. Odpowiedni plik szesnastkowy można skopiować bezpośrednio do micro:bit. Kod jest wyświetlany poniżej i może być modyfikowany za pomocą internetowego edytora MakeCode.

Jest to odmiana skryptu dla dive-o-meter micro:bit. Domyślnie wyświetla różnicę ciśnień w postaci wykresu słupkowego. Naciśnięcie przycisku A ustawia ciśnienie referencyjne, naciśnięcie przycisku B wyświetla różnicę między rzeczywistym a referencyjnym ciśnieniem w hPa.

Oprócz podstawowej wersji z kodem kreskowym znajdziesz również wersję „X”, wersję z celownikiem oraz wersję „L”, które mają ułatwić czytanie.

niech Kolumna = 0

let pozostanie = 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 (przycisk. Wciśnięty(Przycisk. B)) { basic.showString("" + Delta + " hPa") basic.pause(200) basic.clearScreen() } else { Is = envirobit.getPressure() Delta = Is - Ref Meter = Math.abs(Delta) if (Metr >= 400) { Wiersz = 4 } else if (Metr >= 300) { Wiersz = 3 } else if (Metr >= 200) { Wiersz = 2 } else if (Metr >= 100) { Wiersz = 1 } else { Wiersz = 0 } pozostań = Metr - Wiersz * 100 if (pozostań >= 80) { Kolumna = 4 } else if (pozostań >= 60) { Kolumna = 3 } else if (pozostań >= 40) { Kolumna = 2 } else if (pozostań >= 20) { Kolumna = 1 } else { Kolumna = 0 } for (niech ColA = 0; ColA <= Kolumna; ColA++) { led.plot(ColA, Row) } podstawowe.pauza(500) } })

Zalecana: