Агуулгын хүснэгт:

Даралтыг микрофоноор хэмжих: бит: 5 алхам (зурагтай)
Даралтыг микрофоноор хэмжих: бит: 5 алхам (зурагтай)

Видео: Даралтыг микрофоноор хэмжих: бит: 5 алхам (зурагтай)

Видео: Даралтыг микрофоноор хэмжих: бит: 5 алхам (зурагтай)
Видео: ОБЗОР РЕЗАНОЙ ФБЕЛ-160М | ПЛЮЩИТСЯ? | ЕДЕТ? 2024, Долдугаар сарын
Anonim
Бичил биетээрээ даралтыг хэмжих: бит
Бичил биетээрээ даралтыг хэмжих: бит
Бичил биетээрээ даралтыг хэмжих: бит
Бичил биетээрээ даралтыг хэмжих: бит

Дараах зааварчилгаанд BMP280 даралт/температур мэдрэгчтэй хослуулан micro: bit ашиглан даралтын хэмжилт хийх, Бойлийн хуулийг харуулах хялбар, хямд төхөөрөмжийг тайлбарласан болно.

Энэхүү тариур/даралт мэдрэгчийн хослолыг миний өмнөх зааварчилгааны аль нэг хэсэгт тайлбарласан байгаа бол micro: bit -ийн хослол нь шинэ боломжуудыг санал болгож байна. ангийн өрөөний төслүүдэд.

Нэмж дурдахад, микро: битийг I2C удирдлагатай мэдрэгчтэй хослуулан ашигладаг програмуудын тайлбарын тоо одоогоор хязгаарлагдмал байна. Энэхүү зааварчилгаа нь бусад төслүүдийн эхлэл болно гэж найдаж байна.

Энэхүү төхөөрөмж нь агаарын даралтын тоон хэмжилтийг хийж, үр дүнг микро: битийн LED массив эсвэл холбогдсон компьютер дээр харуулах боломжийг олгодог бөгөөд дараа нь Arduino IDE -ийн цуваа монитор эсвэл цуваа плоттер функцийг ашиглана. Нэмж дурдахад танд тариурын поршенийг өөрөө түлхэх эсвэл татах бөгөөд ингэснээр шаардлагатай хүчийг мэдрэх болно.

Анхдагч байдлаар дэлгэц нь LED матриц дээр үзүүлсэн түвшний индикатороор даралтыг тооцоолох боломжийг олгодог. Arduino IDE -ийн цуврал плоттер нь үүнийг хийх боломжийг олгодог боловч илүү нарийвчлалтай (видеог үзнэ үү). Илүү нарийвчилсан шийдлүүд бас байдаг, жишээ нь. Боловсруулах хэл дээр. Та мөн A эсвэл B товчлуурыг дарсны дараа LED матриц дээр даралт ба температурын хэмжсэн нарийн утгыг харуулах боломжтой боловч Arduino IDE -ийн цуваа дэлгэц нь илүү хурдан бөгөөд утгыг бодит цаг хугацаанд харуулах боломжийг олгодог.

Төхөөрөмжийг бүтээхэд шаардагдах нийт зардал, техникийн ур чадвар харьцангуй бага тул багшийн хяналтан дор хийх сайхан танхимын төсөл байж болох юм. Нэмж дурдахад энэ төхөөрөмж нь физикийн чиглэлээр ажилладаг STEM төслүүдийн хэрэгсэл эсвэл хүч эсвэл жинг дижитал утга болгон хувиргах бусад төсөлд ашиглаж болно.

Энэхүү зарчмыг ашиглан та хэр гүн гүнзгий шумбаж байгаагаа хэмжих төхөөрөмж болох жаахан шумбах-о-метр хэмээх энгийн бичил биетийг бүтээхэд ашигласан болно.

2018 оны 5-р сарын 27-ны өдрийн нэмэлт:

Пиморони BMP280 мэдрэгчийн MakeCode номын санг боловсруулснаар энд тайлбарласан төхөөрөмжид ашиглах скриптийг боловсруулах боломжийг надад олгосон юм. Скрипт болон холбогдох HEX файлыг энэ зааврын сүүлчийн алхамаас олж болно. Үүнийг ашиглахын тулд HEX файлыг micro: bit дээрээ ачаална уу. Тусгай програм хангамж шаардлагагүй бөгөөд та скриптийг засварлахын тулд онлайн MakeCode засварлагчийг ашиглаж болно.

