- AR-AD1: Sanguinoscope Blood Group Typing Project
- AR-AD2: Arduino Advanced Calculator
- AR-AD3: Arduino based Fastest Figure First Controlling System for Quiz Competition
- Convert Text into Morse Code with beeps & back into Text with Arduino
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.
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, post your difficulties in ATL Lab Forum. Our expert teachers will try to answer your queries.
Video Guidelines
The Code
Note: Following code is copyrighted. You can use it freely until you don’t change the first 1-9 lines of 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(O_Progeny,HIGH); digitalWrite(Buzzer,HIGH); delay(100); digitalWrite(Buzzer,LOW); delay(100); } if((A_Paternal_Status==HIGH)&(O_Maternal_Status==HIGH)) // A,O { 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); } }