Isi kandungan:

Ukur Tekanan Dengan Mikro Anda: bit: 5 Langkah (dengan Gambar)
Ukur Tekanan Dengan Mikro Anda: bit: 5 Langkah (dengan Gambar)

Video: Ukur Tekanan Dengan Mikro Anda: bit: 5 Langkah (dengan Gambar)

Video: Ukur Tekanan Dengan Mikro Anda: bit: 5 Langkah (dengan Gambar)
Video: Pompa air semi jet 108 bit Shimizu dan jet 100 bit Shimizu. apa bedanya? 2024, Julai
Anonim
Ukur Tekanan Dengan Mikro Anda: bit
Ukur Tekanan Dengan Mikro Anda: bit
Ukur Tekanan Dengan Mikro Anda: bit
Ukur Tekanan Dengan Mikro Anda: bit

Petunjuk berikut menjelaskan alat yang mudah dibina dan murah untuk melakukan pengukuran tekanan dan menunjukkan hukum Boyle, menggunakan mikro: bit yang digabungkan dengan sensor tekanan / suhu BMP280.

Walaupun kombinasi jarum suntik / sensor tekanan ini telah dijelaskan dalam salah satu petunjuk saya sebelumnya, kombinasi dengan mikro: bit menawarkan peluang baru, mis. untuk projek bilik kelas.

Di samping itu, jumlah penerangan aplikasi di mana mikro: bit digunakan dalam kombinasi dengan sensor didorong I2C agak terhad setakat ini. Saya harap arahan ini dapat menjadi titik permulaan untuk projek lain.

Peranti ini memungkinkan untuk melakukan pengukuran tekanan udara kuantitatif, dan untuk memaparkan hasilnya pada susunan LED mikro: bit atau pada komputer yang disambungkan, untuk kemudian menggunakan fungsi monitor serial atau plotter bersiri dari Arduino IDE. Sebagai tambahan, anda mempunyai maklum balas yang tidak jelas, kerana anda akan mendorong atau menarik pelocok jarum suntik itu sendiri, dan dengan ini merasakan kekuatan yang diperlukan.

Secara lalai, paparan membolehkan anda mengira tekanan dengan penunjuk tahap yang ditunjukkan pada matriks LED. Ploter siri Arduino IDE memungkinkan untuk melakukan perkara yang sama, tetapi dengan resolusi yang jauh lebih baik (lihat video). Penyelesaian yang lebih terperinci juga tersedia, mis. dalam bahasa Pemprosesan. Anda juga dapat memaparkan nilai tekanan dan suhu yang diukur tepat pada matriks LED setelah menekan butang A atau B masing-masing, tetapi monitor bersiri dari Arduino IDE jauh lebih pantas, memungkinkan untuk menampilkan nilai dalam waktu nyata.

Jumlah kos dan kemahiran teknikal yang diperlukan untuk membina peranti agak rendah, jadi ini mungkin merupakan projek kelas yang bagus di bawah pengawasan seorang guru. Sebagai tambahan, perangkat ini dapat menjadi alat untuk proyek-proyek STEM dengan fokus pada fisika atau digunakan dalam proyek-proyek lain di mana kekuatan atau berat akan diubah menjadi nilai digital.

Prinsip ini digunakan untuk membina mikro yang sangat sederhana: bit dive-o-meter, alat untuk mengukur seberapa dalam anda menyelam.

Adendum 27-Mei-2018:

Oleh kerana Pimoroni telah mengembangkan perpustakaan MakeCode untuk sensor BMP280, Ini memberi saya kesempatan untuk mengembangkan skrip untuk digunakan untuk perangkat yang dijelaskan di sini. Skrip dan fail HEX yang sesuai boleh didapati di langkah terakhir arahan ini. Untuk menggunakannya, muatkan fail HEX ke mikro: bit anda. Tidak memerlukan perisian khas, dan anda mungkin menggunakan editor MakeCode dalam talian untuk mengedit skrip.

