我有一个 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/