İçindekiler:

Micro:bit ile Basıncı Ölçün: 5 Adım (Resimlerle)
Micro:bit ile Basıncı Ölçün: 5 Adım (Resimlerle)

Video: Micro:bit ile Basıncı Ölçün: 5 Adım (Resimlerle)

Video: Micro:bit ile Basıncı Ölçün: 5 Adım (Resimlerle)
Video: Canlılar Dünyası: Mantarlar ve Mikroskobik Canlılar 🦠 tonguçCUP 1.Sezon - 5FEN2 #2024 2024, Kasım
Anonim
Micro:bit ile Basıncı Ölçün
Micro:bit ile Basıncı Ölçün
Micro:bit'inizle Basıncı Ölçün
Micro:bit'inizle Basıncı Ölçün

Aşağıdaki talimat, BMP280 basınç/sıcaklık sensörü ile birlikte micro:bit kullanarak basınç ölçümleri yapmak ve Boyle yasasını göstermek için yapımı kolay ve ucuz bir cihazı açıklar.

Bu şırınga/basınç sensörü kombinasyonu önceki talimatlarımdan birinde zaten açıklanmış olsa da, micro:bit ile kombinasyon yeni fırsatlar sunuyor, örn. sınıf odası projeleri için.

Ek olarak, micro:bit'in I2C tahrikli bir sensörle birlikte kullanıldığı uygulamaların açıklamalarının sayısı şu ana kadar oldukça sınırlıdır. Umarım bu talimat diğer projeler için bir başlangıç noktası olabilir.

Cihaz, daha sonra Arduino IDE'nin seri monitör veya seri çizici işlevlerini kullanarak, nicel hava basıncı ölçümleri gerçekleştirmeye ve sonuçları mikro:bit LED dizisinde veya bağlı bir bilgisayarda görüntülemeye izin verir. Ek olarak, şırınganın pistonunu kendiniz iteceğiniz veya çekeceğiniz için dokunsal bir geri bildiriminiz var ve bu sayede gerekli gücü hissedeceksiniz.

Varsayılan olarak ekran, LED matrisinde gösterilen seviye göstergesine göre basıncı tahmin etmenizi sağlar. Arduino IDE'nin seri çizicisi aynı şeyi yapmanıza izin verir, ancak çok daha iyi çözünürlükte (videoya bakın). Daha ayrıntılı çözümler de mevcuttur, örn. İşleme dilinde. Ayrıca sırasıyla A veya B düğmelerine bastıktan sonra LED matrisinde hassas ölçülen basınç ve sıcaklık değerlerini görüntüleyebilirsiniz, ancak Arduino IDE'nin seri monitörü çok daha hızlıdır ve değerlerin neredeyse gerçek zamanlı olarak görüntülenmesine izin verir.

Cihazı yapmak için gereken toplam maliyetler ve teknik beceriler oldukça düşüktür, bu nedenle bir öğretmen gözetiminde güzel bir sınıf projesi olabilir. Ayrıca cihaz, fizik odaklı STEM projeleri için bir araç olabilir veya bir kuvvetin veya ağırlığın dijital bir değere dönüştürüleceği diğer projelerde kullanılabilir.

İlke, ne kadar derine daldığınızı ölçen bir cihaz olan çok basit bir mikro:bit dalış ölçeri oluşturmak için kullanıldı.

Ek Sözleşme 27-Mayıs-2018:

Pimoroni, BMP280 sensörü için bir MakeCode kitaplığı geliştirdiğinden, bu bana burada açıklanan cihaz için kullanılacak bir komut dosyası geliştirme fırsatı verdi. Komut dosyası ve ilgili HEX dosyası, bu talimatın son adımında bulunabilir. Kullanmak için HEX dosyasını micro:bit'inize yüklemeniz yeterlidir. Özel bir yazılıma gerek yoktur ve betiği düzenlemek için çevrimiçi MakeCode düzenleyicisini kullanabilirsiniz.

