LMS303的Raspberry Pi代码获得磁x,y,zPYTHON3

问题描述

我目前正在使用树莓派3b +和一些传感器进行项目。传感器之一是adafruit LMS303三轴加速度计+磁力计(罗盘),我尝试执行一些基本的示例代码,并且一切正常。 我现在要做的是从mag.magnetic中获取值,然后提取x,y,z值并将其用作数字罗盘。

struct AppBackGround: ViewModifier {
    
    func body(content: Content) -> some View {
         ZStack {
            Color.red
                .overlay(
                    Image("background")
                        .resizable()
                        .scaledToFill()
                )
                .border(Color.red,width: 1)
            
            content
         }
         .edgesIgnoringSafeArea(.all)
    }
}

代码不起作用,因为mag.magnetic.x和mag.magnetic.y不存在(这不是提取这些值的正确方法)。 ¿有人能指出提取mag.magnetic.x和mag.magnetic.y的正确方法是什么吗?

解决方法

我解决了这个问题,我注意到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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...