Simple test

Ensure your device works with this simple test.

examples/mma8451_simpletest.py
import time
from machine import Pin, I2C
from micropython_mma8451 import mma8451

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
mma = mma8451.MMA8451(i2c)

while True:
    x, y, z = mma.acceleration
    print(f"Acceleration: X={x:0.1f}m/s^2 y={y:0.1f}m/s^2 z={z:0.1f}m/s^2")
    print()
    time.sleep(0.5)

Operation mode settings

Example showing the Operation mode setting

examples/mma8451_operation_mode.py
import time
from machine import Pin, I2C
from micropython_mma8451 import mma8451

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
mma = mma8451.MMA8451(i2c)

mma.operation_mode = mma8451.STANDBY_MODE

while True:
    for operation_mode in mma8451.operation_mode_values:
        print("Current Operation mode setting: ", mma.operation_mode)
        for _ in range(10):
            accx, accy, accz = mma.acceleration
            print(
                f"Acceleration: X={accx:0.1f}m/s^2 y={accy:0.1f}m/s^2 z={accz:0.1f}m/s^2"
            )
            print()
            time.sleep(0.5)
        mma.operation_mode = operation_mode

Scale range settings

Example showing the Scale range setting

examples/mma8451_scale_range.py
import time
from machine import Pin, I2C
from micropython_mma8451 import mma8451

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
mma = mma8451.MMA8451(i2c)

mma.scale_range = mma8451.RANGE_8G

while True:
    for scale_range in mma8451.scale_range_values:
        print("Current Scale range setting: ", mma.scale_range)
        for _ in range(3):
            accx, accy, accz = mma.acceleration
            print(
                f"Acceleration: X={accx:0.1f}m/s^2 y={accy:0.1f}m/s^2 z={accz:0.1f}m/s^2"
            )
            print()
            time.sleep(0.5)
        mma.scale_range = scale_range

Data rate settings

Example showing the Data rate setting

examples/mma8451_data_rate.py
import time
from machine import Pin, I2C
from micropython_mma8451 import mma8451

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
mma = mma8451.MMA8451(i2c)

mma.data_rate = mma8451.DATARATE_800HZ

while True:
    for data_rate in mma8451.data_rate_values:
        print("Current Data rate setting: ", mma.data_rate)
        for _ in range(10):
            accx, accy, accz = mma.acceleration
            print(
                f"Acceleration: X={accx:0.1f}m/s^2 y={accy:0.1f}m/s^2 z={accz:0.1f}m/s^2"
            )
            print()
            time.sleep(0.5)
        mma.data_rate = data_rate

High pass filter cutoff settings

Example showing the High pass filter cutoff setting

examples/mma8451_high_pass_filter_cutoff.py
import time
from machine import Pin, I2C
from micropython_mma8451 import mma8451

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
mma = mma8451.MMA8451(i2c)

mma.high_pass_filter = mma8451.HPF_ENABLED
mma.high_pass_filter_cutoff = mma8451.CUTOFF_8HZ

while True:
    for high_pass_filter_cutoff in mma8451.high_pass_filter_cutoff_values:
        print("Current High pass filter cutoff setting: ", mma.high_pass_filter_cutoff)
        for _ in range(10):
            accx, accy, accz = mma.acceleration
            print(
                f"Acceleration: X={accx:0.1f}m/s^2 y={accy:0.1f}m/s^2 z={accz:0.1f}m/s^2"
            )
            print()
            time.sleep(0.5)
        mma.high_pass_filter_cutoff = high_pass_filter_cutoff