Adım 1: Kullanılmış Malzemeler

Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
Kullanılan Malzemeler
  • Bir mikro:bit, benimkini Pimoroni'den aldım - 13.50 GBP
  • Micro:bit için Kitronic Edge Connector - Pimoroni üzerinden - 5 GBP, Açıklama: Pimorini şimdi pin:bit adı verilen ve I2C bağlantı noktalarındaki pinlere sahip, devre tahtası dostu bir kenar konektörü sunuyor.
  • 2 x 2 pin başlık şeridi
  • Micro:bit için pil veya LiPo (gerekli değil, ancak yararlı), anahtarlı pil kablosu (dito) - Pimoroni
  • sensörlerin Edge konektörüne bağlanması için atlama kabloları
  • sensör için uzun (!) atlama kabloları, en az şırınga kadar,, f/f veya f/m
  • BMP280 basınç ve sıcaklık sensörü - Banggood - Üç ünite için 5 US$Bu sensörün ölçüm aralığı 550 ile 1537 hPa arasındadır.
  • Kauçuk contalı 150 ml plastik kateter şırınga - Amazon veya hırdavat ve bahçe dükkanları - yaklaşık 2 - 3 US$
  • sıcak tutkal/sıcak tutkal tabancası
  • havya
  • Arduino IDE'nin kurulu olduğu bir bilgisayar

Adım 2: Montaj Talimatları

Montaj Talimatları
Montaj Talimatları
Montaj Talimatları
Montaj Talimatları
Montaj Talimatları
Montaj Talimatları

BMP280 sensör çıkışına lehim başlıkları.

İki 2 pinli başlığı Edge konektörünün pin 19 ve pin 20 konektörlerine lehimleyin (resme bakın).

micro:bit'i Edge konektörüne ve bilgisayarınıza bağlayın.

Adafruit micro:bit talimatlarında açıklandığı gibi yazılımı ve micro:bit'i hazırlayın. Onları iyice okuyun.

Arduino IDE'ye gerekli kütüphaneleri kurun.

Daha sonraki bir adımda eklenen BMP280 komut dosyasını açın.

Sensörü Edge konektörüne bağlayın. GND ila 0V, VCC ila 3V, SCL ila pin 19, SDA ila pin 20.

Komut dosyasını micro:bit'e yükleyin.

Sensörün makul veriler verdiğini kontrol edin, seri monitörde görüntülenen basınç değerleri 1020 hPa civarında olmalıdır. Bu durumda, önce kabloları ve bağlantıları kontrol edin, ardından yazılım kurulumunu yapın ve düzeltin.

Micro:bit'i kapatın, sensörü çıkarın.

Uzun atlama kablolarını şırınganın çıkışından geçirin. Açıklığı genişletmeniz gerekebilir. Kabloların hasar gördüğünü atlamamaya dikkat edin.

Sensörü atlama kablolarına bağlayın. Bağlantıların doğru ve iyi olduğunu kontrol edin. Mikro: bit'e bağlanın.

Sensörün doğru çalıştığını kontrol edin. Kabloları dikkatlice çekerek sensörü şırınganın üstüne getirin.

Pistonu yerleştirin ve istenen dinlenme konumundan (100 mi) biraz daha uzağa hareket ettirin.

Şırınga çıkışının ucuna sıcak tutkal ekleyin ve pistonu biraz geriye doğru hareket ettirin. Şırınganın hava geçirmez şekilde kapatılıp kapatılmadığını kontrol edin, aksi takdirde daha fazla sıcak tutkal ekleyin. Sıcak tutkalı soğumaya bırakın.

Sensörün çalışıp çalışmadığını tekrar kontrol edin. Pistonu hareket ettirirseniz, seri monitördeki ve micro:bit'in ekranındaki sayılar değişmelidir.

Gerekirse, şırınganın hacmini, contanın yanından sıkarak ve pistonu hareket ettirerek ayarlayabilirsiniz.

Adım 3: Biraz Teori ve Bazı Pratik Ölçümler

Biraz Teori ve Bazı Pratik Ölçümler
Biraz Teori ve Bazı Pratik Ölçümler
Biraz Teori ve Bazı Pratik Ölçümler
Biraz Teori ve Bazı Pratik Ölçümler

Burada açıklanan cihaz ile basit fizik deneylerinde sıkıştırma ve basınç korelasyonunu gösterebilirsiniz. Şırınga üzerinde bir "ml" ölçeği ile geldiğinden, nicel deneylerin bile gerçekleştirilmesi kolaydır.

