2016-04-25 2 views
0

Cela peut sembler un peu vague mais je ferai de mon mieux pour clarifier. Fondamentalement, j'utilise un périphérique mbed (FRDM k64f) qui envoie des données à un autre appareil via XBee. Ma question est,Comment lire les données uniquement lorsqu'une valeur est supérieure ou inférieure à un certain seuil

Comment puis-je l'obtenir pour envoyer des données seulement quand float mX, mY ou mZ (voir code ci-dessous) sont au-dessus ou en dessous d'un certain seuil, donc le reste du temps il est endormi. Est-ce possible?

Donc, actuellement, il envoie des données toutes les 5 secondes, mais je voudrais changer cela.

Voici mon code actuel

#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

Utilisez une instruction if pour vérifier si les variables sont dans la plage souhaitée? – NathanOliver

Répondre

1

tout simplement avoir une expression conditionnelle:

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 (et de même pour Y et Z) sont les contraintes de seuil que vous voulez.

+0

désolé Je me suis rendu compte à quel point c'était simple, merci. – user6020197