Arduino101学习笔记(十三)—— 101六轴传感器

Posted Blue Mountain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino101学习笔记(十三)—— 101六轴传感器相关的知识,希望对你有一定的参考价值。

一、相关API

1、begin:需要在其他CUIREIMU前调用

//*********************************************************************************************
//函数名称:CurieImu.begin()
//输入参数:无
//函数返回:无
//函数功能:开六轴传感器,必须第一个调用
//*********************************************************************************************
CurieIMU.begin();

 

2、得到陀螺仪的采样频率

//*********************************************************************************************
//函数名称:CurieImu.getGyroRate()
//输入参数:无
//函数返回:25  50  100  200  400  800  1600  3200(Hz)
//函数功能:得到陀螺仪的采样频率
//*********************************************************************************************
CurieIMU.getGyroRate();

 

3、设置陀螺仪的采样频率

      他的数据速率也是采样频率,并影响读数的带宽。

//*********************************************************************************************
//函数名称:CurieImu.setGyroRate(int rate)
//输入参数:rate 采样频率   25  50  100  200  400  800  1600  3200(Hz)
//函数返回:无
//函数功能:无
//*********************************************************************************************
CurieImu.setGyroRate(int rate);

 

4、得到加速度计的采样频率

//*********************************************************************************************
//函数名称:CurieImu.getAccelerometerRate()
//输入参数:无
//函数返回:rate 采样频率 12.5 25 50 100 200 400 800 1600 
//函数功能:返回加速度计的采样频率
//*********************************************************************************************
CurieIMU.getAccelerometerRate()

 

5、设置加速度计的采样频率

//*********************************************************************************************
//函数名称:CurieImu.setAccelerometerRate(float rate)
//输入参数:rate 采样频率   12.5   25   50   100   200   400   800   1600
//函数返回:无
//函数功能:返回加速度计的采样频率
//*********************************************************************************************
CurieIMU.setAccelerometerRate(float rate)

 

6、返回陀螺仪测量范围

//*********************************************************************************************
//函数名称:CurieImu.getGyroRange()
//输入参数:无
//函数返回:2000 (+/-2000°/s)
//                 1000 (+/-1000°/s)
//                 500 (+/-500°/s)
//                 250 (+/-250°/s)
//                 125 (+/-125°/s)
//函数功能:返回陀螺仪的测量范围
//*********************************************************************************************
CurieIMU.getGyroRange()

 

7、设置陀螺仪测量范围

//*********************************************************************************************
//函数名称:CurieImu.setGyroRange()
//输入参数:2000 (+/-2000°/s)
//                 1000 (+/-1000°/s)
//                 500 (+/-500°/s)
//                 250 (+/-250°/s)
//                 125 (+/-125°/s)
//函数返回:无
//函数功能:返回陀螺仪的测量范围
//*********************************************************************************************
CurieIMU.setGyroRange()

 

8、得到加速度计的测量范围

//*********************************************************************************************
//函数名称:CurieImu.getAccelerometerRange()
//输入参数:无
//函数返回:2 (+/- 2g)
//                 4 (+/- 4g)
//                 8 (+/- 8g)
//                 16 (+/- 16g)
//函数功能:返回陀螺仪的测量范围
//*********************************************************************************************
CurieIMU.getAccelerometerRange()

 

9、设置加速度计的测量范围

//*********************************************************************************************
//函数名称:CurieImu.setAccelerometerRange(int range)
//输入参数:2 (+/- 2g)
//                 4 (+/- 4g)
//                 8 (+/- 8g)
//                 16 (+/- 16g)
//函数返回:无
//函数功能:返回陀螺仪的测量范围
//*********************************************************************************************
CurieIMU.setAccelerometerRange(int range)

 

10、自动进行陀螺仪偏移计算

//*********************************************************************************************
//函数名称:CurieImu.autoCalibrateGyroOffset()
//输入参数:无
//函数返回:无
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.autoCalibrateGyroOffset()

 

