Introduction
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
const int PulseWire = 0;
int tempPin = 1;
int ECGPin = 2;
String incomingByte;
int value;
int myBPM =0;
int finalBPM ;
float volts=0.0;
float cel =0;
String stringTemp;
String stringBPM;
bool is_data_send=false;
bool ISBP=false;
bool ISECG=false;
bool ISHR=false;
bool IStemp=false;
const int LED13 = 13;
int Threshold = 550;
String data="";
PulseSensorPlayground pulseSensor;
void setup() {
Serial.begin(38400);
Serial.println("Enter AT commands:");
mySerial.begin(38400);
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13);
pulseSensor.setThreshold(Threshold);
if (pulseSensor.begin()) {
Serial.println("We created a pulseSensor Object !");
}
}
void loop() {
if (mySerial.available()) {
incomingByte = mySerial.read();
Serial.println(incomingByte);
if(incomingByte=="49")
{ISECG=false;ISBP=false;ISHR=false;IStemp=true;is_data_send=true;}
else if(incomingByte=="50")
{ISECG=false;ISBP=false;ISHR=true;IStemp=false;is_data_send=true;}
else if(incomingByte=="51")
{ISECG=false;ISBP=false;ISHR=true;IStemp=true;is_data_send=true;}
else if(incomingByte=="52")
{ISECG=false;ISBP=true;ISHR=false;IStemp=false;is_data_send=true;}
else if(incomingByte=="53")
{ISECG=false;ISBP=true;ISHR=false;IStemp=true;is_data_send=true;}
else if(incomingByte=="54")
{ISECG=false;ISBP=true;ISHR=true;IStemp=false;is_data_send=true;}
else if(incomingByte=="55")
{ISECG=false;ISBP=true;ISHR=true;IStemp=true;is_data_send=true;}
else if(incomingByte=="56")
{ISECG=true;ISBP=false;ISHR=false;IStemp=false;is_data_send=true;}
else if(incomingByte=="57")
{ISECG=true;ISBP=false;ISHR=false;IStemp=true;is_data_send=true;}
else if(incomingByte=="65")
{ISECG=true;ISBP=false;ISHR=true;IStemp=false;is_data_send=true;}
else if(incomingByte=="66")
{ISECG=true;ISBP=false;ISHR=true;IStemp=true;is_data_send=true;}
else if(incomingByte=="67")
{ISECG=true;ISBP=true;ISHR=false;IStemp=false;is_data_send=true;}
else if(incomingByte=="68")
{ISECG=true;ISBP=true;ISHR=false;IStemp=true;is_data_send=true;}
else if(incomingByte=="69")
{ISECG=true;ISBP=true;ISHR=true;IStemp=false;is_data_send=true;}
else if(incomingByte=="70")
{ISECG=true;ISBP=true;ISHR=true;IStemp=true;is_data_send=true;}
}
//Getting Values from Sensors
if(is_data_send)
{
int counter=0;
if(IStemp||ISHR){
while(counter<10){
if(IStemp){
value=analogRead(tempPin);
volts=(value/1024.0)*5.0; //conversion to volts
cel = cel+(volts*100.0);
}
if(ISHR){
if (pulseSensor.sawStartOfBeat()) {
myBPM = myBPM+pulseSensor.getBeatsPerMinute();
}
}
counter=counter+1;
}}
if(ISBP){
}
int counter2=0;
if(ISECG){
while(counter2<500){
if((digitalRead(2)==1)||(digitalRead(3)==1)){}
else{
String abc=String(analogRead(ECGPin));
Serial.println(abc);
data+=abc+"|";
}
counter2=counter2+1;
}
}
}
//Sending Data
if(is_data_send){
if(ISBP){
}
if(ISHR){
float final_bpm=myBPM/10;
stringBPM = String(final_bpm);
data+=stringBPM+"|";
}
if(IStemp){
float final_temp=cel/10;
stringTemp = String(final_temp);
data+=stringTemp+"|";
}
Serial.print("Data sending");
Serial.print(data);
//Serial.print(stringTemp+"|"+stringBPM);
mySerial.print(data);
mySerial.println();
is_data_send=false;
}
delay(20); // considered best practice in a simple sketch.
}