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