2016-04-25 89 views
0

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




    } 
} 
+2

使用if语句来检查变量是否在你想要的范围内? – NathanOliver

回答

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)是你想要的门槛限制。

+0

抱歉刚刚意识到它实际上有多简单,谢谢。 – user6020197

相关问题