Мазмұны:

Микрофонмен қысымды өлшеңіз: бит: 5 қадам (суреттермен)
Микрофонмен қысымды өлшеңіз: бит: 5 қадам (суреттермен)

Бейне: Микрофонмен қысымды өлшеңіз: бит: 5 қадам (суреттермен)

Бейне: Микрофонмен қысымды өлшеңіз: бит: 5 қадам (суреттермен)
Бейне: 💦Blackview BV9200 АДАЛ соққыға төзімді шолу 2024, Қараша
Anonim
Микро: бит көмегімен қысымды өлшеңіз
Микро: бит көмегімен қысымды өлшеңіз
Микро: бит көмегімен қысымды өлшеңіз
Микро: бит көмегімен қысымды өлшеңіз

Төмендегі нұсқаулық BMP280 қысым/температура сенсорымен бірге микро: бит көмегімен қысымды өлшеуге және Бойль заңын көрсетуге арналған қарапайым және арзан құрылғыны сипаттайды.

Бұл шприц/қысым датчигінің комбинациясы менің алдыңғы нұсқауларымда сипатталған болса, micro: bit комбинациясы жаңа мүмкіндіктерді ұсынады, мысалы. сынып бөлмелері жобалары үшін.

Сонымен қатар, микро: бит I2C сенсорымен бірге қолданылатын қосымшалардың сипаттамаларының саны әзірше шектеулі. Бұл нұсқаулық басқа жобалар үшін бастапқы нүкте болады деп үміттенемін.

Құрылғы ауа қысымының сандық өлшеулерін орындауға және нәтижелерді микродитті жарық диодты диапазонында немесе қосылған компьютерде көрсетуге мүмкіндік береді, кейінірек Arduino IDE сериялық мониторын немесе сериялық плоттер функцияларын қолданады. Сонымен қатар, сізде кері байланыс бар, өйткені сіз шприц поршенін өзіңіз итеріп немесе тартып аласыз, осылайша қажетті қуатты сезінесіз.

Әдепкі бойынша, дисплей жарықдиодты матрицада көрсетілген деңгей индикаторы бойынша қысымды бағалауға мүмкіндік береді. Arduino IDE сериялық плоттері дәл осылай жасауға мүмкіндік береді, бірақ ажыратымдылығы әлдеқайда жақсы (бейнені қараңыз). Неғұрлым күрделі шешімдер де бар, мысалы. өңдеу тілінде. Сондай -ақ, сәйкесінше A немесе B түймелерін басқаннан кейін жарық диодты матрицада қысым мен температураның дәл өлшенген мәндерін көрсетуге болады, бірақ Arduino IDE сериялық мониторы жылдамырақ болады, бұл мәндерді нақты уақыт режимінде көрсетуге мүмкіндік береді.

Құрылғыны жасауға кететін жалпы шығындар мен техникалық дағдылар өте төмен, сондықтан бұл мұғалімнің бақылауымен жақсы сыныптық жоба болуы мүмкін. Сонымен қатар, бұл құрылғы физикаға бағытталған STEM жобаларының құралы бола алады немесе күш немесе салмақ цифрлық мәнге айналатын басқа жобаларда қолданылады.

Бұл принцип өте қарапайым микро: биіктігі бойынша суға түсу өлшегішін жасау үшін қолданылды.

27 мамыр-2018 қосымша:

Pimoroni BMP280 сенсоры үшін MakeCode кітапханасын жасағандықтан, бұл маған осында сипатталған құрылғы үшін қолданылатын сценарийді жасауға мүмкіндік берді. Сценарий мен сәйкес HEX файлын осы нұсқаулықтың соңғы қадамынан табуға болады. Оны пайдалану үшін HEX файлын micro: bitке жүктеңіз. Арнайы бағдарламалық қамтамасыз етудің қажеті жоқ, және сіз сценарийді өңдеу үшін MakeCode онлайн редакторын қолдана аласыз.

