با سلام.
یک راه حل این است که یک تایمر تعریف کنید و در مدت زمان مشخص شده، از ورودی نمونه برداری کنید. تعداد نمونه های به دست آمده را بر زمان تقسیم کنید و سمپلینگ ریت به دست می آید.
راه حل دیگر هم این است که خودتان سمپلینگ ریت را تعریف کنید. برای این کار باید از وقفه تایمر (timer iinterrupt) استفاده کنید. کد نمونه برداری آنالوگ به دیجیتال را در تابع وقفه بنویسید. با این کار، فرکانس نمونه برداری شما، برابر فرکانس تعریف شده برای تایمر و وقفه آن خواهد بود.
اما برای به دست آوردن تعداد ضربان قلب در دقیقه، می توانید به مدت 2 الی 5 ثانیه از نمونه گیری های خود میانگین و واریانس بگیرید. از میانگین مقادیر برای تعیین حد آستانه (Threshold) برای تشخیص ضربان قلب استفاده کنید. از واریانس نیز برای تشخیص اینکه آیا نمونه برداری شما موثر و مفید است به کار بگیرید.
ابتدا واریانس نمونه های خود را برای حالتی که جای انگشت شما ثابت باشد و نوسان شدیدی در نمونه ها نداشته باشید، محاسبه کرده و از آن به عنوان مقدار حد آستانه واریانس داده ها استفاده کنید.
در صورتی که واریان نمونه برداری جدید، از حد آستانه محاسبه شده خیلی بیشتر بود (مثلا بیشتر از 3 برابر)، از داده های ورودی خود صرف نظر کرده و منتظر داده های جدید شوید. در غیر این صورت، ابتدا از نمونه های خود میانگین گرفته، سپس تک تک نمونه های خود را با آن مقایسه کنید و داده هایی که تا حدی بزرگتر از میانگین بودند را به عنوان ضربان قلب تشخیص بدهید.
البته در کتابخانه ماژول سنجش ضربان قلب که در سایت موجود داریم، نمونه کد آماده برای سنجش ضربان قلب وجود دارد.