2015-10-28 18:04:03 +00:00
|
|
|
# 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.
|
|
|
|
|
2015-11-29 00:56:02 +00:00
|
|
|
from machine import Pin
|
|
|
|
from machine import I2C
|
2015-10-28 18:04:03 +00:00
|
|
|
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.
|
2015-11-29 00:56:02 +00:00
|
|
|
accel_pwr = Pin("MMA_AVDD")
|
2015-10-28 18:04:03 +00:00
|
|
|
accel_pwr.value(1)
|
|
|
|
|
2015-11-29 00:56:02 +00:00
|
|
|
i2c = I2C(1, baudrate=100000)
|
2015-10-28 18:04:03 +00:00
|
|
|
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)
|