HRM with LPC1768, calculating the BPM and communicating with bluetooth

Dependencies:   mbed

HRM.cpp

Committer:
2675375x
Date:
2022-07-31
Revision:
1:44f270926c4a
Parent:
0:312e7105da24

File content as of revision 1:44f270926c4a:

#include "mbed.h"
#include "HRM.h"


float data =3.3; 
float previous_data =0;
int count1= 0;

int main(void){

    bt.baud(9600);
    int count1 = 0;
    float time_perhb;
     bt.printf("Analyse signal\n\r");
    
    float samples[2048];
    float adc_value;
    float *p =samples;
    for(int i = 0; i<2048;i++){
        adc_value = sensor.read()* 3.3;
        *(p+i) = adc_value ;
        wait_ms(1);       
        }
    
    float max = Get_Array_Max(samples,2048);
    float min = Get_Array_Min(samples,2048);
    float maxrate = Get_MaxRate(samples,2048); 
    float threshold = (max - min)*0.7+ min;
    
    int BPM;
    int swi = 1;
    bool firstcircle = true; 
     
    while(1){
    //swi = bt.getc();
    if(swi == 1){
        bt.printf("max = %f\n",max);
        bt.printf("min = %f\n",min);
        bt.printf("maxrate = %f\n",maxrate);
        bt.printf("threshold = %f\n",threshold);
        
        while(swi == 1){
           previous_data = data;    
           data = sensor.read()*3.3; 

        if(data>=threshold && previous_data<threshold){
           if(firstcircle){
               count1 = 0;
               firstcircle = false;
               }
           else{
                    if(count1 >20){
                       
                       if((data - previous_data)/0.005 < maxrate * 0.7 && count1<100 ){
                           bt.printf("Find error point,removed!\n");
                           count1++;
                           wait(0.005);
                           }
                         else{
                           time_perhb = count1 * 0.005;
                           BPM = 60/time_perhb;
                   
                             if(BPM<200&&BPM>30){
                                bt.printf("BPM=%d\n", BPM);  
                          }
                          count1 = 0;
                          wait(0.005);
                   }
           }
                  
    }

  }         
    else{
        count1++;
        wait(0.005);
        }
       }
   }
 }
 }