This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: Code Composer Studio
So here I have code that gets 10 pulses from the heart beat sensor and averages them out. Can someone give me some sample code/ help me figure out a way to calculate the heart beats per minute(You can assume the default value of the pulse sensor is about 470 when no one is touching it). If you can write me some very simple heart beat per minute code, it will help me tremendously. Thanks!
#include "msp430g2253.h"
// Variables
int adc[50] = {0}; //Sets up an array of 10 integers and zero's the values
int avg_adc = 0;
// Function prototypes
void adc_Setup();
void adc_Sam10();
void main()
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
adc_Setup(); // Fucntion call for adc_setup
while(1)
{
long adctot = 0;
adc_Sam10(); // Function call for adc_samp
// Add all the sampled data and divide by 10 to find average
int i = 0;
for(i = 0; i <= 49; i++){
adctot = adctot + adc[i];
}
avg_adc = adctot/50;
}
}
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
// ADC set-up function
void adc_Setup()
{
ADC10CTL1 = CONSEQ_2 + INCH_0; // Repeat single channel, A0
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; // Sample & Hold Time + ADC10 ON + Interrupt Enable
ADC10DTC1 = 0x32; // 1000 conversions
ADC10AE0 |= 0x01; // P1.0 ADC option select
}
// ADC sample conversion function
void adc_Sam10()
{
ADC10CTL0 &= ~ENC; // Disable Conversion
while (ADC10CTL1 & BUSY); // Wait if ADC10 busy
ADC10SA = (int)adc; // Transfers data to next array (DTC auto increments address)
ADC10CTL0 |= ENC + ADC10SC; // Enable Conversion and conversion start
__bis_SR_register(CPUOFF + GIE);// Low Power Mode 0, ADC10_ISR
}
The pulse sensor I am using is:
The expected pulses should have an analog value in the 700s. When nobody is touching the pulse sensor, the analog value is around 500.
I'm trying to measure the heart beats per minute, where I'm getting pulses from the sensor but only the peaks represent heart beats, so I need to find the time between peaks and not just pulses. Hope that helps. Thanks
**Attention** This is a public forum