11、自动进行加速计偏移计算

//*********************************************************************************************
//函数名称:CurieImu.autoCalibrateAccelerometerOffset(int, axis, int target)
//输入参数:axis:     X_AXIS
//                              Y_AXIS
//                              Z_AXIS
//                 target: it can be 0 or 1.    1表示要取消重力的影响,即平躺时Z轴应该写1
//函数返回:无
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.autoCalibrateAccelerometerOffset(int, axis, int target)

 

12、偏移修正开关

//关闭
CurieIMU.noGyroOffset();
CurieIMU.noAccelerometerOffset();

//打开
CurieIMU.gyroOffsetEnabled();
CurieIMU.accelerometerOffsetEnabled();

 

13、得到陀螺仪偏移修正的数值

//*********************************************************************************************
//函数名称:CurieImu.getGyroOffset(int axis)
//输入参数:axis:     X_AXIS
//                              Y_AXIS
//                              Z_AXIS
//函数返回:修正的偏移值,The returned value is from -31.25 °/s to +31.25 °/s in discrete steps of 0.061 °/s.
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.getGyroOffset(int axis)

 

14、设置陀螺仪偏移

//*********************************************************************************************
//函数名称:CurieImu.setGyroOffset(int axis, int offset)
//输入参数:axis:     X_AXIS
//                    Y_AXIS
//                    Z_AXIS
//                  offset   偏移
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.setGyroOffset(int axis, int offset)

 

15、得到陀螺仪偏移

//*********************************************************************************************
//函数名称:CurieImu.getAccelerometerOffset(int axis)
//输入参数:axis:     X_AXIS
//                    Y_AXIS
//                    Z_AXIS
//函数返回:
//函数功能:
//*********************************************************************************************
CurieIMU.getAccelerometerOffset(int axis)

 

16、设置陀螺仪偏移

//*********************************************************************************************
//函数名称:CurieImu.setAccelerometerOffset(int axis, int offset)
//输入参数:axis:     X_AXIS
//                    Y_AXIS
//                    Z_AXIS
//                  offset   偏移
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.setAccelerometerOffset(int axis, int offset)

 

17、得到检测阈值

//*********************************************************************************************
//函数名称:CurieImu.getDetectionThreshold(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:
//                  CURIE_IMU_FREEFALL
//                  CURIE_IMU_SHOCK
//                  CURIE_IMU_MOTION
//                  CURIE_IMU_ZERO_MOTION
//                  CURIE_IMU_TAP
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.getDetectionThreshold(int feature)

 

18、设置检测阈值

//*********************************************************************************************
//函数名称:CurieImu.setDetectionThreshold(int feature, float value)
//输入参数:feature: the requested feature. It can assume one of these values:
//                  CURIE_IMU_FREEFALL
//                  CURIE_IMU_SHOCK
//                  CURIE_IMU_MOTION
//                  CURIE_IMU_ZERO_MOTION
//                  CURIE_IMU_TAP
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.setDetectionThreshold(int feature, float value)
image

 

19、得到检测的持续时间

//*********************************************************************************************
//函数名称:CurieImu.getDetectionDuration(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:                
  • CURIE_IMU_TAP
  • CURIE_IMU_TAP_QUIET
  • CURIE_IMU_DOUBLE_TAP
  • CURIE_IMU_ZERO_MOTION
//函数返回:
//函数功能:检测持续时间
//*********************************************************************************************
CurieIMU.getDetectionDuration(int feature)

 

20、设置检测的持续时间

//*********************************************************************************************
//函数名称:CurieImu.setDetectionDuration(int feature, float value)
//输入参数:feature: the requested feature. It can assume one of these values:
//                  CURIE_IMU_FREEFALL
//                  CURIE_IMU_SHOCK
//                  CURIE_IMU_MOTION
//                  CURIE_IMU_ZERO_MOTION
//                  CURIE_IMU_DOUBLE_TAP
//                  CURIE_IMU_TAP_SHOCK
//                  CURIE_IMU_TAP_QUIET P
//函数返回:
//函数功能:检测持续时间
//*********************************************************************************************
CurieIMU.setDetectionDuration(int feature, float value)

 