1 -қадам: Қолданылған материалдар

Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
Қолданылған материалдар
  • Микро: бит, менікі Пиморониден алынды - 13.50 фунт стерлинг
  • Kitronic Edge Connector for micro: bit - Pimoroni арқылы - 5 GBP, Ескерту: Pimorini енді I2C порттарындағы түйреуіштері бар pin: bit деп аталатын тақтаға ыңғайлы жиекті қосқышты ұсынады.
  • 2 х 2 түйреуіш жолақтары
  • Micro үшін батарея немесе LiPo: бит (қажет емес, бірақ пайдалы), қосқышы бар батарея кабелі (dito) - Pimoroni
  • датчиктерді Edge коннекторына қосуға арналған өтпелі кабельдер
  • датчикке арналған ұзын (!) өтпелі кабельдер, кем дегенде шприцке дейін, f/f немесе f/m
  • BMP280 қысым мен температура сенсоры - Banggood - үш бірлік үшін 5 АҚШ доллары Бұл сенсордың өлшеу ауқымы 550 мен 1537 гПа аралығында.
  • Резеңке тығыздағышпен 150 мл пластикалық катетерлік шприц - Amazon немесе аппараттық және бақша дүкендері - шамамен 2-3 АҚШ доллары
  • ыстық желім/ыстық желім тапаншасы
  • дәнекерленген темір
  • Arduino IDE орнатылған компьютер

2 -қадам: құрастыру бойынша нұсқаулық

Құрастыру нұсқаулары
Құрастыру нұсқаулары
Құрастыру нұсқаулары
Құрастыру нұсқаулары
Құрастыру нұсқаулары
Құрастыру нұсқаулары

Дәнекердің тақырыптары BMP280 сенсорының үзілуіне.

2 істікшелі екі тақырыпты Edge коннекторының 19 және 20 істікшелеріне дәнекерлеңіз (суретті қараңыз).

Micro: bit -ті Edge коннекторына және компьютерге қосыңыз.

Adafruit micro: bit нұсқауларында сипатталғандай бағдарламалық жасақтама мен микро: бит дайындаңыз. Оларды мұқият оқып шығыңыз.

Arduino IDE -ге қажетті кітапханаларды орнатыңыз.

Кейінгі қадамда бекітілген BMP280 сценарийін ашыңыз.

Сенсорды Edge коннекторына қосыңыз. GND - 0V, VCC - 3V, SCL - 19 істікке, SDA - 20 істікке.

Сценарийді micro: bitке жүктеңіз.

Сенсор ақылға қонымды деректер беретінін тексеріңіз, қысым мәндері сериялық мониторда көрсетілетін 1020 гПа шамасында болуы керек. Бұл жағдайда алдымен кабельдер мен қосылымдарды тексеріңіз, содан кейін бағдарламалық жасақтаманы орнатып, дұрыстаңыз.

Микро: бит өшіріңіз, сенсорды алыңыз.

Ұзын секіргіш кабельдерді шприцтің шығысы арқылы өткізіңіз. Егер сізге тесікті кеңейту қажет болса. Сымдардың зақымдалуын болдырмау үшін абай болыңыз.

Сенсорды өтпелі кабельдерге қосыңыз. Қосылымдардың дұрыс және жақсы екенін тексеріңіз. Микро: битке қосылыңыз.

Сенсордың дұрыс жұмыс істеп тұрғанын тексеріңіз. Кабельдерді абайлап тартып, сенсорды шприцтің жоғарғы жағына жылжытыңыз.

Поршеньді салыңыз және оны қалаған қалыптан (100 мл) сәл алға жылжытыңыз.

Шприц розеткасының соңына ыстық желім қосып, поршеньді сәл артқа жылжытыңыз. Шприцтің ауа өткізбейтінін тексеріңіз, әйтпесе ыстық желімді қосыңыз. Ыстық желімді суытыңыз.

Сенсор жұмыс істеп тұрғанын қайтадан тексеріңіз. Егер поршеньді жылжытсаңыз, сериялық монитордағы және микро: бит дисплейіндегі сандар өзгеруі керек.

Қажет болса, шприцтің көлемін тығыздағыштың жанында қысу және поршеньді жылжыту арқылы реттеуге болады.

