Simple test

Ensure your device works with this simple test.

examples/h3lis200dl_simpletest.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

while True:
    accx, accy, accz = h3lis.acceleration
    print(f"x:{accx:.2f}g, y:{accy:.2f}g, z{accz:.2f}g")
    print()
    time.sleep(0.5)

Operation mode settings

Example showing the Operation mode setting

examples/h3lis200dl_operation_mode.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

h3lis.operation_mode = h3lis200dl.LOW_POWER_ODR0_5

while True:
    for operation_mode in h3lis200dl.operation_mode_values:
        print("Current Operation mode setting: ", h3lis.operation_mode)
        for _ in range(10):
            accx, accy, accz = h3lis.acceleration
            print(f"x:{accx:2f}g, y:{accy:2f}g, z:{accz:2f}g")
            print()
            time.sleep(0.5)
        h3lis.operation_mode = operation_mode

Full scale selection settings

Example showing the Full scale selection setting

examples/h3lis200dl_full_scale_selection.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

h3lis.full_scale_selection = h3lis200dl.SCALE_100G

while True:
    for full_scale_selection in h3lis200dl.full_scale_selection_values:
        print("Current Full scale selection setting: ", h3lis.full_scale_selection)
        for _ in range(10):
            accx, accy, accz = h3lis.acceleration
            print(f"x:{accx:2f}g, y:{accy:2f}g, z:{accz:2f}g")
            print()
            time.sleep(0.5)
        h3lis.full_scale_selection = full_scale_selection

Data rate settings

Example showing the Data rate setting

examples/h3lis200dl_data_rate.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

h3lis.data_rate = h3lis200dl.RATE_400HZ

while True:
    for data_rate in h3lis200dl.data_rate_values:
        print("Current Data rate setting: ", h3lis.data_rate)
        for _ in range(10):
            accx, accy, accz = h3lis.acceleration
            print(f"x:{accx:2f}g, y:{accy:2f}g, z:{accz:2f}g")
            print()
            time.sleep(0.5)
        h3lis.data_rate = data_rate

High pass filter cutoff settings

Example showing the High pass filter cutoff setting

examples/h3lis200dl_high_pass_filter_cutoff.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

h3lis.high_pass_filter_cutoff = h3lis200dl.HPCF32

while True:
    for high_pass_filter_cutoff in h3lis200dl.high_pass_filter_cutoff_values:
        print(
            "Current High pass filter cutoff setting: ", h3lis.high_pass_filter_cutoff
        )
        for _ in range(10):
            accx, accy, accz = h3lis.acceleration
            print(f"x:{accx:2f}g, y:{accy:2f}g, z:{accz:2f}g")
            print()
            time.sleep(0.5)
        h3lis.high_pass_filter_cutoff = high_pass_filter_cutoff

Interrupt Example

Interrupt Example

examples/h3lis200dl_interrupt_example.py
import time
from machine import Pin, I2C
from micropython_h3lis200dl import h3lis200dl

i2c = I2C(1, sda=Pin(2), scl=Pin(3))  # Correct I2C pins for RP2040
h3lis = h3lis200dl.H3LIS200DL(i2c)

h3lis.interrupt1_threshold = 2  # roughly 1.5 gs
h3lis.interrupt1_duration = 127  # Latch for 127 steps
h3lis.interrupt1_configuration = 42  # 0b101010 See Datasheet for options
h3lis.interrupt1_latched = 1  # 1 for True interrupt 1

while True:
    accx, accy, accz = h3lis.acceleration
    print(f"x:{accx:2f}g, y:{accy:2f}g, z:{accz:2f}g")
    print(h3lis.interrupt1_source_register)
    print()
    time.sleep(1)