c - 从加速度计检测运动

标签 c accelerometer

我有一个 Micro:Bit .它有一个加速度计,所以我可以测量 x、y、z 轴上的加速度。

我们的想法是将它戴在 ARM 上,并在检测到 ARM 上有 Action 时通过蓝牙发送信号。

所以,我想检查加速度并在它超过某种阈值时生成一个事件,但我不知道该怎么做。

这会是这样的:

void onAwake (int x, int y, int z){
    snprintf(buffer, sizeof(buffer), "%i/%i/%i",x,y,z);
    uart->send(ManagedString(buffer));
}

int main() {
    while (1) {
      x = uBit.accelerometer.getX();
      y = uBit.accelerometer.getY();
      z = uBit.accelerometer.getZ();

      // Check if device is getting moved

      if (accel > 1) onAwake(x,y,z); // Some kind of threshold

      sleep(200);
    }
}

最佳答案

如果加速度的幅度没有改变,设备可能仍然在移动,因此您需要存储所有 3 个值并进行比较。

像这样

void onAwake (int x, int y, int z){
    snprintf(buffer, sizeof(buffer), "%i/%i/%i", x, y, z);
    uart->send(ManagedString(buffer));
}

int main() {

    int x;
    int y;
    int z;

    while (1) {
       int nx = uBit.accelerometer.getX();
       int ny = uBit.accelerometer.getY();
       int nz = uBit.accelerometer.getZ();

       // Check if device is getting moved

       if ((x != nx) || (y != ny) || (z != nz))
           onAwake(x, y, z); // Some kind of threshold
       sleep(200);
    }
}

关于c - 从加速度计检测运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057269/

相关文章:

c - C编译器如何解释以下代码序列

c - C 中的可变维数组

java - 如何通过加速度传感器移动我的布局?

ios - 加速度计数据持续波动

java - 如何在android中使用加速度计跟踪路径?

c - (C) realloc 数组按项修改数据_pointed_

关于 GUID 分区表规范的困惑

c - 如何修复无效转换错误? (字符到常量字符*)

java - 如何使用加速度计检测1Gs以上的振动?

ios - 在 iOS 的后台持续更新加速度计