3 -қадам: Біршама теория және кейбір практикалық өлшеулер

Біршама теория және кейбір практикалық өлшемдер
Біршама теория және кейбір практикалық өлшемдер
Біршама теория және кейбір практикалық өлшемдер
Біршама теория және кейбір практикалық өлшемдер

Мұнда сипатталған құрылғы көмегімен физиканың қарапайым эксперименттерінде қысу мен қысымның корреляциясын көрсетуге болады. Шприцте «мл» шкаласы бар болғандықтан, тіпті сандық эксперименттерді орындау оңай.

Оның теориясы: Бойль заңы бойынша [Көлем * Қысым] - берілген температурадағы газдың тұрақты мәні.

Бұл дегеніміз, егер сіз берілген газ көлемін N есе қыссаңыз, яғни соңғы көлемі түпнұсқаның 1/N есе болса, оның қысымы N есе артады, мысалы: P0*V0 = P1*V1 = кемшіліктер t. Қосымша ақпарат алу үшін Википедиядағы газ заңдары туралы мақаланы қараңыз. Теңіз деңгейінде барометрлік қысым әдетте 1010 гПа (гекто Паскаль) диапазонында болады.

Сондықтан демалыс нүктелерінен бастап, мысалы. V0 = 100 мл және P0 = 1000 гПа, ауаның шамамен 66 мл -ге дейін қысылуы (яғни V1 = 2/3 * V0) шамамен 1500 гПа қысымға әкеледі (Р0 = P1 = 3/2). Поршеньді 125 мл (көлемі 5/4 есе) тартқанда, қысым шамамен 800 гПа (4/5 қысым) болады. Мұндай қарапайым құрылғы үшін өлшеулер өте дәл.

Құрылғы шприцте ауаның салыстырмалы түрде аз мөлшерін қысу немесе кеңейту үшін қанша күш қажет екендігі туралы тікелей хаптический әсер алуға мүмкіндік береді.

Бірақ біз сонымен қатар кейбір есептеулер жүргізіп, оларды эксперименталды түрде тексере аламыз. Ауаны 1500 гПа дейін қысамыз, 1000 гПа базальды барометрлік қысымда. Қысымның айырмашылығы 500 гПа немесе 50 000 Па. Менің шприцім үшін поршень диаметрі (d) шамамен 4 см немесе 0,04 метр.

Енді поршеньді осы қалыпта ұстауға қажетті күшті есептеуге болады. Берілген P = F/A (Қысым - күштің ауданға бөлінуі) немесе түрлендірілген F = P*A. SI күшінің бірлігі - «Ньютон» N, ұзындығы «Метр» м үшін, ал 1 Па 1 шаршы метрге 1N. Дөңгелек поршень үшін ауданды A = ((d/2)^2)*pi көмегімен есептеуге болады, бұл менің шприцім үшін 0,00125 шаршы метрді береді. Сонымен

50 000 Па * 0,00125 м^2 = 63 Н.

Жерде 1 Н 100 грамм салмақпен байланысты, сондықтан 63 Н 6,3 кг салмаққа тең.

Мұны шкаланың көмегімен оңай тексеруге болады. Шприцті поршеньмен таразыға басыңыз, шамамен 1500 гПа қысымға жеткенше таразыны оқыңыз. Немесе таразыда шамамен 6-7 кг көрсетілмейінше басыңыз, содан кейін «А» түймесін басып, micro: bit жарықдиодты матрицасында көрсетілген мәнді оқыңыз. Белгілі болғандай, жоғарыдағы есептеулерге негізделген бағалау жаман болған жоқ. 1500 гПа -дан сәл жоғары қысым дене салмағындағы шамамен 7 кг «салмаққа» қатысты (суреттерді қараңыз). Сіз сондай -ақ бұл ұғымды өзгерте аласыз және құрылғыны қысымды өлшеуге негізделген қарапайым цифрлық шкаланы құруға қолдана аласыз.

