Raspberry pi代码,用于LMS303获取磁x,y,z(Python 3)

Raspberry pi代码,用于LMS303获取磁x,y,z(Python 3),python,raspberry-pi3,sensors,adafruit,adafruit-circuitpython,Python,Raspberry Pi3,Sensors,Adafruit,Adafruit Circuitpython,我目前正在做一个有树莓皮3b+和一些传感器的项目。其中一个传感器是adafruit LMS303三轴加速计+磁强计(指南针),我尝试了一些基本的示例代码,一切正常。 我现在要做的是从mag.magnetic中提取x,y,z值,并将它们用作数字罗盘 from time import sleep import board import busio import adafruit_lsm303_accel import adafruit_lsm303dlh_mag import time import

我目前正在做一个有树莓皮3b+和一些传感器的项目。其中一个传感器是adafruit LMS303三轴加速计+磁强计(指南针),我尝试了一些基本的示例代码,一切正常。 我现在要做的是从mag.magnetic中提取x,y,z值,并将它们用作数字罗盘

from time import sleep
import board
import busio
import adafruit_lsm303_accel
import adafruit_lsm303dlh_mag
import time
import math

i2c = busio.I2C(board.SCL, board.SDA)
time.sleep(1) #tiempo para que alcance a detectar el sensor
mag = adafruit_lsm303dlh_mag.LSM303DLH_Mag(i2c)
accel = adafruit_lsm303_accel.LSM303_Accel(i2c)
pi = 3.14159
while True:
    print("Acceleration (m/s^2): X=%0.3f Y=%0.3f Z=%0.3f"%accel.acceleration)
    heading=(math.atan2(mag.magnetic.y,mag.magnetic.x)*180)/pi

    if heading <0:
      heading=360+heading
    print("Magnetometer (micro-Teslas)): X=%0.3f Y=%0.3f Z=%0.3f"%mag.magnetic)
    print("Heading: %7.2f"%heading)

    sleep(0.5)
从时间导入睡眠
进口局
进口业务
进口adafruit_lsm303_accel
进口adafruit_lsm303dlh_mag
导入时间
输入数学
i2c=业务i2c(board.SCL,board.SDA)
时间。睡眠(1)#tiempo para que alcance a检测传感器
mag=adafruit_lsm303dlh_mag.lsm303dlh_mag(i2c)
加速度=adafruit_lsm303_加速度。lsm303_加速度(i2c)
pi=3.14159
尽管如此:
打印(“加速度(m/s^2):X=%0.3f Y=%0.3f Z=%0.3f”%accel.Acceleration)
航向=(数学atan2(磁极y,磁极x)*180)/pi

如果heading我解了它,我注意到mag.magnetic是一个元组,所以我只在它的末尾添加[]:

from time import sleep
import board
import busio
import adafruit_lsm303_accel
import adafruit_lsm303dlh_mag
import time
import math

i2c = busio.I2C(board.SCL, board.SDA)
time.sleep(1) #tiempo para que alcance a detectar el sensor
mag = adafruit_lsm303dlh_mag.LSM303DLH_Mag(i2c)
accel = adafruit_lsm303_accel.LSM303_Accel(i2c)
offset=65
pi = 3.14159

while True:
   # print("Acceleration (m/s^2): X=%0.3f Y=%0.3f Z=%0.3f"%accel.acceleration)
    x=mag.magnetic[0]
    y=mag.magnetic[1]
    heading=(math.atan2(x,y)*180)/pi
    heading=heading-offset
    if heading <0:
      heading=360+heading
   # print("Magnetometer (micro-Teslas)): X=%0.3f Y=%0.3f Z=%0.3f"%mag.magnetic)
    print("Heading: %7.2f"%heading)
    print(" ")

    sleep(0.5)
从时间导入睡眠
进口局
进口业务
进口adafruit_lsm303_accel
进口adafruit_lsm303dlh_mag
导入时间
输入数学
i2c=业务i2c(board.SCL,board.SDA)
时间。睡眠(1)#tiempo para que alcance a检测传感器
mag=adafruit_lsm303dlh_mag.lsm303dlh_mag(i2c)
加速度=adafruit_lsm303_加速度。lsm303_加速度(i2c)
偏移量=65
pi=3.14159
尽管如此:
#打印(“加速度(m/s^2):X=%0.3f Y=%0.3f Z=%0.3f”%accel.Acceleration)
x=磁感应[0]
y=磁感应[1]
航向=(数学坐标2(x,y)*180)/pi
航向=航向偏移

如果标题也加了偏移量,也可以做
x,y=mag.magnetic
@DerekEden这是一个有3个值的元组,里面也有一个
z
。@KevinJWalters然后是x,y,z或x,y_