Blood typing is a method to tell what type of blood you have. Sanguinoscope helps you find the combination of blood groups. Blood typing is done so you can safely donate your blood or receive a blood transfusion. It is also done to see if you have a substance called Rh factor on the surface of your red blood cells. Your blood type is based on whether or not certain proteins are on your red blood cells. These proteins are called antigens. Your blood type (or blood group) depends on what types your parents passed down to you. Blood is often grouped according to the ABO blood typing system.
The 4 major blood types are:
1. Type A
2. Type B
3. Type AB
4. Type O
In this project you will learn with complete guidelines that how to find the possible combinations of progeny blood groups by giving inputs of maternal and paternal blood group combinations.
Watch the following video to construct your own Sanguinoscope. You will have to purchase the relevant material given in the following video lecture to construct the project.
If you have any problem while purchasing the material, please contact us.
The Code
/* This code was developed by Vidyasagar Academy Akola, * www.vsa.edu.in * License: You can use it for any purpose as long as you don't * claim that you are its author and * you don't alter License terms and * formulations (lines 1-9 of this file). * Project: Sanguinoscope using Arduino UNO * Date of Creation: 26.02.2020 */ // I/O variables int A_Paternal=1; int B_Paternal=2; int AB_Paternal=3; int O_Paternal=4; int A_Maternal=5; int B_Maternal=6; int AB_Maternal=7; int O_Maternal=8; int A_Progeny=9; int B_Progeny=10; int AB_Progeny=11; int O_Progeny=12; int Buzzer=13; // connect buzzer to pin-13 (buzzer is optional) int A_Paternal_Status=LOW; int B_Paternal_Status=LOW; int AB_Paternal_Status=LOW; int O_Paternal_Status=LOW; int A_Maternal_Status=LOW; int B_Maternal_Status=LOW; int AB_Maternal_Status=LOW; int O_Maternal_Status=LOW; void setup() { pinMode(A_Paternal,INPUT); pinMode(B_Paternal,INPUT); pinMode(AB_Paternal,INPUT); pinMode(O_Paternal,INPUT); pinMode(A_Maternal,INPUT); pinMode(B_Maternal,INPUT); pinMode(AB_Maternal,INPUT); pinMode(O_Maternal,INPUT); pinMode(A_Progeny,OUTPUT); pinMode(B_Progeny,OUTPUT); pinMode(AB_Progeny,OUTPUT); pinMode(O_Progeny,OUTPUT); pinMode(Buzzer,OUTPUT); // optional } void loop() { A_Paternal_Status=digitalRead(A_Paternal); B_Paternal_Status=digitalRead(B_Paternal); AB_Paternal_Status=digitalRead(AB_Paternal); O_Paternal_Status=digitalRead(O_Paternal); A_Maternal_Status=digitalRead(A_Maternal); B_Maternal_Status=digitalRead(B_Maternal); AB_Maternal_Status=digitalRead(AB_Maternal); O_Maternal_Status=digitalRead(O_Maternal); if((A_Paternal_Status==HIGH)&(A_Maternal_Status==HIGH)) // A,A { digitalWrite(A_Progeny,HIGH); // digitalWrite(B_Progeny,LOW); // digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(100); } if((A_Paternal_Status==HIGH)&(O_Maternal_Status==HIGH)) // B,B { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,LOW); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((O_Paternal_Status==HIGH)&(A_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,LOW); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((A_Paternal_Status==HIGH)&(B_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((B_Paternal_Status==HIGH)&(A_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((B_Paternal_Status==HIGH)&(B_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,LOW); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((B_Paternal_Status==HIGH)&(O_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,LOW); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((O_Paternal_Status==HIGH)&(B_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,LOW); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((AB_Paternal_Status==HIGH)&(A_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((A_Paternal_Status==HIGH)&(AB_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((AB_Paternal_Status==HIGH)&(B_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((B_Paternal_Status==HIGH)&(AB_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((AB_Paternal_Status==HIGH)&(O_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((O_Paternal_Status==HIGH)&(AB_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((AB_Paternal_Status==HIGH)&(AB_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,HIGH); digitalWrite(B_Progeny,HIGH); digitalWrite(AB_Progeny,HIGH); digitalWrite(O_Progeny,LOW); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } if((O_Paternal_Status==HIGH)&(O_Maternal_Status==HIGH)) { digitalWrite(A_Progeny,LOW); digitalWrite(B_Progeny,LOW); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(4000); } else { digitalWrite(A_Progeny,LOW); digitalWrite(B_Progeny,LOW); digitalWrite(AB_Progeny,LOW); digitalWrite(O_Progeny,LOW); } }
What i do not realize is actually how you are not really much more well-liked than you might be right now. You’re very intelligent. You realize thus considerably relating to this subject, made me personally consider it from a lot of varied angles. Its like men and women aren’t fascinated unless it’s one thing to do with Lady gaga! Your own stuffs excellent. Always maintain it up!
ABO TYPING – CODE WITH CONDITIONAL LOGIC
All the following conditional logic is fully tested in our lab. You should not change this logic. Else your program will fail to work properly.
if((A_Paternal_Input==HIGH)&(A_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,LOW);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((A_Paternal_Input==HIGH)&(O_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,LOW);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((O_Paternal_Input==HIGH)&(A_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,LOW);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((A_Paternal_Input==HIGH)&(B_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,HIGH);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((B_Paternal_Input==HIGH)&(A_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,HIGH);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((B_Paternal_Input==HIGH)&(B_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,LOW);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((B_Paternal_Input==HIGH)&(O_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,LOW);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((O_Paternal_Input==HIGH)&(B_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,LOW);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,LOW);
digitalWrite(O_Progeny,HIGH);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((AB_Paternal_Input==HIGH)&(A_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,HIGH);
digitalWrite(O_Progeny,LOW);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((A_Paternal_Input==HIGH)&(AB_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,HIGH);
digitalWrite(O_Progeny,LOW);
digitalWrite(Buzzer,HIGH);
delay(100);
digitalWrite(Buzzer,LOW);
delay(4000);
}
if((AB_Paternal_Input==HIGH)&(B_Maternal_Input==HIGH))
{
digitalWrite(A_Progeny,HIGH);
digitalWrite(B_Progeny,HIGH);
digitalWrite(AB_Progeny,HIGH);
digitalWrite(O_Progeny,LOW);
… and so on…
This code is not tested at our lab