Датчиктің жоғарғы шегі шамамен 1540 гПа екенін ескеріңіз, сондықтан одан жоғары қысымды өлшеуге болмайды және сенсорды зақымдауы мүмкін.

Білім беру мақсаттарынан басқа, бұл жүйені кейбір нақты әлемдегі қосымшалар үшін де қолдануға болады, себебі ол плунжерді басқа жолмен жылжытуға тырысатын күштерді сандық түрде өлшеуге мүмкіндік береді. Осылайша сіз поршеньге түскен салмақты немесе поршеньге соғылатын күшті өлшей аласыз. Немесе шамды немесе дыбыстық сигналды қосатын немесе белгілі бір шекті мәнге жеткеннен кейін дыбысты ойнататын қосқышты жасаңыз. Немесе сіз поршеньге қолданылатын күштің күшіне байланысты жиілікті өзгертетін музыкалық аспап жасай аласыз. Немесе оны ойын контроллері ретінде қолданыңыз. Өз қиялыңызды қолданыңыз және ойнаңыз!

4 -қадам: MicroPython сценарийі

Сіз менің BMP280 сценарийін микро: битке қосасыз. Бұл BMP/BME280 сценарийінің туындысы, мен бір жерден Banggood веб -сайтынан таптым, ол Adafruit's Microbit кітапханасымен біріктірілген. Біріншісі Banggood сенсорын пайдалануға мүмкіндік береді, екіншісі 5x5 жарықдиодты дисплеймен жұмыс істеуді жеңілдетеді. Мен екеуінің де әзірлеушілеріне алғысымды білдіремін.

Әдепкі бойынша, сценарий қысымды өлшеу нәтижелерін 5 қадаммен микро: бит 5х5 жарықдиодты дисплейінде көрсетеді, бұл өзгерістерді аз кідіріспен көруге мүмкіндік береді. Нақты мәндерді Arduino IDE сериялық мониторында қатар көрсетуге болады немесе неғұрлым егжей -тегжейлі графикті Arduino IDE серальды плоттері көрсетуге болады.

Егер А түймесін бассаңыз, өлшенген қысым мәндері микро: бит 5х5 жарық диодты массивінде көрсетіледі. B түймесін бассаңыз, температура мәндері көрсетіледі. Бұл дәл деректерді оқуға мүмкіндік береді, бірақ өлшеу циклдарын айтарлықтай баяулатады.

Мен тапсырмаларды бағдарламалаудың және сценарийді жетілдірудің әлдеқайда талғампаз әдістері бар екеніне сенімдімін. Кез келген көмек құпталады.

#xxx қосыңыз

#Adafruit_Microbit_Matrix микробитін қосыңыз; #BME280_ADDRESS 0x76 белгісіз ұзақ int hum_raw, temp_raw, pres_raw анықтау; long 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 мәні 1; int мәні2; int мәні 3; int мәні 4; // ------------------------------------------------ -------------------------------------------------- ------------------ 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 сүзгі = 0; // Сүзгілеу uint8_t spi3w_kz = 0; // 3 сымды SPI uint8_t ctrl_meas_reg = (osrs_t << 5) өшіру | (osrs_p << 2) | режим; uint8_t config_reg = (t_sb << 5) | (сүзгі << 2) | spi3w_kz; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // Serial.println («Температура [градус C]»); // 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); } // ----------------------------------------------- -------------------------------------------------- -------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; long int temp_cal қол қойылды; қол қойылмаған long int press_cal, hum_cal; int N; // LED матрицасының дисплейі үшін шекті мәндерді орнатыңыз, hPa қос max_0 = 1100; қос max_1 = 1230; қос max_2 = 1360; қос 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 (); // жарықдиодты матрицаны қалпына келтіру /* 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 мәндерімен анықталатын шектер if (press_act> max_3) {(N = 0); // жоғарғы жол} else if if (press_act> max_2) {(N = 1); } else if (press_act> max_1) {(N = 2); } if if (press_act> max_0) {(N = 3); } басқа {(N = 4); // негізгі жол} // Serial.println (N); // даму мақсатында // microbit.print (N); // Line ретінде // microbit.drawLine (N, 0, 0, 4, LED_ON); // мәндерді келесі жолдың мәніне ауыстыру4 = мән3; мән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, мән3, 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 (); Wire.requestFrom (BME280_ADDRESS, 24); // 2014 ж. Түзету (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // 2014/Wire.write қосу (0xA1); // 2014 қосу/Wire.endTransmission (); // 2014/Wire.requestFrom қосу (BME280_ADDRESS, 1); // 2014 қосу/деректер = Wire.read (); // 2014/i ++ қосу; // 2014 жыл қосу/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // 2014 ж. Түзету (Wire.available ()) {data = Wire.read (); i ++; } 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/} жарамсыз WriteReg түзету (uint8_t reg_address, uint8_t деректері) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (деректер); Wire.endTransmission (); }

