问题描述
我目前正在使用树莓派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)