Langkah 1: Bahan Terpakai

Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
Bahan Terpakai
  • Mikro: sedikit, dapatkan milik saya dari Pimoroni - 13.50 GBP
  • Penyambung Kitronic Edge untuk mikro: bit - melalui Pimoroni - 5 GBP, Catatan: Pimorini kini menawarkan penyambung tepi mesra roti yang dipanggil pin: bit dengan pin pada port I2C.
  • Jalur header 2 x 2 pin
  • Bateri atau LiPo untuk mikro: bit (tidak perlu, tetapi berguna), kabel bateri dengan suis (dito) - Pimoroni
  • kabel pelompat untuk penyambungan sensor ke penyambung Edge
  • kabel pelompat panjang (!) untuk sensor, sekurang-kurangnya selagi jarum suntik,, f / f atau f / m
  • Sensor tekanan & suhu BMP280 - Banggood - 5 US $ untuk tiga unit Julat pengukuran untuk sensor ini adalah antara 550 dan 1537 hPa.
  • Jarum suntik kateter plastik 150 ml dengan gasket getah - Amazon atau perkakasan dan kedai kebun - kira-kira 2 - 3 US $
  • gam panas / pistol gam panas
  • besi pematerian
  • komputer dengan Arduino IDE terpasang

Langkah 2: Arahan Perhimpunan

Arahan Perhimpunan
Arahan Perhimpunan
Arahan Perhimpunan
Arahan Perhimpunan
Arahan Perhimpunan
Arahan Perhimpunan

Solder header ke pelarian sensor BMP280.

Pateri dua header 2 pin ke pin 19 dan pin 20 penyambung Edge (lihat gambar).

Sambungkan bit mikro ke penyambung Edge dan komputer anda.

Sediakan perisian dan mikro: bit seperti yang dijelaskan dalam arahan Adafruit micro: bit. Baca dengan teliti.

Pasang perpustakaan yang diperlukan ke Arduino IDE.

Buka skrip BMP280 yang dilampirkan pada langkah seterusnya.

Sambungkan sensor ke penyambung Edge. GND hingga 0V, VCC hingga 3V, SCL ke pin 19, SDA ke pin 20.

Muat naik skrip ke mikro: bit.

Periksa bahawa sensor memberikan data yang munasabah, nilai tekanan harus sekitar 1020 hPa, yang ditunjukkan pada monitor bersiri. Sekiranya, periksa kabel dan sambungan terlebih dahulu, kemudian pemasangan perisian, dan betulkan.

Matikan mikro: bit, keluarkan sensor.

Jalankan kabel pelompat panjang melalui saluran jarum suntikan. Sekiranya anda perlu meluaskan bukaan. Berhati-hati untuk menghilangkan bahawa kabel semakin rosak.

Sambungkan sensor ke kabel pelompat. Periksa bahawa sambungan betul dan baik. Sambungkan ke mikro: bit.

Periksa bahawa sensor berfungsi dengan betul. Dengan menarik kabel dengan hati-hati, gerakkan sensor ke bahagian atas picagari.

Masukkan pelocok dan gerakkan sedikit lebih jauh daripada kedudukan rehat yang diingini (100 ml).

Tambahkan lem panas ke hujung saluran keluar jarum suntik dan gerakkan pelocok ke belakang sedikit. Periksa sama ada jarum suntik tertutup rapat, jika tidak, tambahkan lebih banyak gam panas. Biarkan sejuk lem panas.

Periksa semula bahawa sensor berfungsi. Sekiranya anda menggerakkan pelocok, angka di monitor bersiri dan paparan mikro: bit akan berubah.

Sekiranya diperlukan, anda boleh mengatur kelantangan dalam jarum suntik dengan menekannya di dekat gasket dan menggerakkan pelocok.

Langkah 3: Sedikit Teori dan Beberapa Pengukuran Praktikal

Sedikit Teori dan Beberapa Pengukuran Praktikal
Sedikit Teori dan Beberapa Pengukuran Praktikal
Sedikit Teori dan Beberapa Pengukuran Praktikal
Sedikit Teori dan Beberapa Pengukuran Praktikal

