Skip to main content

Osnovna očitanja

Što prikazuje ovaj primjer​

Čitanje kompenziranog magnetskog polja na sve tri osi, u µT, i temperature senzora, u petlji otprilike svakih 100 ms. Ovo je najjednostavniji primjer modula i onaj koji koristi Brzi početak.

Primjer stvara I2C sabirnicu 0 sa SCL-om na GPIO 9 i SDA-om na GPIO 8. Promijenite ove pinove u one koje ste povezali.

Kod primjera​

# FILE: bmm350-basicReadings.py
# AUTHOR: Soldered Electronics
# BRIEF: Reads compensated magnetometer and temperature data from the BMM350
# sensor over I2C
# WORKS WITH: BMM350 Geomagnetic Sensor breakout: www.solde.red/333359
# LAST UPDATED: 2026-09-22

from bmm350 import BMM350, BMM350_OK
from machine import I2C, Pin
import time

# Change these to match how your board wires I2C
i2c = I2C(0, scl=Pin(9), sda=Pin(8))
sensor = BMM350(i2c)

if sensor.status != BMM350_OK:
raise Exception("Failed to initialize BMM350: " + sensor.status_string())

print("BMM350 connected!")

while True:
if sensor.get_sensor_data() == BMM350_OK:
print(
"X: {:.2f} uT\tY: {:.2f} uT\tZ: {:.2f} uT\tTemperature: {:.2f} degC".format(
sensor.data.mag_x, sensor.data.mag_y, sensor.data.mag_z, sensor.data.temperature
)
)
else:
print("Failed to read sensor data:", sensor.status_string())

time.sleep_ms(100)

🔗Otvori cijeli primjer

bmm350-basicReadings.py u commitu 0995e8d

→

Ovaj primjer koristi i machine.I2C (MicroPython referenca), machine.Pin (MicroPython referenca) i time.sleep_ms() (MicroPython referenca), koji dolaze s MicroPython firmverom i nisu dio modula bmm350. time.sleep_ms() pauzira program na zadani broj milisekundi: time.sleep_ms(100) na kraju petlje određuje tempo od otprilike jednog očitanja svakih 100 ms.

Očekivani rezultat: BMM350 connected!, zatim jedan redak po očitanju, otprilike svakih 100 ms: X:, Y: i Z:, svaki u uT s dvije decimale, zatim Temperature: u degC, odvojeni tabulatorima.

ShellMicroPython
BMM350 connected!
X: 12.84 uT Y: -23.51 uT Z: -38.27 uT Temperature: 24.62 degC
X: 12.91 uT Y: -23.47 uT Z: -38.32 uT Temperature: 24.62 degC
X: 12.79 uT Y: -23.56 uT Z: -38.21 uT Temperature: 24.64 degC
X: 12.88 uT Y: -23.49 uT Z: -38.30 uT Temperature: 24.64 degC

Ako čitanje ne uspije, redak glasi Failed to read sensor data: i sadrži razlog.

Korištene funkcije​

BMM350(i2c=None, address=BMM350_I2C_ADSEL_SET_LOW)returns BMM350

Konstruktor. Resetira senzor, provjerava ID čipa, učitava kalibracijske podatke, postavlja 100 Hz s usrednjavanjem 4 uzorka, omogućuje sve osi i pokreće normalni način rada. Baca iznimku kada senzor ne odgovara ili odgovara drugi čip. Bez objekta i2c koristi I2C(0, scl=Pin(22), sda=Pin(21)) kada firmver javlja esp32, esp8266 ili naziv firmvera jedne Soldered pločice, a na svakoj drugoj pločici baca iznimku.

ReturnsObjekt senzora.

Parametri

TipNazivOpis
I2Ci2cInicijalizirani objekt machine.I2C. Neobavezan samo na pločicama koje modul prepoznaje (pogledajte konstruktor iznad).
intaddressI2C adresa. BMM350_I2C_ADSEL_SET_LOW (0x14, zadano) ili BMM350_I2C_ADSEL_SET_HIGH (0x15).
get_sensor_data()returns int

Čita novo kompenzirano mjerenje u sensor.data.mag_x, sensor.data.mag_y i sensor.data.mag_z (µT) te sensor.data.temperature (°C).

ReturnsBMM350_OK (0) u slučaju uspjeha, inače kôd pogreške.

status_string()returns str

Opisuje trenutačni kôd sensor.status.

ReturnsOpis ili prazan niz kada je status BMM350_OK.

Sastavljanje cjeline​

Konstruktor već baca iznimku kada senzor nije dostupan, pa je provjera sensor.status nakon njega druga zaštita. Svaki prolaz petlje poziva get_sensor_data() i ispisuje tri osi i temperaturu iz sensor.data kada vrati BMM350_OK.

Za pločicu s JP5 premještenim na 0x15 stvorite senzor pomoću BMM350(i2c, address=BMM350_I2C_ADSEL_SET_HIGH) i uvezite tu konstantu iz bmm350.