Osnovna očitanja
Što prikazuje ovaj primjer
Očitavanje akceleracije na sve tri osi, pretvorene u g, u petlji. Ovo je najjednostavniji primjer modula i onaj koji koristi Brzi početak.
Primjer stvara I2C sabirnicu 0 s pinom SCL na GPIO 9 i pinom SDA na GPIO 8. Promijenite ove pinove u one koje ste povezali.
Kod primjera
# FILE: bma400-basicReadings.py
# AUTHOR: Soldered Electronics
# BRIEF: Reads X, Y, Z acceleration from the BMA400 sensor over I2C
# WORKS WITH: BMA400 Accelerometer breakout: www.solde.red/333419
# LAST UPDATED: 2026-09-17
from bma400 import BMA400, BMA400_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 = BMA400(i2c)
if sensor.status != BMA400_OK:
raise Exception("Failed to initialize BMA400: " + sensor.status_string())
print("BMA400 connected!")
while True:
if sensor.get_sensor_data() == BMA400_OK:
print(
"X: {:.3f} g\tY: {:.3f} g\tZ: {:.3f} g".format(
sensor.data.accel_x, sensor.data.accel_y, sensor.data.accel_z
)
)
else:
print("Failed to read acceleration:", sensor.status_string())
time.sleep_ms(20)
🔗Otvorite cijeli primjer
bma400-basicReadings.py u commitu 484a5be
Ovaj primjer koristi i machine.I2C
(MicroPython referenca)
i machine.Pin
(MicroPython referenca),
koji dolaze s MicroPython firmwareom i nisu dio modula bma400.
Očekivani rezultat, kada je pločica povezana s NULA DeepSleep (IO8 na SDA, IO9
na SCL) i leži ravno:
BMA400 connected!
X: 0.008 g Y: -0.028 g Z: 1.003 g
X: 0.020 g Y: -0.018 g Z: 1.006 g
X: 0.018 g Y: -0.009 g Z: 1.003 g
X: 0.014 g Y: -0.018 g Z: 1.009 g
X: 0.008 g Y: -0.021 g Z: 1.001 g
Nakon prvog retka slijedi po jedan redak za svako očitanje, otprilike svakih 20 ms: X:, Y:
i Z:, svaka vrijednost u g s tri decimale i iza nje g, razdvojene tabulatorima.
Ako čitanje ne uspije, redak glasi Failed to read acceleration: i iza njega
razlog.
Korištene funkcije
BMA400(i2c=None, address=BMA400_I2C_ADDRESS_SDO_LOW)returns BMA400Konstruktor. Softverski resetira senzor, provjerava njegov ID čipa (0x90) i postavlja ga u normalni način rada. Podiže iznimku kada senzor ne odgovara ili odgovara neki drugi čip. Bez objekta i2c koristi I2C(0, scl=Pin(22), sda=Pin(21)) kada se firmware prijavi kao esp32, esp8266 ili jedan stariji firmware pločice Soldered, a na svakoj drugoj pločici podiže iznimku.
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Inicijalizirani objekt machine.I2C. Neobavezan samo na pločicama koje biblioteka prepoznaje (vidi konstruktor gore). |
int | address | I2C adresa. BMA400_I2C_ADDRESS_SDO_LOW (0x14, zadano) ili BMA400_I2C_ADDRESS_SDO_HIGH (0x15). |
get_sensor_data(sensor_time=False)returns intČita novo mjerenje, pretvara ga u g prema trenutnom rasponu i sprema u sensor.data.accel_x, sensor.data.accel_y i sensor.data.accel_z.
ReturnsBMA400_OK (0) u slučaju uspjeha, inače kod pogreške.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
bool | sensor_time | Kada je True, čita i brojač vremena senzora u sensor.data.sensor_time_ms. Zadano je False. |
status_string()returns strOpisuje trenutni kod sensor.status, na primjer Communication failure ili Sensor not found.
ReturnsOpis ili prazan niz kada je status BMA400_OK.
Sve zajedno
Konstruktor već podiže iznimku kada se senzoru ne može pristupiti,
pa je provjera sensor.status nakon njega druga zaštita. Modul ne mijenja
raspon ni brzinu podataka pri pokretanju, pa nakon resetiranja BMA400
mjeri u rasponu ±4 g i brzinom 200 Hz. Svaki prolaz petlje poziva get_sensor_data()
i ispisuje tri osi iz sensor.data kada vrati BMA400_OK.
Za pločicu postavljenu na 0x15 stvorite senzor pomoću
BMA400(i2c, address=BMA400_I2C_ADDRESS_SDO_HIGH) i uvezite tu konstantu
iz bma400.