Алхам 1: Ашигласан материал

Ашигласан материал
Ашигласан материал
Ашигласан материал
Ашигласан материал
Ашигласан материал
Ашигласан материал
Ашигласан материал
Ашигласан материал
  • Бичил: бит, минийхийг Пиморонигоос авсан - 13.50 GBP
  • Kitronic Edge Connector for micro: bit - Pimoroni -ээр дамжуулан - 5 GBP, Тэмдэглэл: Пиморини одоо I2C портууд дээрх зүү бүхий pin: bit гэж нэрлэгддэг талхны самбартай ээлтэй ирмэгийг санал болгож байна.
  • 2 х 2 зүү толгой тууз
  • Микро батерей эсвэл LiPo: бит (шаардлагагүй, гэхдээ тустай), унтраалгатай зайны кабель (dito) - Пиморони
  • Мэдрэгчийг Edge холбогчтой холбох кабель
  • мэдрэгчийн урт (!) холбогч кабель, дор хаяж тариур,, f/f эсвэл f/m
  • BMP280 даралт ба температур мэдрэгч - Banggood - 5 ширхэг гурван нэгжид Энэхүү мэдрэгчийн хэмжих хүрээ нь 550-1537 hPa хооронд байна.
  • Резин жийргэвч бүхий 150 мл хуванцар катетер тариур - Амазон эсвэл тоног төхөөрөмж, цэцэрлэгийн дэлгүүрүүд - ойролцоогоор 2-3 доллар
  • халуун цавуу/халуун цавуу гар буу
  • гагнуурын төмөр
  • Arduino IDE суулгасан компьютер

Алхам 2: Угсрах заавар

Угсрах заавар
Угсрах заавар
Угсрах заавар
Угсрах заавар
Угсрах заавар
Угсрах заавар

BMP280 мэдрэгчийн тасархай руу гагнуурын толгой.

Хоёр 2 зүү толгойг Edge холбогчийн 19 болон 20 -р зүү рүү гагнана (зураг харна уу).

Micro: bit -ийг Edge холбогч болон компьютерт холбоно уу.

Adafruit micro: bit зааварт тайлбарласны дагуу програм хангамж болон 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 hPa, агаарыг ойролцоогоор 66 мл хүртэл шахахад (өөрөөр хэлбэл V1 = 2/3 * V0) 1500 гПа (P0 = P1 = 3/2) даралт үүснэ. Поршенийг 125 мл (5/4 дахин эзлэхүүн) хүртэл татах нь ойролцоогоор 800 гПа (4/5 даралт) даралтыг бий болгодог. Ийм энгийн төхөөрөмжийн хувьд хэмжээсүүд нь үнэхээр гайхалтай юм.

Төхөөрөмж нь тариур дахь харьцангуй бага хэмжээний агаарыг шахах эсвэл өргөжүүлэхэд хэр их хүч шаардагдахыг шууд мэдрэх боломжийг олгодог.

Гэхдээ бид бас тооцоолол хийж, туршилтаар шалгаж болно. Бид агаарыг 1500 гПа хүртэл шахдаг гэж үзье. Тиймээс даралтын зөрүү нь 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 N нь 100 гр жинтэй хамааралтай тул 63 N нь 6.3 кг жинтэй тэнцүү байна.

Үүнийг масштаб ашиглан хялбархан шалгаж болно. Цохилуур бүхий тариурыг масштаб руу түлхэж, ойролцоогоор 1500 гПа даралт хүрэх хүртэл хэмжүүрийг уншина уу. Эсвэл масштаб ойролцоогоор 6-7 кг гарах хүртэл түлхэж, дараа нь "А" товчлуурыг дарж micro: bit-ийн LED матриц дээр харуулсан утгыг уншина уу. Эндээс харахад дээрх тооцоон дээр үндэслэсэн тооцоо муу байгаагүй. Даралт нь 1500 гПа -аас бага зэрэг биеийн жингийн 7 кг орчим жинтэй харагдана. Та мөн энэ үзэл баримтлалыг эргүүлж, даралтыг хэмжихэд суурилсан энгийн дижитал масштабыг уг төхөөрөмжийг ашиглан хийж болно.