21、允许某个特征产生中断

//*********************************************************************************************
//函数名称:CurieImu.interrupts(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:
//                 CURIE_IMU_FREEFALL
//                 CURIE_IMU_SHOCK
//                 CURIE_IMU_MOTION
//                 CURIE_IMU_ZERO_MOTION
//                 CURIE_IMU_STEP
//                 CURIE_IMU_TAP
//                 CURIE_IMU_TAP_SHOCK
//                 CURIE_IMU_TAP_QUIET
//                 CURIE_IMU_DOUBLE_TAP
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.interrupts(int feature)

 

22、关闭某个特征产生中断

//*********************************************************************************************
//函数名称:CurieImu.noInterrupts(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:
//                 CURIE_IMU_FREEFALL
//                 CURIE_IMU_SHOCK
//                 CURIE_IMU_MOTION
//                 CURIE_IMU_ZERO_MOTION
//                 CURIE_IMU_STEP
//                 CURIE_IMU_TAP
//                 CURIE_IMU_TAP_SHOCK
//                 CURIE_IMU_TAP_QUIET
//                 CURIE_IMU_DOUBLE_TAP
//函数返回:
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.noInterrupts(int feature)

 

23、返回某个特征是否开了中断

//*********************************************************************************************
//函数名称:CurieImu.interruptEnabled(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:
//                 CURIE_IMU_FREEFALL
//                 CURIE_IMU_SHOCK
//                 CURIE_IMU_MOTION
//                 CURIE_IMU_ZERO_MOTION
//                 CURIE_IMU_STEP
//                 CURIE_IMU_TAP
//                 CURIE_IMU_TAP_SHOCK
//                 CURIE_IMU_TAP_QUIET
//                 CURIE_IMU_DOUBLE_TAP
//函数返回:TURE   FALSE
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.interruptEnabled(int feature)

 

24、检测是否进入中断状态

//*********************************************************************************************
//函数名称:CurieImu.getInterruptStatus(int feature)
//输入参数:feature: the requested feature. It can assume one of these values:
//                 CURIE_IMU_FREEFALL
//                 CURIE_IMU_SHOCK
//                 CURIE_IMU_MOTION
//                 CURIE_IMU_ZERO_MOTION
//                 CURIE_IMU_STEP
//                 CURIE_IMU_TAP
//                 CURIE_IMU_TAP_SHOCK
//                 CURIE_IMU_TAP_QUIET
//                 CURIE_IMU_DOUBLE_TAP
//函数返回:TURE   FALSE
//函数功能:进行陀螺仪偏移计算
//*********************************************************************************************
CurieIMU.getInterruptStatus(int feature)

 

25、返回步进检测模式的值

//*********************************************************************************************
//函数名称:CurieImu.getStepDetectionMode()
//输入参数:CURIE_IMU_STEP_MODE_NORMAL
//                  CURIE_IMU_STEP_MODE_SENSITIVE
//                  CURIE_IMU_STEP_MODE_ROBUST
//                  CURIE_IMU_STEP_MODE_UNKNOWN
//函数返回:TURE   FALSE
//*********************************************************************************************
CurieIMU.getStepDetectionMode()

 

26、设置步进检测模式的值

//*********************************************************************************************
//函数名称:CurieImu.setStepDetectionMode(int mode)
//输入参数:CURIE_IMU_STEP_MODE_NORMAL
//                  CURIE_IMU_STEP_MODE_SENSITIVE
//                  CURIE_IMU_STEP_MODE_ROBUST
//                  CURIE_IMU_STEP_MODE_UNKNOWN
//函数返回:TURE   FALSE
//*********************************************************************************************
CurieIMU.setStepDetectionMode(in mode)

 

27、读取6轴传感器的数值