Dengan peranti yang dijelaskan di sini, anda dapat menunjukkan korelasi pemampatan dan tekanan dalam eksperimen fizik sederhana. Oleh kerana jarum suntik dilengkapi dengan skala "ml" di atasnya, eksperimen kuantitatif juga mudah dilakukan.

Teori di belakangnya: Menurut undang-undang Boyle, [Volume * Tekanan] adalah nilai tetap untuk gas pada suhu tertentu.

Ini bermaksud jika anda memampatkan isipadu gas yang dilipat N, iaitu isipadu terakhir adalah lipatan 1 / N dari yang asal, tekanannya akan naik N-kali lipat, seperti: P0 * V0 = P1 * V1 = kontra t. Untuk lebih jelasnya, sila lihat artikel Wikipedia mengenai undang-undang gas. Pada permukaan laut, tekanan barometrik biasanya dalam julat 1010 hPa (hecto Pascal).

Jadi bermula pada titik rehat mis. V0 = 100 ml dan P0 = 1000 hPa, pemampatan udara hingga sekitar 66 ml (iaitu V1 = 2/3 * V0) akan menghasilkan tekanan sekitar 1500 hPa (P1 = 3/2 dari P0). Menarik pelocok ke 125 ml (kelipatan 5/4 kali ganda) menghasilkan tekanan sekitar 800 hPa (tekanan 4/5). Pengukuran yang tepat sangat tepat untuk peranti mudah seperti itu.

Peranti ini membolehkan anda memberi kesan haptik langsung berapa banyak daya yang diperlukan untuk memampatkan atau mengembangkan jumlah udara yang agak kecil di dalam jarum suntik.

Tetapi kami juga dapat melakukan beberapa pengiraan dan memeriksanya secara eksperimen. Anggaplah kita memampatkan udara hingga 1500 hPa, pada tekanan barometrik basal 1000 hPa. Jadi perbezaan tekanan adalah 500 hPa, atau 50, 000 Pa. Untuk picagari saya, diameter (d) omboh adalah kira-kira 4 cm atau 0,04 meter.

Sekarang anda boleh mengira daya yang diperlukan untuk menahan omboh pada kedudukan itu. Diberi P = F / A (Tekanan Daya dibahagi dengan Kawasan), atau diubah F = P * A. Unit SI untuk daya adalah "Newton" N, untuk panjang "Meter" m, dan 1 Pa adalah 1N per meter persegi. Untuk piston bulat, luasnya dapat dikira menggunakan A = ((d / 2) ^ 2) * pi, yang memberikan 0.00125 meter persegi untuk picagari saya. Jadi

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

Di Bumi, 1 N berkorelasi dengan berat 100 gr, jadi 63 N sama dengan menahan berat 6.3 kg.

Ini dapat diperiksa dengan mudah menggunakan skala. Tekan jarum suntik dengan pelocok ke skala, hingga tekanan sekitar 1500 hPa tercapai, kemudian baca timbangan. Atau tekan sehingga skala menunjukkan sekitar 6-7 kg, kemudian tekan butang "A" dan baca nilai yang ditunjukkan pada matriks LED mikro: bit. Ternyata, anggaran berdasarkan pengiraan di atas tidak buruk. Tekanan sedikit melebihi 1500 hPa berkorelasi dengan "berat" yang ditunjukkan sekitar 7 kg pada skala badan (lihat gambar). Anda juga boleh mengubah konsep ini dan menggunakan peranti untuk membina skala digital sederhana berdasarkan pengukuran tekanan.

Perlu diketahui bahawa had atas sensor adalah sekitar 1540 hPa, jadi tekanan di atas ini tidak dapat diukur dan dapat merosakkan sensor.

Di samping tujuan pendidikan, seseorang juga dapat menggunakan sistem untuk beberapa aplikasi dunia nyata, kerana memungkinkan untuk mengukur kuantitatif kekuatan yang berusaha memindahkan pelocok satu atau lain cara. Oleh itu, anda boleh mengukur berat yang diletakkan pada pelocok atau kekuatan hentaman yang memukul pelocok. Atau bina suis yang mengaktifkan lampu atau bel atau memainkan suara setelah nilai ambang tertentu tercapai. Atau anda boleh membina alat muzik yang mengubah frekuensi bergantung pada kekuatan kekuatan yang dikenakan pada pelocok. Atau gunakannya sebagai pengawal permainan. Gunakan imaginasi anda dan bermain!

