Как читать данные только когда значение выше или ниже определенного порога

Это может звучать немного расплывчато, но я постараюсь уточнить. В основном я использую устройство 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);}
}

0

Решение

Просто есть условное выражение:

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) — пороговые ограничения, которые вы хотите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]