Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

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

[复制链接]
 楼主| 发表于 2021-9-8 20:25 | 显示全部楼层
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
项目之八:简易测量X轴的动态波形

实验开源图形编程(Mind+、Mixly、编玩边学)

39.jpg

 楼主| 发表于 2021-9-8 20:26 | 显示全部楼层
实验串口绘图器返回情况

40.jpg
 楼主| 发表于 2021-9-8 21:06 | 显示全部楼层
本帖最后由 eagler8 于 2021-9-8 21:11 编辑

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
  项目之九:低功耗模式计步器


通过 setStepPowerMode 设置计步器功耗模式(stepNormalPowerMode 表示正常模式,stepLowPowerMode 表示低功耗模式)


  实验开源代码


  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
  4.   项目之九:低功耗模式计步器
  5.   I2C地址:
  6.   0x68:将 BMI160 的 SDIO 引脚连接到 GND,即默认 I2C 地址
  7.   实验接线:
  8.   BMI160     UNO
  9.   VIN        5V
  10.   GND        GND
  11.   SCL        A5
  12.   SDA        A5
  13.   SAO        GND
  14.   INT1       D2
  15. */

  16. #include <DFRobot_BMI160.h>

  17. DFRobot_BMI160 bmi160;
  18. const int8_t i2c_addr = 0x68;
  19. bool readStep = false;

  20. #if defined ARDUINO_AVR_UNO || defined ARDUINO_AVR_MEGA2560 || defined ARDUINO_AVR_PRO
  21. //uno和mega2560的中断号为0
  22. int pbIn = 2;
  23. #elif ARDUINO_AVR_LEONARDO
  24. //uno和leonardo的中断号为0
  25. int pbIn = 3;
  26. #else
  27. int pbIn = 13;
  28. #endif
  29. //bmi160 有两个中断接口
  30. int int1 = 1;
  31. int int2 = 2;

  32. void stepChange() {
  33.   //一旦改变了步进控制器,就可以读取该值
  34.   readStep = true;
  35. }

  36. void setup() {
  37.   Serial.begin(115200);
  38.   delay(100);

  39.   //设置并初始化 bmi160 i2c 地址
  40.   while (bmi160.I2cInit(i2c_addr) != BMI160_OK) {
  41.     Serial.println("i2c init fail");
  42.     delay(1000);
  43.   }

  44.   //将中断号设置为 int1 或 int2
  45.   if (bmi160.setInt(int1) != BMI160_OK) {
  46.     Serial.println("set interrput fail");
  47.     while (1);
  48.   }

  49.   //将 bmi160 模式设置为计步器
  50.   if (bmi160.setStepCounter() != BMI160_OK) {
  51.     Serial.println("set step fail");
  52.     while (1);
  53.   }

  54.   //设置 bmi160 电源模型(微功耗电源模式)
  55.   if (bmi160.setStepPowerMode(bmi160.stepLowPowerMode) != BMI160_OK) {
  56.     Serial.println("set setStepPowerMode fail");
  57.     while (1);
  58.   }

  59. #if defined ARDUINO_AVR_UNO || defined ARDUINO_AVR_MEGA2560 || defined ARDUINO_AVR_LEONARDO || defined ARDUINO_AVR_PRO
  60.   //将板上的引脚设置为连接到 bmi160 的 int1 或 int2
  61.   attachInterrupt(digitalPinToInterrupt(pbIn), stepChange, FALLING);
  62. #else
  63.   attachInterrupt(pbIn, stepChange, FALLING);
  64. #endif
  65.   Serial.println(pbIn);
  66. }

  67. void loop() {
  68.   if (readStep) {
  69.     uint16_t stepCounter = 0;
  70.     //从硬件 bmi160 读取计步器
  71.     if (bmi160.readStepCounter(&stepCounter) == BMI160_OK) {
  72.       Serial.print("计步器 = "); Serial.println(stepCounter);
  73.     }
  74.     readStep = false;
  75.   }
  76. }
复制代码


 楼主| 发表于 2021-9-10 06:19 | 显示全部楼层
eagler8 发表于 2021-8-27 12:47
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百六十三:BMI160 6轴惯性 ...

楼主你好,想问一下,我按照你的步骤弄,但一直卡在: // 初始化设备 BMI160.begin(BMI160GenClass::SPI_MODE, select_pin); 是什么情况?  发表于 2021-9-9 23:45

模块与单片机的通讯方式总共三种,你是使用哪一种?
发表于 2021-9-10 12:35 | 显示全部楼层
楼主你好,想问一下,我按照你的步骤弄,但一直卡在: // 初始化设备 BMI160.begin(BMI160GenClass::SPI_MODE, select_pin); 是什么情况?
 楼主| 发表于 2021-9-10 13:30 | 显示全部楼层
叶尼怪 发表于 2021-9-10 12:35
楼主你好,想问一下,我按照你的步骤弄,但一直卡在: // 初始化设备 BMI160.begin(BMI160GenClass::SPI_MO ...

模块与单片机的通讯方式总共三种,你是使用哪一种?估计你是卡在通讯方式上了,如何接线的?
发表于 2021-9-10 23:06 | 显示全部楼层
spi和i2c都试过了,不行,scx/sdx转到scl/sda也不行。
发表于 2021-9-10 23:10 | 显示全部楼层
eagler8 发表于 2021-9-10 13:30
模块与单片机的通讯方式总共三种,你是使用哪一种?估计你是卡在通讯方式上了,如何接线的? ...

spi和i2c都试过了,不行,用的是楼主发的图示例接线方式。
 楼主| 发表于 2021-9-11 06:51 | 显示全部楼层
叶尼怪 发表于 2021-9-10 23:10
spi和i2c都试过了,不行,用的是楼主发的图示例接线方式。

这里的所有实验,都只是在I2C接口下做的,不用试其他的,就二根线A4和A5
 楼主| 发表于 2021-9-11 06:52 | 显示全部楼层
叶尼怪 发表于 2021-9-10 23:10
spi和i2c都试过了,不行,用的是楼主发的图示例接线方式。

手机拍张接线照片,复制出错信息过来看看.......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2022-12-6 19:04 , Processed in 0.073057 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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