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.
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 BMM350Konstruktor. 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
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Inicijalizirani objekt machine.I2C. Neobavezan samo na pločicama koje modul prepoznaje (pogledajte konstruktor iznad). |
int | address | I2C 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 strOpisuje 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.