жарамсыз readData ()

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

қол қойылған long int calibration_T (қол қойылған long int adc_T)

{қол қойылған long int var1, var2, T; var1 = (((((adc_T >> 3) - ((long long int) dig_T1 11; var2 = {) - ((қол қойылған long int) dig_T1))) >> 12) * ((қол қойылған ұзақ int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; қайтару T;} белгісіз long int calibration_P (қол қойылған long int adc_P) {қол қойылған long int var1, var2; белгісіз ұзақ int P; var1 = (((қол қойылған ұзақ int) t_fine) >> 1) - (қол қойылған long int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((қол қойылған long int) dig_P6); var2 = var2 + ((var1 * ((қол қойылған ұзақ int) dig_P5)) 2) + (((қол қойылған long int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + (((((ұзақ қол қойылған int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768+var1))**((long int) dig_P1)) >> 15); if (var1 == 0) {қайтару 0; } P = (((unsigned long int) (((қол қойылған long 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 = (((қол қойылған long int) dig_P9) * ((қол қойылған long int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((long long int) (P >> 2)) * ((long long int) dig_P8)) >> 13; P = (unsigned long int) ((қол қойылған long int) P + ((var1 + var2 + dig_P7) >> 4)); қайтару P; } unsigned long int calibration_H (қол қойылған long int adc_H) {қол қойылған long int v_x1; v_x1 = (t_fine - ((қолы ұзақ int) 76800)); v_x1 = ((((((adc_H << 14) -(((ұзын int) dig_H4) 15) * (((((((v_x1 * ((long long int) dig_H3)) >> 11) + ((long long int) 32768))) >> 10) + ((long long int) 2097152)) * ((long long 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 сценарийлері

MakeCode/JavaScript сценарийлері
MakeCode/JavaScript сценарийлері

Pimoroni жақында BMP280 қысым датчигімен, жарық/түс сенсорымен және MEMS микрофонымен бірге келетін эквивалент: бит шығарды. Олар сонымен қатар MicroPython мен MakeCode/JavaScript кітапханасын ұсынады.

Мен кейінірек қысым датчигіне MakeCode сценарийін жаздым. Тиісті он алтылық файлды тікелей сіздің микро: битке көшіруге болады. Код төменде көрсетілген және оны MakeCode онлайн редакторының көмегімен өзгертуге болады.

Бұл micro: bit dive-o-meter сценарийінің нұсқасы. Әдепкі бойынша қысым айырмасын жолақтық график түрінде көрсетеді. А түймешігін басу сілтеме қысымын орнатады, В түймесін басу нақты және сілтеме қысымының арасындағы айырмашылықты көрсетеді.

Штрих -кодтың негізгі нұсқасынан басқа сіз оқуды жеңілдетуге арналған «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) if (Метр> = 400) {Row = 4} if if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {Row = 1} else {Row = 0} stay = Meter - Жол * 100 if if (stay> = 80) {Баған = 4} else if (қалу> = 60) {Баған = 3} else (қалу> = 40) {Бағана = 2 } else if (қалу> = 20) {Баған = 1} басқа {Баған = 0} үшін (ColA = 0 болсын; ColA <= Баған; ColA ++ болсын) {led.plot (ColA, Жол)} негізгі.кідірту (500)}})

Ұсынылған: