Deteksi Golongan Darah Non Invasive (Masih Tahap Experimental)
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mendeteksi golongan darah secara non invasive tapi masih dalam tahap experimental belum fix, alat ini masih butuh banyak uji coba agar didapat banyak data yang bisa diambil kesimpulannya. untuk lebih jelasnya berikut adalah koding dan skemanya.
1. Skema
2. Program Arduino IDE
#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial (2, 3);
int dataadc1;
int zero=0;
int heatTime = 80;
int heatInterval = 255;
char printDensity = 15;
char printBreakTime = 15;
char my_str1[] = "A+";
char my_str2[] = "A-";
char my_str3[] = "B+";
char my_str4[] = "B-";
char my_str5[] = "AB+";
char my_str6[] = "AB-";
char my_str7[] = "O+";
char my_str8[] = "O-";
int datahasil;
int urutan;
int mark;
int tanda = 0;
int button = 12;
int buttonx;
void setup() {
mySerial.begin(9600);
Serial.begin(9600); // to write to our new printer
pinMode(button,INPUT_PULLUP);
initPrinter();
}
void initPrinter()
{
//Modify the print speed and heat
Serial.write(27);
Serial.write(55);
Serial.write(7); //Default 64 dots = 8*('7'+1)
Serial.write(heatTime); //Default 80 or 800us
Serial.write(heatInterval); //Default 2 or 20us
//Modify the print density and timeout
Serial.write(18);
Serial.write(35);
int printSetting = (printDensity<<4) | printBreakTime;
Serial.write(printSetting); //Combination of printDensity and printBreakTime
}
void loop() {
dataadc1 = analogRead(A0);
if((dataadc1 > 50)&&(dataadc1 < 100)){
lcdCMD("hasil.txt=\"A+\"");
mark = 1;
}
if((dataadc1 > 100)&&(dataadc1 < 200)){
lcdCMD("hasil.txt=\"A-\"");
mark = 2;
}
if((dataadc1 > 200)&&(dataadc1 < 300)){
lcdCMD("hasil.txt=\"B+\"");
mark = 3;
}
if((dataadc1 > 300)&&(dataadc1 < 400)){
lcdCMD("hasil.txt=\"B-\"");
mark = 4;
}
if((dataadc1 > 400)&&(dataadc1 < 500)){
lcdCMD("hasil.txt=\"AB+\"");
mark = 5;
}
if((dataadc1 > 500)&&(dataadc1 < 600)){
lcdCMD("hasil.txt=\"AB-\"");
mark = 6;
}
if((dataadc1 > 600)&&(dataadc1 < 700)){
lcdCMD("hasil.txt=\"O+\"");
mark = 7;
}
if((dataadc1 > 700)&&(dataadc1 < 800)){
lcdCMD("hasil.txt=\"O-\"");
mark = 8;
}
lcdCMD("sensor2.val=" + String(dataadc1));
buttonx = digitalRead(button);
if(buttonx == 0){
printing();
}
}
void lcdCMD(String cmd) {
mySerial.print(cmd);
mySerial.write(0xff);
mySerial.write(0xff);
mySerial.write(0xff);
tanda = 0;
}
void printing(){
delay(1000);
if(mark == 1){
Serial.print("GOL= ");
Serial.println(my_str1);
mark = 0;
}
if(mark == 2){
Serial.print("GOL= ");
Serial.println(my_str2);
mark = 0;
}
if(mark == 3){
Serial.print("GOL= ");
Serial.println(my_str3);
}
if(mark == 4){
Serial.print("GOL= ");
Serial.println(my_str4);
mark = 0;
}
if(mark == 5){
Serial.print("GOL= ");
Serial.println(my_str5);
mark = 0;
}
if(mark == 6){
Serial.print("GOL= ");
Serial.println(my_str6);
mark = 0;
}
if(mark == 7){
Serial.print("GOL= ");
Serial.println(my_str7);
mark = 0;
}
if(mark == 8){
Serial.print("GOL= ");
Serial.println(my_str8);
mark = 0;
}
Serial.write(10);
Serial.write(10);
}
3. VIDEO HASILNYA