Arkasındaki teori: Boyle yasasına göre, [Hacim * Basınç] belirli bir sıcaklıkta bir gaz için sabit bir değerdir.

Bu, belirli bir gaz hacmini N-kat sıkıştırırsanız, yani nihai hacim orijinalin 1/N katı ise, basıncı N-kat artacaktır, şu şekilde: P0*V0=P1*V1= cons t. Daha fazla ayrıntı için lütfen gaz yasalarıyla ilgili Wikipedia makalesine bakın. Deniz seviyesinde, barometrik basınç genellikle 1010 hPa (hekto Pascal) aralığındadır.

Yani örneğin dinlenme noktalarından başlayarak. V0=100 ml ve P0=1000 hPa, havanın yaklaşık 66 ml'ye (yani V1 = 2/3 * V0) sıkıştırılması, yaklaşık 1500 hPa'lık bir basınçla sonuçlanacaktır (P1= P0'ın 3/2'si). Pistonu 125 ml'ye (5/4 kat hacim) çekmek, yaklaşık 800 hPa (4/5 basınç) bir basınçla sonuçlanır. Bu kadar basit bir cihaz için ölçümler şaşırtıcı derecede hassastır.

Cihaz, şırıngadaki nispeten az miktarda havayı sıkıştırmak veya genişletmek için ne kadar kuvvet gerektiğini doğrudan dokunsal bir izlenime sahip olmanızı sağlar.

Ama aynı zamanda bazı hesaplamalar yapabilir ve deneysel olarak kontrol edebiliriz. 1000 hPa'lık bir bazal barometrik basınçta havayı 1500 hPa'ya sıkıştırdığımızı varsayalım. Yani basınç farkı 500 hPa veya 50.000 Pa'dır. Şırıngam için pistonun çapı (d) yaklaşık 4 cm veya 0.04 metredir.

Şimdi, pistonu bu konumda tutmak için gereken kuvveti hesaplayabilirsiniz. Verilen P = F/A (Basınç Kuvvet bölü Alandır) veya dönüştürülmüş F = P*A. Kuvvet için SI birimi "Newton" N, uzunluk "Metre" m için ve 1 Pa, metrekare başına 1N'dir. Yuvarlak bir piston için alan, şırınga için 0,00125 metrekare veren A = ((d/2)^2)*pi kullanılarak hesaplanabilir. Yani

50.000 Pa * 0.00125 m^2 = 63 N.

Dünya'da 1 N, 100 gr ağırlığa karşılık gelir, bu nedenle 63 N, 6,3 kg ağırlığa eşittir.

Bu, bir ölçek kullanılarak kolayca kontrol edilebilir. Pistonlu şırıngayı, yaklaşık 1500 hPa'lık bir basınca ulaşılana kadar ölçeğin üzerine itin, ardından ölçeği okuyun. Veya terazi yaklaşık 6-7 kg görünene kadar itin, ardından "A" düğmesine basın ve micro:bit'in LED matrisinde görüntülenen değeri okuyun. Anlaşıldığı üzere, yukarıdaki hesaplamalara dayanan tahmin fena değildi. 1500 hPa'nın biraz üzerinde bir basınç, vücut ölçeğinde yaklaşık 7 kg'lık bir görüntülenen "ağırlık" ile ilişkilidir (resimlere bakın). Ayrıca bu konsepti tersine çevirebilir ve cihazı, basınç ölçümlerine dayalı basit bir dijital ölçek oluşturmak için kullanabilirsiniz.

Lütfen sensör için üst sınırın yaklaşık 1540 hPa olduğunu unutmayın, bu nedenle bunun üzerindeki herhangi bir basınç ölçülemez ve sensöre zarar verebilir.

Eğitim amaçlarının yanı sıra, pistonu bir yöne veya diğerine hareket ettirmeye çalışan kuvvetleri nicel olarak ölçmeye izin verdiği için sistem bazı gerçek dünya uygulamaları için de kullanılabilir. Böylece pistona yerleştirilen ağırlığı veya pistona çarpan darbe kuvvetini ölçebilirsiniz. Veya belirli bir eşik değerine ulaşıldıktan sonra bir ışık veya zili etkinleştiren veya ses çalan bir anahtar oluşturun. Ya da pistona uygulanan kuvvete göre frekansı değiştiren bir müzik aleti yapabilirsiniz. Veya bir oyun kumandası olarak kullanın. Hayal gücünüzü kullanın ve oynayın!

