Raspbery Pi 3中的I2C使用smbus

时间:2017-10-06 13:45:53

标签: python raspberry-pi accelerometer i2c smbus

我正在尝试将我的加速度计ADXL3458连接到我在ubuntu伙伴中运行的Raspberry Pi 3。我已经为I2C通信安装了所有必需的软件包。当我执行此命令i2cdetect -y 1时,我得到了这个结果。enter image description here

现在我运行这个Python代码

#!/usr/bin/env python

import smbus
import time
import math
from math import sin, cos, pi

bus = smbus.SMBus(1)

print bus

ACC_ADRESS = 0x53

acc_x = 0.0
acc_y = 0.0
acc_z = 0.0


def writeACC (register, value):
    bus.write_byte_data(ACC_ADRESS, register, value)
    return -1

def readACC_byte ( addr):
    return bus.read_byte_data(ACC_ADRESS, addr)


def readACC_word (addr):
    LSB = bus.read_byte_data(ACC_ADRESS, addr)
    MSB = bus.read_byte_data(ACC_ADRESS, addr + 1)

    val = (MSB << 8) | LSB
    return val


def setupACC ():
    # Sleep mode
    writeACC(0x2D, 0)
    # Mesurement mode
    writeACC(0x2D, 8)
    # enable Autu sleep mode
    writeACC(0x2D, 16)

    while True:
        time.sleep(0.1)
        acc_x = readACC_word(0x32)
        acc_y = readACC_word(0x34)
        acc_z = readACC_word(0x36)

        print "Acc_x :\n", acc_x
        print "Acc_y :\n", acc_y
        print "Acc_z :\n", acc_z

        time.sleep(0.5)


if __name__ == '__main__':
    setupACC()

我在示波器enter image description here

中得到了这个结果

这推断我的I2C通信成功。但结果是我打印显示没有任何价值 enter image description here

请帮忙解决我面临的问题。是不是我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

自动睡眠模式不应该处于活动状态。评论时 #writeACC(0x2D, 16) 工作正常。