Langkah 4: Skrip MicroPython

Terlampir anda menemui skrip BMP280 saya untuk mikro: bit. Ini adalah turunan dari skrip BMP / BME280 yang saya dapati di suatu tempat di laman web Banggood, digabungkan dengan perpustakaan Microbit Adafruit. Yang pertama membolehkan anda menggunakan sensor Banggood, yang kedua memudahkan pengendalian paparan LED 5x5. Terima kasih saya ucapkan kepada pemaju kedua-duanya.

Secara lalai, skrip memaparkan hasil pengukuran tekanan dalam 5 langkah pada paparan LED mikro: bit 5x5, memungkinkan untuk melihat perubahan dengan sedikit kelewatan. Nilai yang tepat dapat dipaparkan secara selari pada monitor bersiri Arduino IDE, atau grafik yang lebih terperinci dapat dipaparkan serter plotter dari Arduino IDE.

Sekiranya anda menekan butang A, nilai tekanan yang diukur akan dipaparkan pada susunan LED mikro: bit's 5x5. Sekiranya anda menekan butang B, nilai suhu akan dipaparkan. Walaupun ini memungkinkan untuk membaca data yang tepat, melambatkan kitaran pengukuran dengan ketara.

Saya yakin bahawa terdapat banyak cara yang lebih elegan untuk memprogramkan tugas dan memperbaiki skrip. Sebarang pertolongan dialu-alukan.

#masuklah xxx

#masuk mikrobit Adafruit_Microbit_Matrix; #tentukan BME280_ADDRESS 0x76 panjang int hum_raw yang tidak ditandatangani, temp_raw, pres_raw; ditandatangani int lama 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; // bekas untuk nilai yang diukur int value0; nilai int1; nilai int2; nilai int3; nilai int4; // ------------------------------------------------ -------------------------------------------------- ------------------ persediaan tidak sah () {uint8_t osrs_t = 1; // Sampel berlebihan suhu x 1 uint8_t osrs_p = 1; // Tekanan berlebihan sampel x 1 uint8_t osrs_h = 1; // Kelembapan berlebihan kelembapan x 1 mod uint8_t = 3; // Mod normal uint8_t t_sb = 5; // Tstandby 1000ms uint8_t filter = 0; // Tapiskan uint8_t spi3w_en = 0; // SPI 3 wayar Lumpuhkan uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mod; uint8_t config_reg = (t_sb << 5) | (tapis << 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 ("Suhu [deg C]"); // Serial.print ("\ t"); Serial.print ("Tekanan [hPa]"); // tajuk Wire.begin (); writeReg (0xF2, ctrl_hum_reg); tulisReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); bacaTrim (); // microbit.begin (); // microbit.print ("x"); kelewatan (1000); } // ----------------------------------------------- -------------------------------------------------- -------- gelung void () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; ditandatangani int temp_cal panjang; tekan_cal int lama yang tidak ditandatangani, hum_cal; int N; // tetapkan nilai ambang untuk paparan matriks LED, dalam hPa double max_0 = 1100; dua kali ganda maksimum = 1230; ganda ganda_2 = 1360; dua kali ganda max_3 = 1490; bacaData (); temp_cal = calibration_T (temp_raw); tekan_cal = penentukuran_P (pres_raw); hum_cal = calibration_H (hum_raw); temp_act = (berganda) temp_cal / 100.0; press_act = (double) tekan_cal / 100.0; hum_act = (double) hum_cal / 1024.0; microbit.clear (); // tetapkan semula matriks 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)) {// menampilkan nilai dalam kelewatan nombor yang mengukur lingkaran microbit.print ("T:"); microbit.print (temp_act, 1); microbit.print ("'C"); // Serial.println (""); } lain jika (! digitalRead (PIN_BUTTON_A)) {microbit.print ("P:"); microbit.print (tekan_act, 0); microbit.print ("hPa"); } lain {// memaparkan nilai tekanan sebagai piksel atau garis pada tahap tertentu // 5 langkah: 1490 hPa // ambang yang ditentukan oleh nilai max_n jika (tekan_act> max_3) {(N = 0); // baris atas} yang lain jika (tekan_act> max_2) {(N = 1); } lain jika (tekan_act> max_1) {(N = 2); } lain jika (tekan_act> max_0) {(N = 3); } lain {(N = 4); // baris asas} // Serial.println (N); // untuk tujuan pembangunan // microbit.print (N); // sebagai Garis // microbit.drawLine (N, 0, 0, 4, LED_ON); // beralih nilai ke baris seterusnya nilai4 = nilai3; nilai3 = nilai2; nilai2 = nilai1; nilai1 = nilai0; nilai0 = N; // lukis gambar, lajur demi lajur microbit.drawPixel (0, value0, LED_ON); // sebagai Pixel: lajur, baris. 0, 0 sudut kiri atas microbit.drawPixel (1, value1, LED_ON); microbit.drawPixel (2, nilai2, LED_ON); microbit.drawPixel (3, nilai3, LED_ON); microbit.drawPixel (4, nilai4, LED_ON); } // hantar data ke monitor bersiri dan plotter bersiri // Serial.println (press_act); // hantar nilai ke port bersiri untuk paparan berangka, pilihan