Adım 4: MicroPython Komut Dosyası

Ekte micro:bit için BMP280 betiğimi bulabilirsiniz. Bu, Banggood web sitesinde bulduğum bir BMP/BME280 betiğinin Adafruit'in Microbit kitaplığıyla birleştirilmiş bir türevi. Birincisi Banggood sensörünü kullanmanıza izin verir, ikincisi ise 5x5 LED ekranın kullanımını kolaylaştırır. Her ikisinin de geliştiricilerine teşekkür ederim.

Varsayılan olarak komut dosyası, basınç ölçümlerinin sonuçlarını micro:bit'in 5x5 LED ekranında 5 adımda görüntüler ve değişiklikleri çok az gecikmeyle görmenizi sağlar. Kesin değerler Arduino IDE seri monitöründe paralel olarak görüntülenebilir veya Arduino IDE'nin seri çizicisinde daha ayrıntılı bir grafik görüntülenebilir.

A düğmesine basarsanız, ölçülen basınç değerleri micro:bit'in 5x5 LED dizisinde görüntülenir. B düğmesine basarsanız, sıcaklık değerleri görüntülenir. Bu, hassas verilerin okunmasını sağlarken, ölçüm döngülerini önemli ölçüde yavaşlatır.

Görevleri programlamanın ve senaryoyu geliştirmenin çok daha zarif yolları olduğuna eminim. Herhangi bir yardım açığız.

#xxx dahil

#include Adafruit_Microbit_Matrix mikrobit; #define BME280_ADDRESS 0x76 unsigned uzun int hum_raw, temp_raw, pres_raw; imzalı uzun 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; // ölçülen değerler için kaplar int value0; int değer1; int değer2; int değer3; int değeri4; //------------------------------------------------ -------------------------------------------------- ------------------ geçersiz kurulum() { uint8_t osrs_t = 1; //Sıcaklık aşırı örnekleme x 1 uint8_t osrs_p = 1; //Basınç aşırı örnekleme x 1 uint8_t osrs_h = 1; //Nem aşırı örnekleme x 1 uint8_t modu = 3; //Normal mod uint8_t t_sb = 5; //Tstandby 1000ms uint8_t filtre = 0; //Filtreleme kapalı uint8_t spi3w_en = 0; //3-wire SPI Devre Dışı Bırak uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mod; uint8_t config_reg = (t_sb << 5) | (filtre << 2) | spi3w_tr; uint8_t ctrl_hum_reg = osrs_h; pinMode(PIN_BUTTON_A, INPUT); pinMode(PIN_BUTTON_B, INPUT); Seri.başla(9600); // Serial.println("Sıcaklık [derece C]"); // Serial.print("\t"); Serial.print("Basınç [hPa] "); // başlık Wire.begin(); writeReg(0xF2, ctrl_hum_reg); writeReg(0xF4, ctrl_meas_reg); writeReg(0xF5, config_reg); readTrim(); // mikrobit.begin(); // mikrobit.print("x"); gecikme (1000); } //------------------------------------------------ -------------------------------------------------- -------- void loop() { double temp_act = 0.0, press_act = 0.0, hum_act=0.0; imzalı uzun int temp_cal; unsigned long int press_cal, hum_cal; int N; // LED matris ekranı için eşik değerleri ayarlayın, hPa double max_0 = 1100; çift maks_1 = 1230; çift max_2 = 1360; çift max_3 = 1490; readData(); temp_cal = kalibrasyon_T(temp_raw); press_cal = kalibrasyon_P(pres_raw); hum_cal = kalibrasyon_H(hum_raw); temp_act = (çift)temp_cal / 100.0; press_act = (çift)press_cal / 100.0; hum_act = (çift)hum_cal / 1024.0; mikrobit.clear(); //LED matrisini sıfırla /* Serial.print ("BASIN: "); Serial.println(press_act); Serial.print("hPa"); Serial.print("TEMP: "); Seri.print("\t"); Serial.println(temp_act); */ if (! digitalRead(PIN_BUTTON_B)) { // değerleri sayılarla göstermek, ölçüm çemberlerini geciktirir 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{ // basınç değerlerini belirli bir seviyede pikseller veya çizgiler olarak görüntüleme // 5 adım: 1490 hPa // max_n değerleri tarafından tanımlanan eşikler if (press_act > max_3){ (N=0); // üst sıra } else if (press_act > max_2){ (N=1); } else if (press_act > max_1){ (N=2); } else if (press_act > max_0){ (N=3); } başka { (N=4); // temel satır } // Serial.println(N); // geliştirme amaçlı // microbit.print(N); // Satır olarak // microbit.drawLine(N, 0, 0, 4, LED_ON); // değerleri bir sonraki satıra kaydır değer4 = değer3; değer3 = değer2; değer2 = değer1; değer1 = değer0; değer0 = N; // sütun sütun resim çiz microbit.drawPixel(0, value0, LED_ON); // Pixel olarak: sütun, satır. 0, 0 sol üst köşe microbit.drawPixel(1, değer1, LED_ON); microbit.drawPixel(2, değer2, LED_ON); microbit.drawPixel(3, değer3, LED_ON); microbit.drawPixel(4, değer4, LED_ON); } // seri monitöre ve seri çiziciye veri gönder // Serial.println(press_act); // sayısal gösterim için seri bağlantı noktasına değer(ler) gönder, isteğe bağlı

