【Wio Terminal】IMU的使用

本文详细介绍了如何在WioTerminal上安装并使用LIS3DHTR3轴数字加速度计,包括初始化、设置输出速率和量程、读取加速度值,以及实现敲击动作检测的示例。通过ArduinoIDE进行操作,适合于运动控制和物联网应用。
摘要由CSDN通过智能技术生成

一、加速器概述

本节介绍如何在Wio Terminal上安装并使用内置3轴数字加速度计(LIS3DHTR)库。这将允许你访问Wio终端的加速度计信息,并将其用于运动控制等。

1、为 Wio Terminal 安装 3-Axis Digital Accelerometer(LIS3DHTR)库

1、访问Seeed_Arduino_LIS3DHTR仓库,并将整个仓库下载到您的本地驱动器上。
2、现在,3轴数字加速度计库可以安装到Arduino IDE中。请打开Arduino IDE,点击“项目”->“导入库”->“添加.ZIP库”,然后选择您刚刚下载的Seeed_Arduino_LIS3DHTR文件。

二、开始使用加速器

在这里插入图片描述

1、3轴数字加速度计初始化

在Wio Terminal上初始化加速计:

  • 设置输出数据速率:lis.setOutputDataRate(), 1Hz 到 5kHz 范围.
  • 设置量程: lis.FullScaleRange(), 2g 到 16g 范围.
#include"LIS3DHTR.h"
LIS3DHTR<TwoWire> lis;

void setup() {
    ...
    lis.begin(Wire1); 
    lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); // 设置输出数据速率为 25Hz,可设置高达 5kHz。
    lis.setFullScaleRange(LIS3DHTR_RANGE_2G); // 设置量程为 2g,可选范围为 2g、4g、8g、16g。
    ...
}

2、读取加速度计值

要读取 Wio Terminal 上每个轴的加速度计值,请遵循以下步骤:

void loop() {
    float x_values, y_values, z_values;
    x_values = lis.getAcceleratationX();
    y_values = lis.getAcceleratationY();
    z_values = lis.getAcceleratationZ();
    delay(50);  // 延迟以避免读取大量数据
    ...
}
注意:强烈建议添加延迟,以避免一次性读取大量数据。

3、示例

此示例将在串行监视器上打印加速度计的所有三个轴的值。

#include"LIS3DHTR.h"
LIS3DHTR<TwoWire> lis;

void setup() {
  Serial.begin(115200);
  lis.begin(Wire1);

  if (!lis) {
    Serial.println("ERROR");
    while(1);
  }
  lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); //Data output rate
  lis.setFullScaleRange(LIS3DHTR_RANGE_2G); //Scale range set to 2g
}

void loop() {
  float x_values, y_values, z_values;
  x_values = lis.getAccelerationX();
  y_values = lis.getAccelerationY();
  z_values = lis.getAccelerationZ();
  
  Serial.print("X: "); Serial.print(x_values);
  Serial.print(" Y: "); Serial.print(y_values);
  Serial.print(" Z: "); Serial.print(z_values);
  Serial.println();
  delay(50);
}

三、Wio Terminal 感应敲击动作Demo

本节演示了如何使用 Wio Terminal 内置的加速度计来感应单击或双击的敲击动作!
在这里插入图片描述

1、3轴数字加速度计初始化

初始化参考 二、1

2、敲击灵敏度配置

对于敲击的灵敏度,请根据IMU的量程范围调整阈值:

量程2g4g8g16g
阈值40-8020-4010-205-10

3、单击或双击

要使用点击功能,只需按照以下方式调用它,其中第一个参数用于确定感应单击还是双击(1 或 2),第二个参数是阈值。

void setup() {
    ...
    lis.click(1,THRESHOLD);
    // 当检测到敲击时触发的中断信号!
    attachInterrupt(digitalPinToInterrupt(GYROSCOPE_INT1), count, RISING);
}

注意:GYROSCOPE_INT1 是加速度计的中断引脚 1。

4、完整代码

#include"LIS3DHTR.h"
LIS3DHTR<TwoWire> lis;

// 调整此阈值以改变点击的灵敏度
#define THRESHOLD 40
uint8_t cnt=0;

void count() {
    cnt++;
    Serial.print("Tap Count: ");
    Serial.println(cnt);
}

void setup() {
    Serial.begin(115200);
    lis.begin(Wire1);

    if (!lis) {
        Serial.println("ERROR");
        while(1);
    }
    lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); //Data output rate
    lis.setFullScaleRange(LIS3DHTR_RANGE_2G); //Scale range set to 2g

    // 1 单击, 2 双击
    // 阈值越小,灵敏度越高
    lis.click(1, THRESHOLD);
    // 当检测到敲击时触发中断信号
    attachInterrupt(digitalPinToInterrupt(GYROSCOPE_INT1), count, RISING);
}

void loop() {
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值