Измерение скорости снижения пульса после нагрузки

gym2.nsk.ru
Offline
Зарегистрирован: 10.03.2020

Добрый день!
Задача состоит в измерении скорости снижения пульса после нагрузки.
Есть вот такой код, он выводит показания с датчиков.
теперь возник вопрос как обработать эти показания и посчитать скорость изменения снижения пульса. Конечная задача состоит в сравнении скорости снижения пульса с двух датчиков от двух человек. у кого быстрее.

// Чтение данных, поступающих с модуля сопряжения от одного беспроводного 
// модуля и отображение этих данных средствами среды Arduino IDE. 

// Последовательность действий

// 1. Вставьте USB-to-UART переходник в одно из любых четырех USB гнёзд микрокомпьютера Raspberry
// 2. Соедините пины USB-to-UART переходника с пинами на плате Ардуино: 
//    Arduino pin D10 соединить с TxD на USB-to-UART переходнике (подключен к Raspberry Pi) 
//    Arduino pin D11 соединить с RxD на USB-to-UART переходнике (подключен к Raspberry Pi) 
//    Arduino pin Gnd соединить с Gnd на USB-to-UART переходнике (подключен к Raspberry Pi) 
// 3. Загрузите скетч в Ардуино
// 4. В меню Инструменты откройте Плоттер по последовательному соединению и укажите скорость 115200
// 5. Включите беспроводной модуль и разместите электроды (датчики) в соответствии с инструкцией
//    к этому беспроводному модулю.
// 6. Включите питание Raspberry 
//    После загрузки Raspberry (15-20 секунд) на экране начнет отображаться сигнал.
//    Если сигнала нет, то выключите питание Raspberry и включите снова, а на Ардуино нажмите кнопку Reset

// Для работы с Raspberry включайте этот код в начало своего скетча
// Начало блока кода 
#include <SoftwareSerial.h>

// используется для обмена данными с Raspberry
SoftwareSerial piSerial(10, 11); // RX, TX

// инициализация работы с Raspberry
// Укажите номера используемых беспроводных модулей и их количество
void uniorBegin(const int channels[], int number_of_channels)
{
  piSerial.begin(57600);
  piSerial.write(0xff);
  while (true) 
  {
    String s = piSerial.readString();
    
    if (s == "OK\n")
    {
      //Serial.println("Unior is ready");
      String s;
      for (int n = 0; n < number_of_channels; n++)
      {
        if (n != 0) s += ";";
        s += channels[n];
      }
      piSerial.println(s); // send channels mask
      break;
    }
  } 
}

// чтение данных по запросу для указанного беспроводного модуля (по индексу)
// возвращает false если данных нет и true если данные есть.
// Если данные есть, то значение помещается в переменную value
bool uniorRead(uint8_t channel_no, float& value)
{
  while (piSerial.available()) piSerial.read();
  piSerial.write(channel_no);
  int readCnt = piSerial.readBytes((byte*)&value, sizeof(float));
  return (readCnt == sizeof(float)) && (value == value);
}

// конец блока 
///////////////////////////////////////////////////////////////////

// Для удобства обозначим индекс беспроводного модуля константой
const int cEEG1 = 1;
const int cEEG2 = 2;

void setup() 
{
  Serial.begin(115200);

  // Инициализируем модуль сопряжения на базе Raspberry (всего две строчки) 
 const int channels[] = {cEEG1}; // или, например для двух каналов:   //
  //const int channels[] = {cEEG1, cEEG2};
  uniorBegin(channels, sizeof(channels)/sizeof(channels[0]));
}

void loop() // run over and over
{ 
  // Читаем данные и выводим их для отображения
  float v, v1;
  while (uniorRead(cEEG1, v))//&&uniorRead(cEEG2, v1))
  {
    //Serial.println(v);
     Serial.println(v1);
  } 
 
}

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А что, разве вчера такой темы не было? Где-то я её уже видел.

gym2.nsk.ru
Offline
Зарегистрирован: 10.03.2020

Я не видел, если дадите ссылку на обсуждение, буду благодарен.

 

rkit
Offline
Зарегистрирован: 23.11.2016

Эмм, школьная математика?

V[n] = (X[n] - X[n-1]) * f