//*********************************************************************************************
//函数名称:CurieImu.readMotionSensor(int ax, int ay, int az, int gx, int gy, int gz)
//输入参数:ax: a variable in which the accelerometer\'s value along x will be stored.
//                 ay: a variable in which the accelerometer\'s value along y will be stored.
//                 az: a variable in which the accelerometer\'s value along z will be stored.
//                 gx: a variable in which the gyro\'s value along x will be stored.
//                 gy: a variable in which the gyro\'s value along y will be stored.
//                 gz: a variable in which the gyro\'s value along z will be stored.
//函数返回:
//*********************************************************************************************
CurieIMU.readMotionSensor(int ax, int ay, int az, int gx, int gy, int gz)

 

28、读取加速度的数值

//*********************************************************************************************
//函数名称:CurieImu.readAccelerometer(int ax, int ay, int az)
//输入参数:ax: a variable in which the accelerometer\'s value along x will be stored.
//                 ay: a variable in which the accelerometer\'s value along y will be stored.
//                 az: a variable in which the accelerometer\'s value along z will be stored.
//函数返回:
//*********************************************************************************************
CurieIMU.readAccelerometer(int ax, int ay, int az)

 

29、读取陀螺仪的数值

//*********************************************************************************************
//函数名称:CurieImu.readGyro(int gx, int gy, int gz)
//输入参数:
//                 gx: a variable in which the gyro\'s value along x will be stored.
//                 gy: a variable in which the gyro\'s value along y will be stored.
//                 gz: a variable in which the gyro\'s value along z will be stored.
//函数返回:
//*********************************************************************************************
CurieIMU.readGyro(int gx, int gy, int gz)

 

30、读取温度值

//*********************************************************************************************
//函数名称:CurieImu.readTemperature()
//输入参数:
//函数返回:Celsius=(raw/32767.0)+23  16位的
//*********************************************************************************************
CurieIMU.readTemperature()

 

31、检测晃动

//*********************************************************************************************
//函数名称:CurieIMU.shockDetected(int axis, int direction)
//输入参数:axis: the axis to check for shock detection. It must have one of these values:
//                          X_AXIS
//                          Y_AXIS
//                          Z_AXIS 
//                  direction: the direction to check for shock detection. It must have one of these values:
//                          POSITIVE from zero to positive axis values
//                          NEGATIVE from zero to negative axis values 
//函数返回:Ture False
//*********************************************************************************************
CurieIMU.shockDetected(int axis, int direction)

 

32、检测动作

//*********************************************************************************************
//函数名称:CurieImu.motionDetected(int axis, int direction)
//输入参数:axis: the axis to check for shock detection. It must have one of these values:
//                          X_AXIS
//                          Y_AXIS
//                          Z_AXIS 
//                  direction: the direction to check for shock detection. It must have one of these values:
//                          POSITIVE from zero to positive axis values
//                          NEGATIVE from zero to negative axis values 
//函数返回:Ture False
//*********************************************************************************************
CurieIMU.motionDetected(int axis, int direction)

 

33、其他检测

CurieIMU.tapDetected(int axis, int direction)

CurieIMU.stepsDetected()

 

34、注册中断函数

//*********************************************************************************************
//函数名称:CurieIMU.attachInterrupt(voidFuncPtr callback)
//输入参数:注册中断函数
//函数返回:无
//*********************************************************************************************
CurieIMU.attachInterrupt(voidFuncPtr callback)

 

35、取消注册中断函数

CurieIMU.detachInterrupt()

 

二、

以上是关于Arduino101学习笔记(十三)—— 101六轴传感器的主要内容,如果未能解决你的问题,请参考以下文章

Arduino101学习笔记—— 中断函数

Arduino101学习笔记—— 模拟IO

Arduino101学习笔记—— 高级IO

Arduino101学习笔记—— 函数库

Arduino101学习笔记—— 时间API

Arduino101学习笔记—— 一些注意的语法点