Serial.print(basın_act); // çizici için seri porta değer gönder

// gösterge çizgileri çizin ve görüntülenen aralığı düzeltin Serial.print("\t"); Seri.baskı(600); Seri.print("\t"); Seri.baskı(1100), Seri.baskı("\t"); Seri.println(1600); gecikme(200); // Saniyede üç kez ölçün } //---------------------------------------- -------------------------------------------------- -------------------------------------------------- -- // bmp/bme280 sensörü için aşağıdakiler gereklidir, olduğu gibi kalsın readTrim() { uint8_t data[32], i=0; // 2014/Wire.beginTransmission'ı düzeltin(BME280_ADDRESS); Wire.write(0x88); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 24); // Düzelt 2014/while(Wire.available()){ data = Wire.read(); ben++; } Wire.beginTransmission(BME280_ADDRESS); // 2014/Wire.write(0xA1) ekleyin; // 2014/Wire.endTransmission() ekleyin; // 2014/Wire.requestFrom(BME280_ADDRESS, 1); // 2014/veri ekle = Wire.read(); // 2014/i++ ekleyin; // 2014/Wire.beginTransmission(BME280_ADDRESS) ekleyin; Wire.write(0xE1); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 7); // Düzelt 2014/while(Wire.available()){ data = Wire.read(); ben++; } dig_T1 = (veri[1] << 8) | veri[0]; dig_P1 = (veri[7] << 8) | veri[6]; dig_P2 = (veri[9] << 8) | veri[8]; dig_P3 = (veri[11]<< 8) | veri[10]; dig_P4 = (veri[13]<< 8) | veri[12]; dig_P5 = (veri[15]<< 8) | veri[14]; dig_P6 = (veri[17]<< 8) | veri[16]; dig_P7 = (veri[19]<< 8) | veri[18]; dig_T2 = (veri[3] << 8) | veri[2]; dig_T3 = (veri[5] << 8) | veri[4]; dig_P8 = (veri[21]<< 8) | veri[20]; dig_P9 = (veri[23]<< 8) | veri[22]; dig_H1 = veri[24]; dig_H2 = (veri[26]<< 8) | veri[25]; dig_H3 = veri[27]; dig_H4 = (veri[28]<< 4) | (0x0F ve veri[29]); dig_H5 = (veri[30] 4) & 0x0F); // Düzelt 2014/dig_H6 = veri[31]; // Düzelt 2014/} void writeReg(uint8_t reg_address, uint8_t data) { Wire.beginTransmission(BME280_ADDRESS); Wire.write(reg_address); Wire.write(veri); Wire.endTransmission(); }

geçersiz readData()

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

imzalı uzun int kalibrasyon_T(imzalı uzun int adc_T)

