У меня Adafruit Bluefruit NRF52, подключенный к 9-осевому датчику ориентации Adafruit BNO055, который собирает 3 оси абсолютной ориентации плюс 3 оси ускорения (всего 6 поплавков) и отправляет сигнал через Bluetooth через bleuart.Мне нужно, чтобы bleuart обновлял каждые 7,5 миллисекунд новой строкой значений, но когда я запускаю его, он не печатает более 20 строк новых строк значений каждую секунду.По сути, мне нужно, чтобы значения обновлялись как можно быстрее, так как я измеряю очень высокую скорость, движение с высокой точностью.
В начале каждой строки у меня также есть трехзначное число, которое представляет состояние калибровки каждого датчика.на ИДУ.Каждая напечатанная строка выглядит примерно так:
303 68.69 4.19 -2.19 -0.12 0.14 -0.40
В настоящее время я транслирую на свой iphone последнюю версию iOs, которая теоретически может обрабатывать интервалы 7,5 мс.
Я читал, чтоРешение может заключаться в том, чтобы буферизовать значения и переслать в большем фрагменте с большими интервалами соединения, но я не уверен, как это сделать.
Мой соответствующий код Arduino ниже:
Bluefruit.setConnIntervalMS(7.5, 20);
void loop()
{
imu::Vector<3> accel =
bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);
/* Get a new sensor event */
sensors_event_t event;
bno.getEvent(&event);
/* Display the floating point data */
bleuart.print(event.orientation.x);
bleuart.print("\t");
bleuart.print(event.orientation.y);
bleuart.print("\t");
bleuart.print(event.orientation.z);
bleuart.print("\t");
/* Display the floating point data for Linear Acceleration */
bleuart.print(accel.x());
bleuart.print("\t");
bleuart.print(accel.y());
bleuart.print("\t");
bleuart.print(accel.z());
bleuart.print("\n");
}