Anda di halaman 1dari 9

Program Arduino Transmitter :

Selektor Sensitifitas Hardware

void loop() {
//===========Selector Sensitifity============
int Sens=digitalRead(Cal);
if (Sens==0){
ref=0;
data=data+1;
delay(100);
if(data>=3){
data=0;
}
delay(10);

Menerima input dari push button, ketika logika 0 maka data sensitifitas dirubah menjadi 0.5 ,1.0
atau 2.0.

Selektor Sensitifitas Delphi

//===========Selector Sensitifity=============
if(Serial.available()){
char perintah = Serial.read();
Serial.println(perintah);
if(perintah=='a'){
ref=0;
data=0;

}
if(perintah=='b'){
ref=0;
data=1;
}
if(perintah=='c'){
ref=0;
data=2;
}
}

Menerima input serial dari Delphi ditampung dalam char perintah dan merubah nilai variabel
data sensitifitas.

Pengiriman Data Sensitifitas

//==============Sensitifity 0.5===============
if(data==0){
float sinyal = analogRead(Detak);
float tegangan = (sinyal/1023*5)*160-70;
if(ref<=tegangan){
ref=tegangan;
}
else{
ref=ref;
//=========Ketika Terdeteksi Pulsa Naik===========
if ((tegangan > hold)&& (syarat==0)) {
syarat=1;

}
//=========Ketika Terdeteksi Pulsa Turun==========
if ((tegangan < hold) && (syarat==1)) {
digitalWrite(LED, HIGH);
delay(5);
digitalWrite(LED, LOW);
delay(5);
syarat=0;
}
if ((tegangan<=hold)&&(mark==0)){
count=count+1;
if(count==500)
{
count=0;
mark=1;
}
}
if(tegangan>hold){
count=0;
}
if ((tegangan<=hold)&&(mark==1)){
ref=0;
mark=0;
}
}
Serial.print("a");
Serial.print(tegangan,0);
Serial.print("b");
Serial.print("c");
Serial.print(hold,0);
Serial.print("d");
Serial.print("e");
Serial.print(50);
Serial.print("f");
}

Pembacaan data melalui analog read A2 dikonversi dalam bentuk ratusan dan dikirm melalui
Serial dengan data string (a+data+b). Data referensi didapatkan melalui autodeteksi sinyal input
dan dikirim dalam variabel hold. Savety 5 secon bekerja ketika sinyal tidak memotong referensi
selama 5 detik dan referensi direset menjadi 0 dan memulai auto deteksi ulang.

Program Arduino LED Indikator :

Inisialisasi Port

void setup() {
Serial.begin(115200);
pinMode(10, OUTPUT);//tachicardia
pinMode(6, OUTPUT);//normal
pinMode(2, OUTPUT);//bradycardia
digitalWrite(10, LOW);
digitalWrite(6, LOW);
digitalWrite(2, LOW);
}
void loop() {
if(Serial.available()){
char perintah = Serial.read();
Serial.println(perintah);
if (perintah=='n'){
digitalWrite(10, HIGH);
digitalWrite(6, LOW);
digitalWrite(2, LOW);
}
else if (perintah=='b'){
digitalWrite(10, LOW);
digitalWrite(6, HIGH);
digitalWrite(2, LOW);
}
else if (perintah=='t'){
digitalWrite(10, LOW);
digitalWrite(6, LOW);
digitalWrite(2, HIGH);
}
else{
digitalWrite(10, LOW);
digitalWrite(6, LOW);
digitalWrite(2, LOW);
}
}
}
Pembacaan Serial melalui port USB, data masuk disimpan dalam char perintah. Ketika data
terkirim bernilai string “n” maka LED normal menyala, ketika string yang diterima “t” maka LED
tachycardia menyala, ketika string yang diterima “b” maka LED bradycardia menyala. Ketika data
string yang diterima selain string diatas maka semua led mati.

Program Tampilan Delphi :

Listing Program Connect

//===================CONNECT===================
procedure TForm1.Connect1Click(Sender: TObject);
begin
ComPort1.Port:='COM3';
ComPort1.Open;
ComPort2.Port:='COM8';
ComPort2.Open;
timer1.Enabled:=true;
timer2.Enabled:=true;
Label13.Caption:='Connected';
Label13.Font.Color:=cllime;
end;

Ketika push button connect pada Delphi ditekan maka akan membuka komunikasi serial pada
COM3 dan COM8. Mengaktifkan Timer1 untuk perhitungan BPM dan Timer2 sebagai refresh
waktu tampil BPM.
Listing Program Tampilan Sinyal ECG :

//=================SINYAL EKG SERIES 1=================


procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);
Var
E,dataRAW:Integer;
b : string;
begin
Val(Str,dataRAW,E);
if E <> 0 then Exit;
tegangan:=(dataRAW*0.01);
Chart1.Series[0].AddXY(xval,tegangan);
Label5.Caption:=floattostr(tegangan);
Memo1.Lines.Add(Label5.Caption);
if Chart1.Series[0].MaxXValue > Chart1.BottomAxis.Maximum then begin
//Memo1.Lines.SaveToFile('Data.txt');
Memo1.Clear;
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
xval:=0;
end;

xval:=xval+range;

Data serial diterima melalui com data packet Delphi. Ditampung dalam variabel tegangan
kemudian diplot pada chart1 series 1. Tegangan ditampilkan pada label 5 dan ditulis pada Memo.
Pengaturan nilai xval disesuaikan sesuai dengan sensitifitas dan lebar grafik.
Listing Program Perhitungan Detak :

//=============OLAH DATA HEART BEAT===================


//-----------deteksi pulsa naik di atas threshold------------
if (tegangan>strtofloat(Label3.Caption)) And (state=0) then
begin
state:=1;
end;
//-----------deteksi pulsa turn di bawah threshold------------
if (tegangan<strtofloat(Label3.Caption)) And (state=1) then
begin
state:=0;
detak:=detak+1;
if image1.Visible then image1.Visible:=False
else image1.Visible:=True;
end;

end;

Kondisi awal variabel state bernilai 0. Ketika kondisi sinyal lebih tinggi dari referensi maka varibel
state berubah nilai menjadi 1, ketika sinyal lebih rendah dari referensi dan state bernilai 1 maka
detak bertambah 1 dan varibel state kembali bernilai 0.
Program Tampilan Referensi :

//==================REFERENSI SERIES 2=====================


procedure TForm1.ComDataPacket2Packet(Sender: TObject; const Str: String);
Var
referensi:double;
E,dataRAW:Integer;
begin
Val(Str,dataRAW,E);
if E <> 0 then Exit;
referensi:=(dataRAW*0.01)-1;
Chart1.Series[1].Clear;
Chart1.Series[1].AddXY(xval1,referensi);
Chart1.Series[1].AddXY(Chart1.BottomAxis.Maximum,referensi);
Label3.Caption:=floattostr(referensi);
xval1:=0;
xval1:=xval1+0.01;
end;

Anda mungkin juga menyukai