Jetson-nano 通过 I2C 使用 HMC5883

Jetson-nano 通过 I2C 使用 HMC5883
一、开启 I2C

因为默认 I2C 是关闭,需要通过下列步骤开启 I2C

  1. 在 /etc/modprobe.d/blacklist.conf 中,注释掉 blacklist i2c_i801
# lacklist i2c_i801
  1. 在 /etc/modules 的最后面追加
i2c-dev
  1. sudo reboot 重启
二、安装相关库
sudo apt-get install i2c-tools
sudo apt-get install python3-smbus 
sudo apt-get install libi2c-dev
# i2c-tools 命令简介
# i2cdetect – 用来列举 I2C bus 上面的所有装置 
# i2cdump – 显示装置上所有 register 的值 
# i2cget – 读取装置上某个 register 的值 
# i2cset – 写入装置上某个 register 的值
三、连接
  1. nano 的 i2c 总线 0 的 (SDA/SCL) 对应引脚 27/28
    在这里插入图片描述
四、测试
# -y 指忽略用户交互操作, -r 指扫描所有地址
sudo i2cdetect -y -r 0  

在这里插入图片描述
0x1e 是 HMC5883 的 7 位地址

import smbus
import time

bus = smbus.SMBus(0)
address = 0x1E

def bearingX():
    bear1 =  bus.read_byte_data(address, 3)
    bear2 =  bus.read_byte_data(address, 4)
    bear = (bear1 << 8) + bear2
    return bear

def bearingY():
    bear1 =  bus.read_byte_data(address, 7)
    bear2 =  bus.read_byte_data(address, 8)
    bear = (bear1 << 8) + bear2
    return bear

def bearingZ():
    bear1 =  bus.read_byte_data(address, 5)
    bear2 =  bus.read_byte_data(address, 6)
    bear = (bear1 << 8) + bear2
    return bear
# 设置为连续测量模式
def setDefault():
    bus.write_byte_data(address, 2, 0)

while True:
    setDefault()
    time.sleep(0.07)
    x = bearingX()
    z = bearingZ()
    y = bearingY()
    print("(%d, %d, %d)" % (x, y, z))
    time.sleep(0.2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值