Բովանդակություն:
- Քայլ 1: Օգտագործված նյութեր
- Քայլ 2: Հավաքման ցուցումներ
- Քայլ 3. Մի քիչ տեսություն և որոշ գործնական չափումներ
- Քայլ 4: MicroPython Script
- Քայլ 5: MakeCode/JavaScript սցենարներ
Video: Չափել ճնշումը ձեր միկրո միջոցով. Բիթ ՝ 5 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Հետևյալ հրահանգը նկարագրում է հեշտ կառուցվող և էժան սարք `ճնշման չափումներ կատարելու և Բոյլի օրենքը ցուցադրելու համար` օգտագործելով միկրո. Բիթը `BMP280 ճնշման/ջերմաստիճանի տվիչի հետ համատեղ:
Մինչդեռ ներարկիչ/ճնշման սենսորային համակցությունն արդեն նկարագրված է իմ նախորդ հրահանգներից մեկում, միկրո: բիթի հետ համադրությունը նոր հնարավորություններ է տալիս, օրինակ. դասասենյակի նախագծերի համար:
Բացի այդ, առայժմ բավականին սահմանափակ է այն ծրագրերի նկարագրությունների թիվը, որոնցում միկրո: բիթը օգտագործվում է I2C շարժիչ ցուցիչի հետ համատեղ: Հուսով եմ, որ սա ուսանելի կարող է լինել այլ նախագծերի մեկնարկային կետը:
Սարքը թույլ է տալիս իրականացնել օդային ճնշման քանակական չափումներ և արդյունքները ցուցադրել միկրո: բիթ LED զանգվածում կամ միացված համակարգչում, Arduino IDE- ի սերիական մոնիտորի կամ սերիական գծագրիչի գործառույթների հետագա օգտագործման համար: Բացի այդ, դուք ունեք հապտիկ արձագանք, քանի որ ինքներդ եք հրում կամ քաշում ներարկիչի մխոցը և դրանով զգում անհրաժեշտ ուժը:
Լռելյայն, էկրանը թույլ է տալիս գնահատել ճնշումը LED մատրիցի վրա ցուցադրված մակարդակի ցուցիչով: Arduino IDE- ի սերիական գծանկարը թույլ է տալիս անել նույնը, բայց շատ ավելի լավ լուծմամբ (տես տեսանյութը): Առավել մանրակրկիտ լուծումներ կան նաև, օրինակ. մշակման լեզվով: Դուք նաև կարող եք ցուցադրել ճնշման և ջերմաստիճանի ճշգրիտ չափված արժեքները LED մատրիցի վրա համապատասխանաբար A կամ B կոճակները սեղմելուց հետո, սակայն Arduino IDE- ի սերիական մոնիտորը շատ ավելի արագ է, ինչը թույլ է տալիս ցուցադրել արժեքները գրեթե իրական ժամանակում:
Ընդհանուր ծախսերը և սարքը կառուցելու համար պահանջվող տեխնիկական հմտությունները բավականին ցածր են, ուստի դա կարող է լինել դասարանների գեղեցիկ նախագիծ ուսուցչի հսկողության ներքո: Բացի այդ, սարքը կարող է գործիք լինել STEM- ի նախագծերի համար `կենտրոնանալով ֆիզիկայի վրա կամ օգտագործվել այլ նախագծերում, որտեղ ուժը կամ քաշը պետք է փոխակերպվեն թվային արժեքի:
Սկզբունքն օգտագործվել է շատ պարզ միկրո կառուցելու համար. Bit dive-o-meter, սարք, որը չափում է, թե որքան խորությամբ ես սուզվում:
Հավելված 27-Մայիս -2018:
Քանի որ Պիմորոնին մշակել է MakePode գրադարան BMP280 սենսորի համար, սա ինձ հնարավորություն տվեց մշակել սցենար, որը կօգտագործվի այստեղ նկարագրված սարքի համար: Սցենարը և համապատասխան HEX ֆայլը կարելի է գտնել այս հրահանգի վերջին քայլում: Այն օգտագործելու համար պարզապես բեռնեք HEX ֆայլը ձեր micro: bit- ում: Հատուկ ծրագրային ապահովման կարիք չկա, և սցենարը խմբագրելու համար կարող եք օգտագործել MakeCode առցանց խմբագիրը:
Քայլ 1: Օգտագործված նյութեր
- Միկրո
- Kitronic Edge միակցիչ միկրո.
- 2 x 2 քորոց վերնագրի շերտեր
- Մարտկոց կամ LiPo միկրո համար. Բիթ (անհրաժեշտ չէ, բայց օգտակար), մարտկոցի մալուխ անջատիչով (dito) - Pimoroni
- jumper մալուխներ սենսորների Edge միակցիչին միացնելու համար
- երկար (!) jumper մալուխներ սենսորի համար, առնվազն այնքան երկար, որքան ներարկիչը, f/f կամ f/m
- BMP280 ճնշման և ջերմաստիճանի տվիչ - Banggood - 5 ԱՄՆ դոլար երեք միավորի համար: Այս տվիչի չափման միջակայքը 550 -ից 1537 hPa- ի միջև է:
- 150 մլ պլաստիկ կաթետերի ներարկիչ `ռետինե միջադիրով - Amazon կամ սարքավորումների և այգիների խանութներ` մոտ 2 - 3 ԱՄՆ դոլար
- տաք սոսինձ/տաք սոսինձ ատրճանակ
- զոդման երկաթ
- համակարգիչ Arduino IDE- ով տեղադրված
Քայլ 2: Հավաքման ցուցումներ
Oldոդման վերնագրեր BMP280 սենսորային ճեղքման վրա:
2ոդեք երկու 2 քորոց վերնագրերը Edge միակցիչի 19 և 20 միակցիչներին (տես նկարը):
Միացրեք միկրո: բիթը Edge միակցիչին և ձեր համակարգչին:
Պատրաստեք ծրագրակազմ և միկրո. Բիթ, ինչպես նկարագրված է Adafruit micro: bit հրահանգներում: Կարդացեք դրանք մանրակրկիտ:
Տեղադրեք անհրաժեշտ գրադարանները Arduino IDE- ում:
Բացեք BMP280 սցենարը, որը կցված է հետագա քայլին:
Սենսորը միացրեք Edge միակցիչին: GND- ից 0V, VCC- ից մինչև 3V, SCL- ից 19 -ին, SDA- ից `20 -ից:
Վերբեռնեք սցենարը միկրո: bit.
Ստուգեք, որ սենսորը տալիս է ողջամիտ տվյալներ, ճնշման արժեքները պետք է լինեն մոտ 1020 hPa ՝ ցուցադրված սերիական մոնիտորի վրա: Այդ դեպքում նախ ստուգեք մալուխներն ու միացումները, այնուհետև ծրագրաշարի տեղադրումը և ուղղեք:
Անջատեք միկրո. Բիթ, հեռացրեք սենսորը:
Ներարկիչի ելքի միջով անցեք երկար թռիչքի մալուխները: Այն դեպքում, երբ գուցե ստիպված լինեք ընդլայնել բացվածքը: Carefulգույշ եղեք, բաց թողեք, որ մալուխները վնասվում են:
Միացրեք սենսորը jumper մալուխներին: Ստուգեք, որ կապերը ճիշտ և լավ են: Միացեք միկրոին `բիթ:
Ստուգեք, որ սենսորը ճիշտ է աշխատում: Fullyգուշորեն քաշեք մալուխները, սենսորը տեղափոխեք ներարկիչի վերև:
Տեղադրեք մխոցը և տեղափոխեք այն մի փոքր ավելի, քան ցանկալի հանգստի դիրքը (100 մլ):
Ներարկիչի ելքի ծայրին ավելացրեք տաք սոսինձ և մխոցը մի փոքր հետ տարեք: Ստուգեք, արդյոք ներարկիչը փակ է օդով, հակառակ դեպքում ավելացրեք ավելի շատ տաք սոսինձ: Թող տաք սոսինձը սառչի:
Կրկին ստուգեք, որ սենսորը աշխատում է: Եթե դուք տեղափոխում եք մխոցը, ապա սերիական մոնիտորի և միկրո: բիտի էկրանին թվերը պետք է փոխվեն:
Անհրաժեշտության դեպքում կարող եք կարգավորել ներարկիչի ծավալը `սեղմելով այն միջադիրի մոտ և շարժելով մխոցը:
Քայլ 3. Մի քիչ տեսություն և որոշ գործնական չափումներ
Այստեղ նկարագրված սարքի միջոցով դուք կարող եք ցույց տալ սեղմման և ճնշման հարաբերակցությունը ֆիզիկայի պարզ փորձերում: Քանի որ ներարկիչն իր վրա պարունակում է «մլ» մասշտաբով, նույնիսկ քանակական փորձերը հեշտ է իրականացնել:
Դրա հիմքում ընկած տեսությունը. Բոյլի օրենքի համաձայն, [umeավալը * ureնշում] տվյալ ջերմաստիճանում գազի հաստատուն արժեքն է:
Սա նշանակում է, որ եթե սեղմում եք տվյալ ծավալի գազի N- ծալքը, այսինքն `վերջնական ծավալը օրիգինալից 1/N անգամ է, դրա ճնշումը կբարձրանա N- անգամ, քանի որ ՝ P0*V0 = P1*V1 = մինուս տ. Լրացուցիչ մանրամասների համար խնդրում ենք ծանոթանալ գազի մասին օրենքների վերաբերյալ Վիքիպեդիայի հոդվածին: Seaովի մակարդակում բարոմետրիկ ճնշումը սովորաբար գտնվում է 1010 hPa (հեկտո Պասկալ) միջակայքում:
Այսպիսով, սկսած հանգստավայրերից, օրինակ. V0 = 100 մլ և P0 = 1000 hPa, օդի սեղմումը մինչև 66 մլ (այսինքն ՝ V1 = 2/3 * V0) կհանգեցնի մոտ 1500 hPa ճնշման (P1 = 3/2 P0): Մխոցը 125 մլ -ով քաշելը (5/4 անգամ ծավալը) հանգեցնում է մոտ 800 hPa ճնշման (4/5 ճնշում) ճնշման: Չափումները զարմանալիորեն ճշգրիտ են նման պարզ սարքի համար:
Սարքը թույլ է տալիս ուղղակի հապտիկ տպավորություն թողնել, թե որքան ուժ է պահանջվում ներարկիչում համեմատաբար փոքր քանակությամբ օդը սեղմելու կամ ընդլայնելու համար:
Բայց մենք կարող ենք նաև որոշ հաշվարկներ կատարել և դրանք փորձնականորեն ստուգել: Ենթադրենք, մենք օդը սեղմում ենք մինչև 1500 hPa, 1000 hPa բազալոմետրիկ ճնշման դեպքում: Այսպիսով, ճնշման տարբերությունը 500 hPa է, կամ 50, 000 Pa: Իմ ներարկիչի համար մխոցի տրամագիծը (դ) կազմում է մոտ 4 սմ կամ 0.04 մետր:
Այժմ կարող եք հաշվարկել մխոցն այդ դիրքում պահելու համար անհրաժեշտ ուժը: Հաշվի առնելով P = F/A (ureնշումը ուժ է բաժանված տարածքի վրա), կամ փոխակերպված F = P*A: SI ուժի միավորը «Նյուտոն» N է, «Մետր» մ երկարության համար, և 1 Pa- ն 1N քառակուսի մետրի համար է: Կլոր մխոցի համար տարածքը կարելի է հաշվարկել ՝ օգտագործելով A = ((d/2)^2)*pi, որը 0.00125 քմ է տալիս իմ ներարկիչի համար: Այսպիսով, 50, 000 Պա * 0,00125 մ^2 = 63 Ն
Երկրի վրա 1 N- ը փոխկապակցված է 100 գր քաշի հետ, ուստի 63 N- ը հավասար է 6.3 կգ քաշ պահելուն:
Սա կարելի է հեշտությամբ ստուգել ՝ օգտագործելով սանդղակ: Ներարկիչը մխոցով մղեք կշեռքի վրա, մինչև մոտ 1500 hPa ճնշման հասնելը, ապա կարդացեք սանդղակը: Կամ սեղմեք մինչև սանդղակը ցույց տա մոտ 6-7 կգ, այնուհետև կտտացրեք «A» կոճակին և կարդացեք միկրո: բիթի LED մատրիցի վրա ցուցադրված արժեքը: Ինչպես պարզվեց, վերը նշված հաշվարկների հիման վրա կատարված գնահատականը վատ չէր: 1500 hPa- ից փոքր -ինչ բարձր ճնշումը փոխկապակցված է մարմնի մասշտաբով մոտ 7 կգ ցուցադրվող «քաշի» հետ (տես նկարները): Կարող եք նաև շրջել այս հայեցակարգը և օգտագործել սարքը ճնշման չափումների վրա հիմնված պարզ թվային սանդղակ կառուցելու համար:
Խնդրում ենք նկատի ունենալ, որ սենսորի վերին սահմանը մոտ 1540 hPa է, այնպես որ դրանից բարձր ճնշումը չի կարող չափվել և կարող է վնասել սենսորը:
Կրթական նպատակներից բացի, համակարգը կարող է օգտագործվել նաև իրական աշխարհի որոշ ծրագրերի համար, քանի որ այն թույլ է տալիս քանակականորեն չափել այն ուժերը, որոնք փորձում են մխոցիչը այս կամ այն կերպ շարժել: Այսպիսով, դուք կարող եք չափել մխոցիչի վրա դրված կշիռը կամ մխոցիչի վրա հարվածող ուժը: Կամ կառուցեք անջատիչ, որն ակտիվացնում է լույսը կամ ազդանշանը կամ հնչում է ձայնը որոշակի շեմի արժեքի հասնելուց հետո: Կամ դուք կարող եք կառուցել երաժշտական գործիք, որը փոխում է հաճախականությունը ՝ կախված մխոցիչի նկատմամբ կիրառվող ուժի ուժից: Կամ օգտագործեք այն որպես խաղի վերահսկիչ: Օգտագործեք ձեր երևակայությունը և խաղացեք:
Քայլ 4: MicroPython Script
Կից դուք գտնում եք իմ BMP280 սցենարը միկրո: բիտի համար: Այն BMP/BME280 սցենարի ածանցյալ է, որը ես գտել եմ ինչ -որ տեղ Banggood կայքում ՝ զուգորդված Adafruit- ի Microbit գրադարանով: Առաջինը թույլ է տալիս օգտագործել Banggood սենսորը, երկրորդը պարզեցնում է 5x5 LED էկրանով աշխատելը: Շնորհակալություն եմ հայտնում երկուսի մշակողներին:
Լռելյայն, սցենարը ցուցադրում է ճնշման չափումների արդյունքները 5 քայլով միկրո. Valuesշգրիտ արժեքները կարող են զուգահեռաբար ցուցադրվել Arduino IDE սերիալային մոնիտորի վրա, կամ ավելի մանրամասն գրաֆիկը կարող է ցուցադրվել Arduino IDE- ի սելարային գծապատկերով:
Եթե սեղմում եք A կոճակը, չափված ճնշման արժեքները ցուցադրվում են micro: bit- ի 5x5 LED զանգվածում: Եթե սեղմում եք B կոճակը, ցուցադրվում են ջերմաստիճանի արժեքները: Չնայած դա թույլ է տալիս կարդալ ճշգրիտ տվյալները, զգալիորեն դանդաղեցնում է չափման ցիկլերը:
Վստահ եմ, որ առաջադրանքները ծրագրավորելու և սցենարը բարելավելու շատ ավելի էլեգանտ եղանակներ կան: Helpանկացած օգնություն ողջունելի է:
#ներառել xxx
#ներառել Adafruit_Microbit_Matrix microbit; #սահմանեք BME280_ADDRESS 0x76 անստորագիր երկար int hum_raw, temp_raw, pres_raw; ստորագրված երկար int t_fine; uint16_t փորել_Տ 1; int16_t dig_T2; int16_t dig_T3; uint16_t փորել_Փ 1; int16_t dig_P2; int16_t dig_P3; int16_t dig_P4; int16_t dig_P5; int16_t փորել_Փ 6; int16_t dig_P7; int16_t dig_P8; int16_t dig_P9; int8_t փորել_Հ 1; int16_t փորել_Հ2; int8_t փորել_Հ 3; int16_t dig_H4; int16_t dig_H5; int8_t փորել_Հ 6; // չափված արժեքների բեռնարկղեր int արժեք 0; int արժեք 1; int արժեք 2; int արժեք 3; int արժեք 4; // ---------------------------------------------------- ------------------------------------------------------ ------------------ անվավեր կարգավորում () {uint8_t osrs_t = 1; // peratերմաստիճանի գերազանցում x 1 uint8_t osrs_p = 1; // ureնշման գերբարձրացում x 1 uint8_t osrs_h = 1; // Խոնավության գերազանցում x 1 uint8_t ռեժիմ = 3; // Նորմալ ռեժիմ uint8_t t_sb = 5; // Tstandby 1000ms uint8_t զտիչ = 0; // terտել անջատված uint8_t spi3w_en = 0; // 3-մետաղալար SPI Անջատել uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | ռեժիմ; uint8_t config_reg = (t_sb << 5) | (զտիչ << 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 («peratերմաստիճանը [աստիճան C]»); // Serial.print ("\ t"); Serial.print («ureնշում [hPa]»); // վերնագիր Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); ուշացում (1000); } // --------------------------------------------------- ------------------------------------------------------ -------- դատարկ շրջան () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; ստորագրված երկար int temp_cal; անստորագիր երկար 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 (); // վերակայել 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)) {// թվերի արժեքների ցուցադրումը հետաձգում է microbit.print շրջանակների չափումը («T:»); microbit.print (temp_act, 1); microbit.print ("'C"); // Serial.println (""); } այլ եթե (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (press_act, 0); microbit.print («hPa»); } else {// ճնշման արժեքների ցուցադրում որպես պիքսել կամ գծեր որոշակի մակարդակում // 5 քայլ ՝ 1490 hPa // max_n արժեքներով սահմանված շեմեր, եթե (press_act> max_3) {(N = 0); // վերին տող} այլապես եթե (press_act> max_2) {(N = 1); } else if (press_act> max_1) {(N = 2); } else if (press_act> max_0) {(N = 3); } այլ {(N = 4); // բազային տող} // Serial.println (N); // զարգացման նպատակով // microbit.print (N); // որպես տող // microbit.drawLine (N, 0, 0, 4, LED_ON); // արժեքները տեղափոխել հաջորդ տողի արժեք 4 = արժեք 3; արժեք 3 = արժեք 2; արժեք 2 = արժեք 1; արժեք 1 = արժեք 0; արժեք 0 = N; // նկարել պատկերը, սյունակ սյունակով microbit.drawPixel (0, արժեք 0, LED_ON); // որպես Pixel: սյունակ, տող: 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 տվյալներ [32], i = 0; // Ուղղել 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (BME280_ADDRESS, 24); // Fix 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Ավելացնել 2014/Wire.write (0xA1); // Ավելացնել 2014/Wire.endTransmission (); // Ավելացնել 2014/Wire.request. From (BME280_ADDRESS, 1); // Ավելացնել 2014/տվյալներ = Wire.read (); // Ավելացնել 2014/i ++; // Ավելացնել 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Մետաղալար. Խնդրանք (BME280_ADDRESS, 7); // Fix 2014/while (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]; // Fix 2014/} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (տվյալներ); Wire.endTransmission (); }
void readData ()
{int i = 0; uint32_t տվյալներ [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Մետաղալար. Խնդրանք (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]; }
ստորագրված երկար int calibration_T (ստորագրված երկար int adc_T)
{ստորագրված երկար int var1, var2, T; var1 = ((((adc_T >> 3) - ((ստորագրված երկար int) dig_T1 11; var2 = (((((adc_T >> 4) - ((ստորագրված երկար int) dig_T1)) * ((adc_T >> 4) - ((ստորագրված երկար int) dig_T1))) >> 12) * ((ստորագրված երկար int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; վերադարձ T;} անստորագիր երկար int calibration_P (ստորագրված երկար int adc_P) {ստորագրված երկար int var1, var2; անստորագիր երկար int P; var1 = (((ստորագրված երկար int) t_fine) >> 1) - (ստորագրված երկար int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((ստորագրված երկար int) dig_P6); var2 = var2 + ((var1 * ((ստորագրված երկար int) dig_P5)) 2) + (((ստորագրված երկար int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((ստորագրված երկար int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768+var1))*((ստորագրված երկար int) dig_P1)) >> 15); if (var1 == 0) {վերադարձ 0; } P = (((չստորագրված երկար int) (((ստորագրված երկար int) 1048576) -adc_P)-(var2 >> 12)))*3125; եթե (P <0x80000000) {P = (P << 1) / ((անստորագիր երկար int) var1); } else {P = (P / (unsigned long int) var1) * 2; } var1 = (((ստորագրված երկար int) dig_P9) * ((ստորագրված երկար int) (((P >> 3) * (P >> 3)) >> 13))] 12; var2 = (((ստորագրված երկար int) (P >> 2)) * ((ստորագրված երկար int) dig_P8)) >> 13; P = (անստորագիր երկար int) ((ստորագրված երկար int) P + ((var1 + var2 + dig_P7) >> 4)); վերադարձ P; } unsigned long int calibration_H (ստորագրված long int adc_H) {ստորագրված երկար int v_x1; v_x1 = (t_fine - ((ստորագրված երկար int) 76800)); v_x1 = (((((adc_H << 14) -(((ստորագրված երկար int) dig_H4) 15) *) ((((((v_x1 * ((ստորագրված երկար int) dig_H6)) >> 10) * (((v_x1 * ((ստորագրված երկար int) dig_H3)) >> 11) + ((ստորագրված երկար int) 32768))) >> 10) + ((ստորագրված երկար int) 2097152)) * ((ստորագրված երկար 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 սցենարներ
Pimoroni- ն վերջերս թողարկել է enviro: bit- ը, որն ուղեկցվում է BMP280 ճնշման սենսորով, լույսի/գույնի ցուցիչով և MEMS խոսափողով:Նրանք նաև առաջարկում են MicroPython և MakeCode/JavaScript գրադարան:
Հետագայում օգտագործեցի ճնշման տվիչի համար MakeCode սցենար գրելու համար: Համապատասխան վեցանկյուն ֆայլը կարող է պատճենվել անմիջապես ձեր միկրո: բիթում: Կոդը ցուցադրվում է ստորև և կարող է փոփոխվել ՝ օգտագործելով MakeCode առցանց խմբագիրը:
Այն սցենարի տատանում է միկրո: bit dive-o-meter- ի համար: Լռելյայն այն ցուցադրում է ճնշման տարբերությունը որպես բարային գրաֆիկ: Կոճակը սեղմելը սահմանում է հղման ճնշումը, B կոճակը սեղմելը ցույց է տալիս hPa- ի փաստացի և հղման ճնշման տարբերությունը:
Բացի շտրիխ կոդի հիմնական տարբերակից, դուք կգտնեք նաև «X», խաչաձև և «L» տարբերակ ՝ նախատեսված ընթերցումը հեշտացնելու համար:
թող Սյունակ = 0
թող մնա = 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)} այլ դեպքում, եթե (input.buttonIsPressed (Button. B)) {basic.showString ("" + Delta + "hPa") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) եթե (Հաշվիչ> = 400) {Տող = 4} այլ եթե (Մետր> = 300) {Տող = 3} այլ եթե (Մետր> = 200) {Տող = 2} այլ եթե (Մետր> = 100) {Տող = 1} else {Տող = 0} մնալ = Մետր - Տող * 100 եթե (մնա> = 80) {Սյունակ = 4} այլ եթե (մնա> = 60) {Սյունակ = 3} այլ եթե (մնա> = 40) {Սյունակ = 2 } else if (մնալ> = 20) {Column = 1} else {Column = 0} for (let ColA = 0; ColA <= Column; ColA ++) {led.plot (ColA, Row)} Basic.pause (500)}})
Խորհուրդ ենք տալիս:
Միկրո ՝ բոտ - միկրո ՝ բիթ ՝ 20 քայլ
Micro: Bot - Micro: Bit: Կառուցեք ձեզ միկրո: Bot! Դա միկրո. Բիթով կառավարվող ռոբոտ է ՝ ինքնավար վարման համար սոնար կառուցած, կամ եթե ունեք երկու միկրո ՝ բիթ, ռադիոկառավարվող վարում:
Կորոնավիրուս. Դադարեցրեք տարածումը միկրո միջոցով. Բիթ ՝ 3 քայլ
Կորոնավիրուս. Դադարեցրեք տարածումը միկրո. 2020 թվականի հունվարից COVID-19 համաճարակը պատեց աշխարհը: COVID-19- ը տարածվում է օդային կաթիլների և ֆոմիտների միջոցով: Ֆոմիտները, պարզապես խոսելը անշունչ բաներ են, ինչպիսիք են կահույքը, հագուստը, դռան բռնակ
Միկրո ՝ բիթ - Միկրո թմբուկի մեքենա ՝ 10 քայլ (նկարներով)
Micro: bit - Micro Drum Machine: Սա միկրո: բիթ միկրո թմբուկի մեքենա է, որը պարզապես ձայնը գեներացնելու փոխարեն իրական հարվածային գործիքներ է ստեղծում: Այն ծանր ոգեշնչված է միկրո: բիթ նվագախմբի նապաստակներից: Ինձ որոշ ժամանակ պահանջվեց մի քանի սոլենոիդներ գտնելու համար, որոնք հեշտ էին օգտագործել մոկրոի հետ. Բիթ
Կատարեք ուլտրաձայնային հեռավոր փորձարկիչ միկրո միջոցով. Բիթ ՝ 6 քայլ
Կատարեք ուլտրաձայնային հեռավորության փորձարկիչ միկրո:
Հեռավորության զգացում միկրո միջոցով. Բիթ և սոնար (HC-SR04 մոդուլ) ՝ 3 քայլ (նկարներով)
Հեռավորության զգացում միկրո. Ես փորձել եմ մի քանի տարբեր մոդուլներ (ընդհանուր առմամբ 50 -ից ավելի) և կարծում էի, որ լավ կլինի, այնպես որ կիսվեք իմ որոշ արդյունքներով: Մինչ այժմ գտածս լավագույն մոդուլը Spar- ն է