Serial.print (tekan_act); // hantar nilai ke port bersiri untuk plotter

// lukis garis penunjuk dan perbaiki julat yang ditunjukkan Serial.print ("\ t"); Cetakan bersiri (600); Serial.print ("\ t"); Serial.print (1100), Serial.print ("\ t"); Serial.println (1600); kelewatan (200); // Ukur tiga kali sesaat} // ---------------------------------------- -------------------------------------------------- -------------------------------------------------- - // berikut diperlukan untuk sensor bmp / bme280, simpan kerana tidak sah readTrim () {uint8_t data [32], i = 0; // Betulkan 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Betulkan 2014 / while (Wire.available ()) {data = Wire.read (); saya ++; } Wire.beginTransmission (BME280_ADDRESS); // Tambah 2014 / Wire.write (0xA1); // Tambah 2014 / Wire.endTransmission (); // Tambah 2014 / Wire.requestFrom (BME280_ADDRESS, 1); // Tambah 2014 / data = Wire.read (); // Tambah 2014 / i ++; // Tambah 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Betulkan 2014 / while (Wire.available ()) {data = Wire.read (); saya ++; } dig_T1 = (data [1] << 8) | data [0]; dig_P1 = (data [7] << 8) | data [6]; dig_P2 = (data [9] << 8) | data [8]; dig_P3 = (data [11] << 8) | data [10]; dig_P4 = (data [13] << 8) | data [12]; dig_P5 = (data [15] << 8) | data [14]; dig_P6 = (data [17] << 8) | data [16]; dig_P7 = (data [19] << 8) | data [18]; dig_T2 = (data [3] << 8) | data [2]; dig_T3 = (data [5] << 8) | data [4]; dig_P8 = (data [21] << 8) | data [20]; dig_P9 = (data [23] << 8) | data [22]; dig_H1 = data [24]; dig_H2 = (data [26] << 8) | data [25]; dig_H3 = data [27]; dig_H4 = (data [28] << 4) | (0x0F & data [29]); dig_H5 = (data [30] 4) & 0x0F); // Betulkan 2014 / dig_H6 = data [31]; // Betulkan 2014 /} batal writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (data); Wire.endTransmission (); }

batal bacaData ()

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

penentukuran int panjang yang ditandatangani_T (intc_T panjang yang ditandatangani)