{ imzalı uzun int var1, var2, T; var1 = ((((adc_T >> 3) - ((işaretli uzun int)dig_T1 11; var2 = (((((adc_T >> 4) - ((işaretli uzun int)dig_T1)) * ((adc_T>>4) - ((uzun int işaretli)dig_T1))) >> 12) * ((uzun int işaretli)dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; dönüş T; } unsigned long int kalibrasyon_P(signed long int adc_P) { Signed long int var1, var2; unsigned long int P; var1 = (((signed long int)t_fine)>>1) - (signed long int)64000; var2 = (((var1>>2) * (var1>>2)) >> 11) * ((signed long int)dig_P6); var2 = var2 + ((var1*((signed long int)dig_P5))2) +(((işaretli uzun int)dig_P4)2)*(var1>>2)) >> 13)) >>3) + ((((işaretli uzun int)dig_P2) * var1)>>1))>> 18; var1 = ((((32768+var1))*((işaretli uzun int)dig_P1))>>15); if (var1 == 0) { 0 döndür; } P = (((işaretsiz uzun int)(((işaretli uzun int)1048576)-adc_P)-(var2>>12)))*3125; if(P<0x80000000) { P = (P <<1) / ((işaretsiz uzun int) var1); } else { P = (P / (işaretsiz uzun int)var1) * 2; } var1 = (((işaretli uzun int)dig_P9) * ((işaretli uzun int)(((P>>3) * (P>>3))>>13)))>>12; var2 = (((işaretli uzun int)(P>>2)) * ((işaretli uzun int)dig_P8))>>13; P = (işaretsiz uzun int)((işaretli uzun int)P + ((var1 + var2 + dig_P7) >> 4)); dönüş P; } unsigned long int kalibrasyon_H(signed long int adc_H) { Signed long int v_x1; v_x1 = (t_fine - ((uzun int işaretli)76800)); v_x1 = (((((adc_H << 14) -(((işaretli uzun int)dig_H4) 15) * (((((((v_x1 * ((işaretli uzun int))dig_H6))) >> 10) * (((v_x1 * ((uzun int işaretli)dig_H3)) >> 11) + ((uzun int işaretli) 32768))) >> 10) + ((uzun int işaretli)2097152)) * ((uzun int işaretli) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((uzun int işaretli)dig_H1)) >> 4)); v_x1 = (v_x1 419430400 ? 419430400: v_x1); dönüş (işaretsiz uzun int)(v_x1 >> 12); }

Adım 5: MakeCode/JavaScript Komut Dosyaları

MakeCode/JavaScript Komut Dosyaları
MakeCode/JavaScript Komut Dosyaları

Pimoroni yakın zamanda bir BMP280 basınç sensörü, bir ışık/renk sensörü ve bir MEMS mikrofonu ile birlikte gelen enviro:bit'i piyasaya sürdü. Ayrıca bir MicroPython ve bir MakeCode/JavaScript kitaplığı sunarlar.

Daha sonra basınç sensörü için bir MakeCode betiği yazmak için kullandım. İlgili hex dosyası doğrudan micro:bit'inize kopyalanabilir. Kod aşağıda gösterilmiştir ve çevrimiçi MakeCode düzenleyicisi kullanılarak değiştirilebilir.

Bu, mikro:bit dalış ölçer için komut dosyasının bir varyasyonudur. Varsayılan olarak basınç farkını bir çubuk grafik olarak görüntüler. A düğmesine basmak referans basıncını ayarlar, B düğmesine basmak, gerçek ve referans basınç arasındaki farkı hPa cinsinden görüntüler.

Temel barkod sürümüne ek olarak, okumayı kolaylaştırmak için tasarlanmış bir "X", artı işareti sürümü ve "L" sürümü de bulacaksınız.

Sütun = 0 olsun

bırak = 0 bırak Satır = 0 bırak Metre = 0 bırak Delta = 0 bırak Ref = 0 bırak Is = 0 Ol = 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 (Metre >= 400) { Satır = 4 } else if (Metre >= 300) { Satır = 3 } else if (Metre >= 200) { Satır = 2 } else if (Metre >= 100) { Satır = 1 } else { Satır = 0 } kalır = Metre - Satır * 100 if (kalın >= 80) { Sütun = 4 } else if (kalın >= 60) { Sütun = 3 } else if (kalın >= 40) { Sütun = 2 } else if (remain >= 20) { Sütun = 1 } else { Sütun = 0 } for (let ColA = 0; ColA <= Sütun; ColA++) { led.plot(ColA, Row) } temel.duraklat(500) } })

Önerilen: