প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | প্রডাক্ট লিংক |
Arduino UNO R3 | 1 | এখানে ক্লিক করুন |
Grove-ear clip heart rate sensor | 1 | এখানে ক্লিক করুন |
Breadboard | 1 | এখানে ক্লিক করুন |
Male to male jumpers | 6 | এখানে ক্লিক করুন |
OLED Display Blue I2C 128×64 0.96″ | 1 | এখানে ক্লিক করুন |
9V battery | 1 | এখানে ক্লিক করুন |
9V Battery Connector with Power Jack | 1 | এখানে ক্লিক করুন |
সার্কিটঃ
আরডুইনো এবং ওলেডের মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Arduino UNO R3 | OLED Display Blue I2C 128×64 0.96″ |
3.3 | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
হার্ট রেট সেন্সর এবং আরডুইনোর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।
Arduino UNO R3 | Grove-ear clip heart rate sensor |
5V | RED |
GND | GND |
2 | Yellow |
ব্যাটারি দিয়ে সার্কিটে পাওয়ার দিন। পুরো সার্কিটটি দেখতে ছিল নিচের ছবিটির মতো।
প্রোগ্রামঃ
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display;
boolean led_state = LOW;//state of LED, each time an external interrupt
//will change the state of LED
unsigned char counter;
unsigned long temp[21];
unsigned long sub;
bool data_effect=true;
unsigned int heart_rate;//the measurement result of heart rate
int resetpin=12;
const int max_heartpluse_duty = 2000;//you can change it follow your system's request.
//2000 meams 2 seconds. System return error
//if the duty overtrip 2 second.
void setup()
{
pinMode(resetpin, OUTPUT);
Serial.begin(9600);
Serial.println("Please ready your chest belt.");
delay(5000);
arrayInit();
Serial.println("Heart rate test begin.");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// display.drawBitmap(5,0,myBitmap,64,32 , WHITE);
//
//
display.display();
//display.clearDisplay();
// Clear the buffer.
attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2
}
void loop()
{
// digitalWrite(LED, led_state);//Update the state of the indicator
display.display();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(35,15);
display.print(heart_rate);
display.setTextSize(1);
display.setTextColor(WHITE);
display.print(" BPM");
display.display();
display.clearDisplay();
}
/*Function: calculate the heart rate*/
void sum()
{
if(data_effect)
{
heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time
Serial.print("Heart_rate_is:\t");
Serial.println(heart_rate);
}
data_effect=1;//sign bit
}
/*Function: Interrupt service routine.Get the sigal from the external interrupt*/
void interrupt()
{
temp[counter]=millis();
//Serial.println(counter,DEC);
// Serial.println(temp[counter]);
switch(counter)
{
case 0:
sub=temp[counter]-temp[20];
// Serial.println(sub);
//Serial.println("Processing ");
break;
default:
sub=temp[counter]-temp[counter-1];
//Serial.println(sub);
//Serial.println("Processing ");
break;
}
if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty
{
data_effect=0;//sign bit
counter=0;
Serial.println("Heart rate measure error,test will restart!" );
//display.display();
arrayInit();
}
if (counter==20&&data_effect)
{
counter=0;
sum();
}
else if(counter!=20&&data_effect)
counter++;
else
{
counter=0;
data_effect=1;
}
}
/*Function: Initialization for the array(temp)*/
void arrayInit()
{
for(unsigned char i=0;i < 20;i ++)
{
temp[i]=0;
}
temp[20]=millis();
}
ইয়ার ক্লিপটি আপনার কানের লতিতে পরুন।
কিছুক্ষন পর ওলেড ডিসপ্লেতে আপনার হার্ট রেট দেখা যাবে।
]]>