{ditandatangani panjang int var1, var2, T; var1 = ((((adc_T >> 3) - ((ditandatangani int panjang) dig_T1 11; var2 = (((((adc_T >> 4) - ((ditandatangani panjang int) dig_T1)) * ((adc_T >> 4) - ((int panjang ditandatangani) dig_T1))) >> 12) * ((int panjang ditandatangani) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; kembali T;} kalibrasi int panjang tidak ditandatangani_P (ditandatangani panjang int adc_P) {ditandatangani panjang int var1, var2; int panjang tidak ditandatangani P; var1 = (((ditandatangani panjang int) t_fine) >> 1) - (ditandatangani int panjang) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((ditandatangani panjang int) dig_P6); var2 = var2 + ((var1 * ((ditandatangani int panjang) dig_P5)) 2) + (((ditandatangani int panjang) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((ditandatangani int panjang) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768 + var1)) * ((ditandatangani int panjang) dig_P1)) >> 15); jika (var1 == 0) {pulangkan 0; } P = (((int panjang tidak ditandatangani) (((int panjang ditandatangani) 1048576) -adc_P) - (var2 >> 12))) * 3125; jika (P <0x80000000) {P = (P << 1) / ((int tidak bertanda panjang) var1); } lain {P = (P / (int panjang tidak ditandatangani) var1) * 2; } var1 = (((ditandatangani int panjang) dig_P9) * ((ditandatangani int panjang) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((ditandatangani int panjang) (P >> 2)) * ((ditandatangani int panjang) dig_P8)) >> 13; P = (int panjang tidak ditandatangani) ((int panjang ditandatangani) P + ((var1 + var2 + dig_P7) >> 4)); pulangan P; } penentukuran int panjang yang tidak ditandatangani_H (int panjang yang ditandatangani adc_H) {int panjang yang ditandatangani v_x1; v_x1 = (t_fine - ((ditandatangani int panjang) 76800)); v_x1 = (((((adc_H << 14) - (((ditandatangani int panjang) dig_H4) 15) * (((((((v_x1 * ((ditandatangani int panjang) dig_H6)) >> 10) * (((v_x1 * ((ditandatangani int panjang) dig_H3)) >> 11) + ((ditandatangani int panjang) 32768))) >> 10) + ((ditandatangani int panjang) 2097152)) * ((ditandatangani int panjang) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((ditandatangani int panjang) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); kembali (int panjang yang tidak ditandatangani) (v_x1 >> 12);}

Langkah 5: Skrip MakeCode / JavaScript

Skrip MakeCode / JavaScript
Skrip MakeCode / JavaScript

Pimoroni baru-baru ini merilis enviro: bit, yang dilengkapi dengan sensor tekanan BMP280, sensor cahaya / warna dan mikrofon MEMS. Mereka juga menawarkan perpustakaan MicroPython dan MakeCode / JavaScript.

Saya menggunakan kemudian untuk menulis skrip MakeCode untuk sensor tekanan. Fail hex yang sesuai boleh disalin terus ke mikro: bit anda. Kod tersebut dipaparkan di bawah dan boleh diubah menggunakan editor MakeCode dalam talian.

Ini adalah variasi skrip untuk mikro: bit dive-o-meter. Secara lalai ia menunjukkan perbezaan tekanan sebagai graf bar. Menekan butang A menetapkan tekanan rujukan, menekan butang B menunjukkan perbezaan antara tekanan sebenar dan tekanan dalam hPa.

Sebagai tambahan kepada versi barcode asas, anda juga menemui versi "X", crosshair dan versi "L", yang bertujuan untuk memudahkan membaca.

biarkan Lajur = 0

biarkan tetap = 0 biarkan 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)} lain jika (input.buttonIsPressed (Button. B)) {basic.showString ("" + Delta + "hPa") basic.pause (200) basic.clearScreen ()} lain-lain {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) jika (Meter> = 400) {Row = 4} lain jika (Meter> = 300) {Row = 3} lain jika (Meter> = 200) {Row = 2} lain jika (Meter> = 100) {Row = 1} lain {Row = 0} tetap = Meter - Baris * 100 jika (kekal> = 80) {Lajur = 4} lain jika (kekal> = 60) {Lajur = 3} yang lain jika (kekal> = 40) {Lajur = 2 } lain jika (tetap> = 20) {Lajur = 1} lain {Lajur = 0} untuk (biarkan ColA = 0; ColA <= Lajur; ColA ++) {led.plot (ColA, Row)} basic.pause (500)}})

Disyorkan: