Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】168种传感器系模块列实验(163)---BMI160 六轴陀螺仪

[复制链接]
 楼主| 发表于 2021-9-11 07:07 | 显示全部楼层
BMI160 6轴惯性运动传感器电原理图

41.jpg
发表于 2021-9-11 14:50 | 显示全部楼层
eagler8 发表于 2021-9-11 06:52
手机拍张接线照片,复制出错信息过来看看.......

楼主你看这样行吗
捕获.PNG
1.PNG
2.PNG
 楼主| 发表于 2021-9-11 15:53 | 显示全部楼层
叶尼怪 发表于 2021-9-11 14:50
楼主你看这样行吗

这个程序是设置为I2C接法,其他的无法通讯
 楼主| 发表于 2021-9-11 15:56 | 显示全部楼层
本帖最后由 eagler8 于 2021-9-11 15:58 编辑
叶尼怪 发表于 2021-9-11 14:50
楼主你看这样行吗

04-0.jpg

也可以试试A4和A5
 楼主| 发表于 2021-9-11 16:08 | 显示全部楼层
叶尼怪 发表于 2021-9-11 14:50
楼主你看这样行吗

现在看来,开发板和程序没有问题,只剩模块坏的,或者接线没接好了
发表于 2021-9-11 17:32 | 显示全部楼层
eagler8 发表于 2021-9-11 16:08
现在看来,开发板和程序没有问题,只剩模块坏的,或者接线没接好了

楼主,我用程序自带的示例,接发不变,结果可以了,什么情况,但spi还是不行。

#include <BMI160Gen.h>

void setup() {
  Serial.begin(9600); // initialize Serial communication
  while (!Serial);    // wait for the serial port to open

  // initialize device
  Serial.println("Initializing IMU device...");
  //BMI160.begin(BMI160GenClass::SPI_MODE, /* SS pin# = */10);这里用他示例里的SPI也不行。
  BMI160.begin(BMI160GenClass::I2C_MODE);
  uint8_t dev_id = BMI160.getDeviceID();
  Serial.print("DEVICE ID: ");
  Serial.println(dev_id, HEX);

   // Set the accelerometer range to 250 degrees/second
  BMI160.setGyroRange(250);
  Serial.println("Initializing IMU device...done.");
}

void loop() {
  int gxRaw, gyRaw, gzRaw;         // raw gyro values
  float gx, gy, gz;

  // read raw gyro measurements from device
  BMI160.readGyro(gxRaw, gyRaw, gzRaw);

  // convert the raw gyro data to degrees/second
  gx = convertRawGyro(gxRaw);
  gy = convertRawGyro(gyRaw);
  gz = convertRawGyro(gzRaw);

  // display tab-separated gyro x/y/z values
  Serial.print("g:\t");
  Serial.print(gx);
  Serial.print("\t");
  Serial.print(gy);
  Serial.print("\t");
  Serial.print(gz);
  Serial.println();

  delay(500);
}

float convertRawGyro(int gRaw) {
  // since we are using 250 degrees/seconds range
  // -250 maps to a raw value of -32768
  // +250 maps to a raw value of 32767

  float g = (gRaw * 250.0) / 32768.0;

  return g;
}
 楼主| 发表于 2021-9-11 20:23 | 显示全部楼层
叶尼怪 发表于 2021-9-11 17:32
楼主,我用程序自带的示例,接发不变,结果可以了,什么情况,但spi还是不行。

#include

没有试过SPI模式,能用就OK了
发表于 2021-9-12 13:26 | 显示全部楼层
eagler8 发表于 2021-9-11 20:23
没有试过SPI模式,能用就OK了

好的,谢谢了。
 楼主| 发表于 2021-9-13 17:14 | 显示全部楼层

不客气,多交流
发表于 2021-10-18 20:27 | 显示全部楼层
楼主你好,我想问一下,监视器显示(BMI160GenClass::i2c_init(): I2C failed.)是什么原因呀?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2023-2-8 09:18 , Processed in 0.076297 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表