Мэдрэгчийн дээд хязгаар нь ойролцоогоор 1540 гПа байдаг тул үүнээс дээш даралтыг хэмжих боломжгүй бөгөөд мэдрэгчийг гэмтээж болзошгүйг анхаарна уу.

Боловсролын зориулалтаас гадна уг системийг ашиглаж болох бөгөөд энэ нь поршенийг нэг тийш нь хөдөлгөхийг оролдож буй хүчийг тоон хэмжээгээр хэмжих боломжийг олгодог. Тиймээс та поршен дээр тавьсан жинг эсвэл поршен дээр цохилтын цохилтын хүчийг хэмжиж болно. Эсвэл тодорхой босго утгыг хүрсний дараа гэрэл эсвэл дуугаралтыг идэвхжүүлдэг эсвэл дуу тоглуулдаг унтраалга бүтээнэ үү. Эсвэл та поршений хүчнээс хамаарч давтамжийг өөрчилдөг хөгжмийн зэмсэг бүтээж болно. Эсвэл үүнийг тоглоомын хянагч болгон ашиглаж болно.

Алхам 4: MicroPython скрипт

Миний BMP280 скриптийг micro: bit -д зориулж оруулсан болно. Энэ бол миний хаа нэгтээ Banggood вэбсайтаас олсон BMP/BME280 скриптийн гарал үүсэл бөгөөд Adafruit -ийн Microbit номын сантай хослуулсан болно. Эхнийх нь танд Banggood мэдрэгчийг ашиглах боломжийг олгодог бол хоёр дахь нь 5x5 LED дэлгэцтэй ажиллахад хялбар болгодог. Би хоёуланг нь хөгжүүлэгчиддээ баярлалаа.

Анхдагч байдлаар, скрипт нь даралтын хэмжилтийн үр дүнг 5 алхамаар микро: битийн 5x5 LED дэлгэц дээр харуулдаг бөгөөд өөрчлөлтийг бага зэрэг хойшлуулах боломжийг олгодог. Нарийвчилсан утгыг Arduino IDE сериал монитор дээр зэрэгцээ харуулах эсвэл илүү нарийвчилсан графикийг Arduino IDE -ийн серал плоттер дээр харуулах боломжтой.

Хэрэв та А товчлуурыг дарвал хэмжсэн даралтын утгыг micro: bit -ийн 5x5 LED массив дээр харуулна. Хэрэв та B товчлуурыг дарвал температурын утгыг харуулна. Энэ нь нарийн мэдээллийг унших боломжийг олгодог боловч хэмжилтийн мөчлөгийг мэдэгдэхүйц удаашруулдаг.

Даалгавруудыг програмчлах, скриптийг сайжруулах илүү гоёмсог аргууд байдаг гэдэгт би итгэлтэй байна. Аливаа тусламжийг хүлээж авна.

#xxx -ийг оруулна уу

#Adafruit_Microbit_Matrix микробитийг оруулах; #тодорхойлох BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; урт гарын үсэг зурсан 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_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); Цуваа эхлэх (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; гарын үсэг зурсан урт int temp_cal; гарын үсэггүй урт int press_cal, hum_cal; int N; // LED матрицын дэлгэцийн босго утгыг, hPa -д давхар max_0 = 1100; давхар max_1 = 1230; давхар max_2 = 1360; давхар max_3 = 1490; уншсан өгөгдөл (); temp_cal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); hum_cal = шалгалт тохируулга_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 (""); } if if (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (press_act, 0); microbit.print ("hPa"); } өөр {// даралтын утгыг тодорхой түвшинд пиксел эсвэл шугам хэлбэрээр харуулах // 5 алхам: 1490 hPa // max_n утгуудаар тодорхойлогдсон босго бол (press_act> max_3) {(N = 0); // дээд мөр} өөр бол if (press_act> max_2) {(N = 1); } if 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); // 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); // тоон дэлгэцийн сериал порт руу утга илгээх, заавал биш

Цуваа.хэвлэх (press_act); // плоттер хийх цуваа порт руу утга илгээх

// заагч шугам зурж, Serial.print ("\ t") харуулсан мужийг засах; Цуваа.хэвлэх (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 оныг засах (while Wire.available ()) {data = Wire.read (); би ++; } 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 оныг засах (while Wire.available ()) {data = Wire.read (); би ++; } 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 (); би ++; } pres_raw = (өгөгдөл [0] << 12) | (өгөгдөл [1] 4); temp_raw = (өгөгдөл [3] << 12) | (өгөгдөл [4] 4); hum_raw = (өгөгдөл [6] << 8) | өгөгдөл [7]; }

