Skip to content
Snippets Groups Projects
Select Git revision
  • dualcore
  • ch3/leds
  • wip-bootstrap default
  • ch3/time
  • master
5 results

accel_i2c.py

Blame
  • accel_i2c.py 972 B
    # This is an example on how to access accelerometer on
    # PyBoard directly using I2C bus. As such, it's more
    # intended to be an I2C example, rather than accelerometer
    # example. For the latter, using pyb.Accel class is
    # much easier.
    
    from machine import Pin
    from machine import I2C
    import time
    
    # Accelerometer needs to be powered on first. Even
    # though signal is called "AVDD", and there's separate
    # "DVDD", without AVDD, it won't event talk on I2C bus.
    accel_pwr = Pin("MMA_AVDD")
    accel_pwr.value(1)
    
    i2c = I2C(1, baudrate=100000)
    addrs = i2c.scan()
    print("Scanning devices:", [hex(x) for x in addrs])
    if 0x4c not in addrs:
        print("Accelerometer is not detected")
    
    ACCEL_ADDR = 0x4c
    ACCEL_AXIS_X_REG = 0
    ACCEL_MODE_REG = 7
    
    # Now activate measurements
    i2c.mem_write(b"\x01", ACCEL_ADDR, ACCEL_MODE_REG)
    
    print("Try to move accelerometer and watch the values")
    while True:
        val = i2c.mem_read(1, ACCEL_ADDR, ACCEL_AXIS_X_REG)
        print(val[0])
        time.sleep(1)