如何仅在值高于或低于特定阈值时才读取数据

时间:2016-04-25 19:01:53

标签: c++ iot xbee mbed

这听起来有点模糊,但我会尽力澄清。基本上我使用的是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);




    }
}

1 个答案:

答案 0 :(得分:1)

只需要一个条件表达式:

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)是您想要的阈值约束。