long int calibration_T (гарын үсэг зурсан урт int adc_T)

{гарын үсэг зурсан long int var1, var2, T; var1 = ((((adc_T >> 3) - ((гарын үсэг зурсан урт int) dig_T1 11; var2 = ((((((adc_T >> 4) -) - ((гарын үсэг зурсан урт int) dig_T1))) >> 12) * ((урт гарын үсэг зурсан) 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 = (((урт гарын үсэг зурсан урт) t_fine) >> 1) - (урт гарын үсэг зурсан) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((гарын үсэг зурсан урт int) dig_P6); var2 = var2 + ((var1 * ((урт гарын үсэг зурсан) dig_P5)) 2) + (((гарын үсэг зурсан урт int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + (((((урт гарын үсэг зурсан int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768+var1))*((урт гарын үсэг зурсан) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((гарын үсэг зураагүй урт int) (((гарын үсэг зурсан урт int) 1048576) -adc_P)-(var2 >> 12)))*3125; if (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } өөр {P = (P / (unsigned long int) var1) * 2; } var1 = (((гарын үсэг зурсан урт int) dig_P9) * ((урт гарын үсэг зурсан) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((гарын үсэг зурсан урт int) (P >> 2)) * ((гарын үсэг зурсан урт int) dig_P8)) >> 13; P = (гарын үсэг зураагүй урт int) ((гарын үсэг зурсан урт int) P + ((var1 + var2 + dig_P7) >> 4)); буцах P; } гарын үсэг зураагүй long int calibration_H (гарын үсэг зурсан урт int adc_H) {гарын үсэг зурсан урт int v_x1; v_x1 = (t_fine - ((урт int) 76800)); v_x1 = ((((((adc_H << 14) -((((урт гарын үсэг зурсан) dig_H4) 15) *) (((((((v_x1 * ((урт гарын үсэг) dig_H6) (v_x1 * ((гарын үсэг зурсан урт int) dig_H3)) >> 11) + ((урт гарын үсэг зурсан 32768)))) 10) + ((гарын үсэг зурсан урт int) 2097152)) * ((урт гарын үсэг зурсан) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) 7) * ((урт гарын үсэг зурсан) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); буцах (гарын үсэг зураагүй урт int) (v_x1 >> 12);}

Алхам 5: MakeCode/JavaScript скриптүүд

MakeCode/JavaScript скриптүүд
MakeCode/JavaScript скриптүүд

Пиморони саяхан BMP280 даралтын мэдрэгч, гэрэл/өнгө мэдрэгч, MEMS микрофонтой хамт орчноо: битийг гаргажээ. Тэд бас MicroPython болон MakeCode/JavaScript номын санг санал болгодог.

Би сүүлд нь даралт мэдрэгчийн MakeCode скриптийг бичсэн. Харгалзах hex файлыг таны micro: bit рүү шууд хуулж болно. Кодыг доор харуулсан бөгөөд онлайн MakeCode засварлагчийг ашиглан өөрчилж болно.

Энэ бол микро: бит шумбах-о-метр скриптийн хувилбар юм. Анхдагч байдлаар энэ нь даралтын зөрүүг зураасан график хэлбэрээр харуулдаг. А товчлуурыг дарахад жишиг даралтыг тогтоодог бол В товчлуур дээр дарахад бодит болон жишиг даралтын хоорондын ялгааг харуулна.

Баркодын үндсэн хувилбараас гадна уншихад хялбар болгох зорилготой "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)} if 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) {Мөр = 4} өөр бол (Метр> = 300) {Мөр = 3} өөр бол (Метр> = 200) {Мөр = 2} бол (Метр> = 100) {Мөр = 1} өөр {Мөр = 0} үлдэх = Метр - Мөр * 100 бол (үлдэх> = 80) {Багана = 4} өөр бол (үлдэх> = 60) {Багана = 3} өөр бол (үлдэх> = 40) {Багана = 2 } else if (хэвээр> = 20) {Багана = 1} өөр {Багана = 0} for (ColA = 0; ColA <= Багана; ColA ++) {led.plot (ColA, Row)} үндсэн. түр зогсоох (500)}})

Зөвлөмж болгож буй: