如何仅在值高于或低于特定阈值时读取数据
How to read data only when a value is above or under a certain threshold
这听起来可能有点含糊,但我会尽力澄清。基本上我使用的是 mbed (FRDM k64f) 设备,它通过 XBee 将数据发送到另一个设备。我的问题是,
如何让它仅在 float mX、mY 或 mZ(参见下面的代码)高于或低于某个阈值时才发送数据,因此其余时间它处于休眠状态。
这可能吗?
所以目前它每 5 秒发送一次数据,但我想更改它。
这是我当前的代码
#include "mbed.h"
#include "C12832.h" //for LCD
#include "FXOS8700Q.h"// for magnetometer
Ticker timer;
DigitalOut gpo(D0);
DigitalOut led(LED_RED);
Serial xbee(D1, D0);
C12832 shld_lcd (D11, D13, D12, D7, D10);
FXOS8700Q_mag mSensor(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1);
MotionSensorDataUnits mData;
//int tick = 0;
void setup() {
xbee.baud(9600);
}
/*
void attime() {
tick++;
}
*/
int main()
{
//timer.attach(&attime, 1);
mSensor.enable();
setup();
while (1) {
wait(5);
mSensor.getAxis(mData);
float mX = mData.x;
float mY = mData.y;
float mZ = mData.z;
xbee.printf("%.2f,%.2f,%.2f \r\n",mX,mY,mZ);
}
}
只要有一个条件表达式:
while(1) {
wait(5);
msensor.getAxis(mData);
float mX = mData.x;
float mY = mData.y;
float mZ = mData.z;
if (mX >= mX_threshold && mY >= mY_threshold && mZ >= mZ_threshold)
xbee.printf("%.2f,%.2f,%.2f \r\n",mX,mY,mZ);
}
其中 mX_threshold
(Y 和 Z 也类似)是您想要的阈值约束。
这听起来可能有点含糊,但我会尽力澄清。基本上我使用的是 mbed (FRDM k64f) 设备,它通过 XBee 将数据发送到另一个设备。我的问题是,
如何让它仅在 float mX、mY 或 mZ(参见下面的代码)高于或低于某个阈值时才发送数据,因此其余时间它处于休眠状态。 这可能吗?
所以目前它每 5 秒发送一次数据,但我想更改它。
这是我当前的代码
#include "mbed.h"
#include "C12832.h" //for LCD
#include "FXOS8700Q.h"// for magnetometer
Ticker timer;
DigitalOut gpo(D0);
DigitalOut led(LED_RED);
Serial xbee(D1, D0);
C12832 shld_lcd (D11, D13, D12, D7, D10);
FXOS8700Q_mag mSensor(PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1);
MotionSensorDataUnits mData;
//int tick = 0;
void setup() {
xbee.baud(9600);
}
/*
void attime() {
tick++;
}
*/
int main()
{
//timer.attach(&attime, 1);
mSensor.enable();
setup();
while (1) {
wait(5);
mSensor.getAxis(mData);
float mX = mData.x;
float mY = mData.y;
float mZ = mData.z;
xbee.printf("%.2f,%.2f,%.2f \r\n",mX,mY,mZ);
}
}
只要有一个条件表达式:
while(1) {
wait(5);
msensor.getAxis(mData);
float mX = mData.x;
float mY = mData.y;
float mZ = mData.z;
if (mX >= mX_threshold && mY >= mY_threshold && mZ >= mZ_threshold)
xbee.printf("%.2f,%.2f,%.2f \r\n",mX,mY,mZ);
}
其中 mX_threshold
(Y 和 Z 也类似)是您想要的阈值约束。