Ok i got this code from github https://github.com/dattadebrup/Digital-IC-tester/blob/master/ictester/ictester.ino

I am trying this code but i want to show the results on a serial monitor instead of a lcd and i do not know what to change in the code so i don't mess it up

#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,8,9,10,11);

int delayms=1;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(6,OUTPUT);
  analogWrite(6, 100); 
  lcd.begin(16,2);
  pinMode(4,OUTPUT);
  pinMode(5,INPUT);
}

void loop() 
{
  while(digitalRead(5)==HIGH)
  {
  // put your main code here, to run repeatedly:
  //14 pin ICs
  if (digitalRead(48)==LOW)
  {
    IC7400();//**7403**quad two input nand gate
    IC7401();//quad two input nand gate but different pins
    IC7402();//quad two input nor gate
    IC7404();//**7405**hex inverter
    IC7408();//**7409**quad two input and gate
    IC7410();//**7412**tri three input nand gate
    IC7411();//**7415**tri three input and gate
    IC7420();//**7422**twice four input nand gate
    IC7421();//twice four input and gate
    IC7427();//tri three input nor gate
    IC7430();//eight input nandgate
    IC7432();//quad two input or gate
    IC7436();//quad two input nor gate
    
    
    IC7450();//dual 2-wide 2-input AND-OR-invert gate (one gate expandable)
    IC7473();//dual positive edge triggered J-K flip-flop with clear
    IC7474();//dual D positive edge triggered flip-flop with preset and clear
    
    IC7477();//4 bit bistable Latch 14 pin IC
    
    IC7486();//quad 2-input XOR gate
    
    IC4072();//Dual 4-input OR gate
    IC4000();//Dual 3-input NOR gate + 1 Inverter
    IC4002();//Dual 4-input NOR gate
    IC4001();//Quad 2-input NOR gate
    IC4012();//Dual 4-input NAND gate
    IC4013();//Dual D-type flip-flop
    IC4069();//Hex inverter


    IC4023();//Triple 3-input NAND gate
    IC4025();//Triple 3-input NOR gate
    IC4027();//Dual JK flip-flop
  }
  else
  {
    //16 pin ICs
    IC7442();//active low BCD to Decimal decoder
     
    IC7475();//4 bit bistable latch 16 pin IC
    IC7476();//dual jk flipflop with preset and clear
    IC74133();//13 input nand gate
  }
    show("NOT_found");
    bool a=true;
    while(a==true)
    {
      a=false;
    }
    
    
}
}
//functions----
//andOrInvert()
//andgate(i/p,i/p,o/p)
//threeAnd()
//nandgate(i/p,i/p,o/p)
//threeNand()
//fournand(i/p,i/p,i/p,i/p,o/p)
//eightNand()
//fouror()
//threeNor()
//orgate()
//norgate()
//fourand()
//fourAndWII()
//fourNandWII()
//fournor()
//notgate()
//xorgate()
//clock(int n)
//thirteen_Nand()
//dLatch(d,clock,q,q_)
//DLatch(d,clock,q)
//jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
//jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)

void show(char x[ ])
{
  Serial.println(x);
  lcd.setCursor(0,0);
  lcd.print(x);
  
}
void IC7401()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(2),pin(3),pin(1));
  b=nandgate(pin(5),pin(6),pin(4));
  c=nandgate(pin(11),pin(12),pin(13));
  d=nandgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7401");
    while(true){
      ; 
    }
  }
}
void IC7402(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(2),pin(3),pin(1));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(11),pin(12),pin(13));
  d=norgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7402");
    while(true){
      ; 
    }
  }
}
void IC7408(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=andgate(pin(2),pin(1),pin(3));
  b=andgate(pin(5),pin(4),pin(6));
  c=andgate(pin(13),pin(12),pin(11));
  d=andgate(pin(10),pin(9),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7408 Or IC7409");
    while(true){
      ; 
    }
  }
}
void IC7410(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNand(pin(1),pin(2),pin(13),pin(12));
 b=threeNand(pin(3),pin(4),pin(5),pin(6));
 c=threeNand(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7410 or IC7412");
  while(true){
    ;
  }
 }
}
void IC7411(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeAnd(pin(1),pin(2),pin(13),pin(12));
 b=threeAnd(pin(3),pin(4),pin(5),pin(6));
 c=threeAnd(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7411 or IC7415");
  while(true){
    ;
  }
 }
}
void IC4072()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool x,y;
  x=fouror(pin(2),pin(3),pin(4),pin(5),pin(1));
  y=fouror(pin(9),pin(10),pin(11),pin(12),pin(13));
  
  if (x==true && y==true)
  {
    show("IC4072");
    while (true)
    {
      ;
    }
  }
}
void IC7400()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(1),pin(2),pin(3));
  b=nandgate(pin(4),pin(5),pin(6));
  c=nandgate(pin(9),pin(10),pin(8));
  d=nandgate(pin(12),pin(13),pin(11));
  if (a==true&& b==true&& c==true&& d==true)
  {
    show(" IC7400 Or 7403");
    while (true)
    {
      ;
    }
  }
}
void IC7404()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(13),pin(12));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(9),pin(8));
  if(a==true && b==true && c==true && d==true && e==true && f==true){
    show("IC7404 Or 7405 or 4069");
    while(true){
      ;
    }
  }
}
void IC7420()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fournand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fournand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7420 or IC7422");
    while(true)
    {
      ;
    }
  }
}
void IC7421()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fourand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fourand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7421");
    while(true)
    {
      ;
    }
  }
}
void IC7427(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNor(pin(1),pin(2),pin(13),pin(12));
 b=threeNor(pin(3),pin(4),pin(5),pin(6));
 c=threeNor(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7427");
  while(true){
    ;
  }
 }
}
void IC7430(){
   pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a;
  a=eightNand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(11),pin(12),pin(8));
  if (a==true){
    show("IC7430");
    while(true){
    ;
    }
  }
}
void IC7432(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=orgate(pin(1),pin(2),pin(3));
  b=orgate(pin(4),pin(5),pin(6));
  c=orgate(pin(10),pin(9),pin(8));
  d=orgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7432");
    while(true){
      ;
    }
  }
}
void IC7436(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(4),pin(5),pin(6));
  c=norgate(pin(10),pin(9),pin(8));
  d=norgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7436");
    while(true){
      ;
    }
  }
}
void IC7442(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),0);
  digitalWrite(pin(16),1);
  bool y_0,y_1,y_2,y_3,y_4,y_5,y_6,y_7,y_8,y_9;
  y_0=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(1),0,0,0,0);
  y_1=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(2),0,0,0,1);
  y_2=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(3),0,0,1,0);
  y_3=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(4),0,0,1,1);
  y_4=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(5),0,1,0,0);
  y_5=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(6),0,1,0,1);
  y_6=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(7),0,1,1,0);
  y_7=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(9),0,1,1,1);
  y_8=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(10),1,0,0,0);
  y_9=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(11),1,0,0,1);
  if(y_0 == true && y_1 == true && y_2 == true && y_3 == true && y_4 == true && y_5 == true && y_6 == true && y_7 == true && y_8 == true &&y_9 == true){
    show("IC7442");
    while(true){
      ;
    }
  }
}
void IC7450(){
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),0);
  digitalWrite(pin(14),1);
  bool a,b;
  a=andOrInvert(pin(1),pin(13),pin(10),pin(9),pin(8));
  b=andOrInvert(pin(2),pin(3),pin(4),pin(5),pin(6));
  if (a==true && b==true){
    show("IC7450");
    while(true){
      ;
    }
  }
}
void IC7473()
{
  pinMode(pin(4),OUTPUT);
  pinMode(pin(11),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b;
  a=jk_ff_neg_with_invert_clear(pin(14),pin(3),pin(1),pin(2),pin(12),pin(13));
  b=jk_ff_neg_with_invert_clear(pin(7),pin(10),pin(5),pin(6),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7473");
    while(true)
    {
      ;
    }
  }
}
void IC7474()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(2),pin(3),pin(1),pin(4),pin(5),pin(6));
  b=d_pos_trig_ff_with_pre_clr(pin(12),pin(11),pin(13),pin(10),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7474");
    while(true)
    {
      ;
    }
  }
}
void IC7475(){
  pinMode(5,OUTPUT);
  pinMode(12,OUTPUT);
  digitalWrite(5,HIGH);
  digitalWrite(12,LOW);
  bool a,b,c,d;
  a=dLatch(pin(2),pin(13),pin(16),pin(1));
  b=dLatch(pin(3),pin(13),pin(15),pin(14));
  c=dLatch(pin(6),pin(4),pin(10),pin(11));
  d=dLatch(pin(7),pin(4),pin(9),pin(8));
  if (a==true && b==true && c==true && d==true){
    show("IC7475");
    while(true){
      ;
    }
  }
}
void IC7476(){
  pinMode(pin(5),OUTPUT);
  pinMode(pin(13),OUTPUT);
  digitalWrite(pin(5),HIGH);
  digitalWrite(pin(13),LOW);
  bool a,b;
  a=jk_Latch_with_inverted_preset_and_clear(pin(4),pin(16),pin(1),pin(3),pin(2),pin(15),pin(14));
  b=jk_Latch_with_inverted_preset_and_clear(pin(9),pin(12),pin(6),pin(8),pin(7),pin(11),pin(10));
  if(a==true && b==true){
    show("IC7476");
    while(true){
      ;
    }
  }
}
void IC7477(){
  pinMode(pin(11),OUTPUT);
  pinMode(pin(4),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b,c,d;
  a=DLatch(pin(1),pin(12),pin(14));
  b=DLatch(pin(2),pin(12),pin(13));
  c=DLatch(pin(5),pin(3),pin(9));
  d=DLatch(pin(6),pin(3),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7477");
    while(true){
      ;
    }
  }
}
void IC7486()
{
   pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=xorgate(pin(1),pin(2),pin(3));
  b=xorgate(pin(4),pin(5),pin(6));
  c=xorgate(pin(9),pin(10),pin(8));
  d=xorgate(pin(12),pin(13),pin(11));
  if(a==true && b==true && c==true && d==true)
  {
    show("IC7486");
    while(true)
    {
      ;
    }
  }
}
void IC74133(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a;
  a=thirteen_Nand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(7),pin(10),pin(11),pin(12),pin(13),pin(14),pin(15),pin(9));
  if (a==true){
    show("IC74133");
    while(true){
      ;
    }
  }
}
void IC4000()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=notgate(pin(8),pin(9));
  if(a==true && b==true && c==true)
  {
    show("IC4000");
    while(true)
    {
      ;
    }
  }
}
void IC4001()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(8),pin(9),pin(10));
  d=norgate(pin(12),pin(13),pin(11));
  if (a==true && b==true && c==true && d==true)
  {
    show("IC4001");
    while(true)
    {
      ;
    }
  }
}
void IC4002()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournor(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournor(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4002");
    while(true)
    {
      ;
    }
  }
}
void IC4012()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournand(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournand(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4012");
    while(true)
    {
      ;
    }
  }
}
void IC4013()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(5),pin(3),pin(4),pin(6),pin(1),pin(2));
  b=d_pos_trig_ff_with_pre_clr(pin(9),pin(11),pin(10),pin(8),pin(13),pin(12));
  if (a==true && b==true)
  {
    show("IC4013");
    while(true)
    {
      ;
    }
  }
}
void IC4069()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(9),pin(8));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(13),pin(12));
  if (a==true && b==true && c==true && d==true && e==true && f==true)
  {
    show("IC4069");
    while(true)
    {
      ;
    }
  }
}


void IC4023()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=threeNand(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4023");
    while(true)
    {
      ;
    }
  }
}
void IC4025()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNor(pin(3),pin(4),pin(5),pin(6));
  b=threeNor(pin(11),pin(12),pin(13),pin(10));
  c=threeNor(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4025");
    while(true)
    {
      ;
    }
  }
}
void IC4027()
{
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a,b;
  a=jk_ff_pos_with_pre_clr(pin(10),pin(11),pin(13),pin(9),pin(12),pin(15),pin(14));
  b=jk_ff_pos_with_pre_clr(pin(6),pin(5),pin(3),pin(7),pin(4),pin(1),pin(2));
  if (a==true && b==true)
  {
    show("IC4027");
    while(true)
    {
      ;
    }
  }
}


int pin(int n)
{
  if(digitalRead(48)==HIGH)
  {
    //16 pins
    n=n+21;
  return n;
  }
  else
  {
    //14 pins
    if (n>7)
    {
      return n+23;
    }
    else
    {
      return n+21;
    }
  }
}
boolean notgate(int inp,int outp)
{
  int flag=0;
  pinMode(inp,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  delay(delayms);
  digitalWrite(inp,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==2)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}


boolean andgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeAnd(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delay(delayms);
         if(digitalRead(otp)==((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean nandgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeNand(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean threeNor(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i || (bool)j || (bool)k)){
            count++;
         }
         else{
          return false;
         }
      }
    }
  }
  if(count==8){
    return true;
  }
}
boolean fournand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean andOrInvert(int inp1,int inp2,int inp3,int inp4,int outp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int i,j,k,l,count;
  for (i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for (j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
        digitalWrite(inp3,(bool)k);
        for(l=0;l<2;l++){
          digitalWrite(inp4,(bool)l);
          delayMicroseconds(1);
          if(digitalRead(outp)!=(((bool)i && (bool)j) || ((bool)j && (bool)k))){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean eightNand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  delayMicroseconds(1);
                  if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h)){
                    count++;
                  }
                  else {
                    return false;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==256){
    return true;
  }
  else{
    return false;
  }
}
boolean thirteen_Nand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int inp9,int inp10,int inp11,int inp12,int inp13,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(inp9,OUTPUT);
  pinMode(inp10,OUTPUT);
  pinMode(inp11,OUTPUT);
  pinMode(inp12,OUTPUT);
  pinMode(inp13,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,i,j,k,l,m,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  for(a=0;a<2;a++){
                    digitalWrite(inp9,(bool)i);
                    for (b=0;b<2;b++){
                      digitalWrite(inp10,(bool)j);
                      for (c=0;c<2;c++){
                        digitalWrite(inp11,(bool)k);
                        for(d=0;d<2;d++){
                          digitalWrite(inp12,(bool)l);
                            for(e=0;e<2;e++){
                              digitalWrite(inp13,(bool)m);
                              delayMicroseconds(1);
                              if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h && (bool)i && (bool)j && (bool)k && (bool)l && (bool)m)){
                                count++;
                              }
                              else {
                                return false;  
                              }
                            }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==8192){
    return true;
  }
  else{
    return false;
  }
}

boolean fouror(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean orgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean norgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}

boolean fourand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean fourAndWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)==((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fourNandWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)!=((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fournor(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
void clock(int n)
{
  pinMode(n,OUTPUT);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  digitalWrite(n,HIGH);
  delayMicroseconds(10);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  return;
}
boolean jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean dLatch(int d,int clk,int q,int q_){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i && digitalRead(q_)!=(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean DLatch(int d,int clk,int q){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
{
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  int flag=0;
  int i;
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(d,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
 if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  if (flag==10)
  {
    return true;
  }
  else
  {
    return false;
  }
}

boolean jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)
{
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,flag=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
 digitalWrite(k,HIGH);
 digitalWrite(clk,HIGH);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(clk,LOW);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==13)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean xorgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
}

you killed it, it's all black and white, there's no color..
must be code overload or something..

but really, sounds like you just need to look at the function called show()..
looks like it already Serial prints it and then displays on lcd, just comment the lcd lines out //..

good luck.. ~q

1 Like

Great project, a schematic would make it fantastic!

i don't see no pinMode for 48??
not sure what it is, button or switch??
gets read allot..

if you want to omit the lcd completely, just comment it out..
only a few lines..

~q

1 Like

Interesting project & code, could be about half the size if the original developer knew what they were doing.

It looks like they may have tried converting it in from some other language / platform.

See if this modified version (LCD code commented out) will work:

//#include<LiquidCrystal.h>
//LiquidCrystal lcd(2,3,8,9,10,11);

int delayms=1;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(6,OUTPUT);
  analogWrite(6, 100); 
  //lcd.begin(16,2);
  pinMode(4,OUTPUT);
  pinMode(5,INPUT);
}

void loop() 
{
  while(digitalRead(5)==HIGH)
  {
  // put your main code here, to run repeatedly:
  //14 pin ICs
  if (digitalRead(48)==LOW)
  {
    IC7400();//**7403**quad two input nand gate
    IC7401();//quad two input nand gate but different pins
    IC7402();//quad two input nor gate
    IC7404();//**7405**hex inverter
    IC7408();//**7409**quad two input and gate
    IC7410();//**7412**tri three input nand gate
    IC7411();//**7415**tri three input and gate
    IC7420();//**7422**twice four input nand gate
    IC7421();//twice four input and gate
    IC7427();//tri three input nor gate
    IC7430();//eight input nandgate
    IC7432();//quad two input or gate
    IC7436();//quad two input nor gate
    
    
    IC7450();//dual 2-wide 2-input AND-OR-invert gate (one gate expandable)
    IC7473();//dual positive edge triggered J-K flip-flop with clear
    IC7474();//dual D positive edge triggered flip-flop with preset and clear
    
    IC7477();//4 bit bistable Latch 14 pin IC
    
    IC7486();//quad 2-input XOR gate
    
    IC4072();//Dual 4-input OR gate
    IC4000();//Dual 3-input NOR gate + 1 Inverter
    IC4002();//Dual 4-input NOR gate
    IC4001();//Quad 2-input NOR gate
    IC4012();//Dual 4-input NAND gate
    IC4013();//Dual D-type flip-flop
    IC4069();//Hex inverter


    IC4023();//Triple 3-input NAND gate
    IC4025();//Triple 3-input NOR gate
    IC4027();//Dual JK flip-flop
  }
  else
  {
    //16 pin ICs
    IC7442();//active low BCD to Decimal decoder
     
    IC7475();//4 bit bistable latch 16 pin IC
    IC7476();//dual jk flipflop with preset and clear
    IC74133();//13 input nand gate
  }
    show("NOT_found");
    bool a=true;
    while(a==true)
    {
      a=false;
    }
    
    
}
}
//functions----
//andOrInvert()
//andgate(i/p,i/p,o/p)
//threeAnd()
//nandgate(i/p,i/p,o/p)
//threeNand()
//fournand(i/p,i/p,i/p,i/p,o/p)
//eightNand()
//fouror()
//threeNor()
//orgate()
//norgate()
//fourand()
//fourAndWII()
//fourNandWII()
//fournor()
//notgate()
//xorgate()
//clock(int n)
//thirteen_Nand()
//dLatch(d,clock,q,q_)
//DLatch(d,clock,q)
//jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
//jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)

void show(char x[ ])
{
  Serial.println(x);
//lcd.setCursor(0,0);
//lcd.print(x);
  
}
void IC7401()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(2),pin(3),pin(1));
  b=nandgate(pin(5),pin(6),pin(4));
  c=nandgate(pin(11),pin(12),pin(13));
  d=nandgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7401");
    while(true){
      ; 
    }
  }
}
void IC7402(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(2),pin(3),pin(1));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(11),pin(12),pin(13));
  d=norgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7402");
    while(true){
      ; 
    }
  }
}
void IC7408(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=andgate(pin(2),pin(1),pin(3));
  b=andgate(pin(5),pin(4),pin(6));
  c=andgate(pin(13),pin(12),pin(11));
  d=andgate(pin(10),pin(9),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7408 Or IC7409");
    while(true){
      ; 
    }
  }
}
void IC7410(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNand(pin(1),pin(2),pin(13),pin(12));
 b=threeNand(pin(3),pin(4),pin(5),pin(6));
 c=threeNand(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7410 or IC7412");
  while(true){
    ;
  }
 }
}
void IC7411(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeAnd(pin(1),pin(2),pin(13),pin(12));
 b=threeAnd(pin(3),pin(4),pin(5),pin(6));
 c=threeAnd(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7411 or IC7415");
  while(true){
    ;
  }
 }
}
void IC4072()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool x,y;
  x=fouror(pin(2),pin(3),pin(4),pin(5),pin(1));
  y=fouror(pin(9),pin(10),pin(11),pin(12),pin(13));
  
  if (x==true && y==true)
  {
    show("IC4072");
    while (true)
    {
      ;
    }
  }
}
void IC7400()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(1),pin(2),pin(3));
  b=nandgate(pin(4),pin(5),pin(6));
  c=nandgate(pin(9),pin(10),pin(8));
  d=nandgate(pin(12),pin(13),pin(11));
  if (a==true&& b==true&& c==true&& d==true)
  {
    show(" IC7400 Or 7403");
    while (true)
    {
      ;
    }
  }
}
void IC7404()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(13),pin(12));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(9),pin(8));
  if(a==true && b==true && c==true && d==true && e==true && f==true){
    show("IC7404 Or 7405 or 4069");
    while(true){
      ;
    }
  }
}
void IC7420()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fournand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fournand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7420 or IC7422");
    while(true)
    {
      ;
    }
  }
}
void IC7421()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fourand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fourand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7421");
    while(true)
    {
      ;
    }
  }
}
void IC7427(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNor(pin(1),pin(2),pin(13),pin(12));
 b=threeNor(pin(3),pin(4),pin(5),pin(6));
 c=threeNor(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7427");
  while(true){
    ;
  }
 }
}
void IC7430(){
   pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a;
  a=eightNand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(11),pin(12),pin(8));
  if (a==true){
    show("IC7430");
    while(true){
    ;
    }
  }
}
void IC7432(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=orgate(pin(1),pin(2),pin(3));
  b=orgate(pin(4),pin(5),pin(6));
  c=orgate(pin(10),pin(9),pin(8));
  d=orgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7432");
    while(true){
      ;
    }
  }
}
void IC7436(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(4),pin(5),pin(6));
  c=norgate(pin(10),pin(9),pin(8));
  d=norgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7436");
    while(true){
      ;
    }
  }
}
void IC7442(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),0);
  digitalWrite(pin(16),1);
  bool y_0,y_1,y_2,y_3,y_4,y_5,y_6,y_7,y_8,y_9;
  y_0=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(1),0,0,0,0);
  y_1=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(2),0,0,0,1);
  y_2=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(3),0,0,1,0);
  y_3=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(4),0,0,1,1);
  y_4=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(5),0,1,0,0);
  y_5=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(6),0,1,0,1);
  y_6=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(7),0,1,1,0);
  y_7=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(9),0,1,1,1);
  y_8=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(10),1,0,0,0);
  y_9=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(11),1,0,0,1);
  if(y_0 == true && y_1 == true && y_2 == true && y_3 == true && y_4 == true && y_5 == true && y_6 == true && y_7 == true && y_8 == true &&y_9 == true){
    show("IC7442");
    while(true){
      ;
    }
  }
}
void IC7450(){
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),0);
  digitalWrite(pin(14),1);
  bool a,b;
  a=andOrInvert(pin(1),pin(13),pin(10),pin(9),pin(8));
  b=andOrInvert(pin(2),pin(3),pin(4),pin(5),pin(6));
  if (a==true && b==true){
    show("IC7450");
    while(true){
      ;
    }
  }
}
void IC7473()
{
  pinMode(pin(4),OUTPUT);
  pinMode(pin(11),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b;
  a=jk_ff_neg_with_invert_clear(pin(14),pin(3),pin(1),pin(2),pin(12),pin(13));
  b=jk_ff_neg_with_invert_clear(pin(7),pin(10),pin(5),pin(6),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7473");
    while(true)
    {
      ;
    }
  }
}
void IC7474()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(2),pin(3),pin(1),pin(4),pin(5),pin(6));
  b=d_pos_trig_ff_with_pre_clr(pin(12),pin(11),pin(13),pin(10),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7474");
    while(true)
    {
      ;
    }
  }
}
void IC7475(){
  pinMode(5,OUTPUT);
  pinMode(12,OUTPUT);
  digitalWrite(5,HIGH);
  digitalWrite(12,LOW);
  bool a,b,c,d;
  a=dLatch(pin(2),pin(13),pin(16),pin(1));
  b=dLatch(pin(3),pin(13),pin(15),pin(14));
  c=dLatch(pin(6),pin(4),pin(10),pin(11));
  d=dLatch(pin(7),pin(4),pin(9),pin(8));
  if (a==true && b==true && c==true && d==true){
    show("IC7475");
    while(true){
      ;
    }
  }
}
void IC7476(){
  pinMode(pin(5),OUTPUT);
  pinMode(pin(13),OUTPUT);
  digitalWrite(pin(5),HIGH);
  digitalWrite(pin(13),LOW);
  bool a,b;
  a=jk_Latch_with_inverted_preset_and_clear(pin(4),pin(16),pin(1),pin(3),pin(2),pin(15),pin(14));
  b=jk_Latch_with_inverted_preset_and_clear(pin(9),pin(12),pin(6),pin(8),pin(7),pin(11),pin(10));
  if(a==true && b==true){
    show("IC7476");
    while(true){
      ;
    }
  }
}
void IC7477(){
  pinMode(pin(11),OUTPUT);
  pinMode(pin(4),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b,c,d;
  a=DLatch(pin(1),pin(12),pin(14));
  b=DLatch(pin(2),pin(12),pin(13));
  c=DLatch(pin(5),pin(3),pin(9));
  d=DLatch(pin(6),pin(3),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7477");
    while(true){
      ;
    }
  }
}
void IC7486()
{
   pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=xorgate(pin(1),pin(2),pin(3));
  b=xorgate(pin(4),pin(5),pin(6));
  c=xorgate(pin(9),pin(10),pin(8));
  d=xorgate(pin(12),pin(13),pin(11));
  if(a==true && b==true && c==true && d==true)
  {
    show("IC7486");
    while(true)
    {
      ;
    }
  }
}
void IC74133(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a;
  a=thirteen_Nand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(7),pin(10),pin(11),pin(12),pin(13),pin(14),pin(15),pin(9));
  if (a==true){
    show("IC74133");
    while(true){
      ;
    }
  }
}
void IC4000()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=notgate(pin(8),pin(9));
  if(a==true && b==true && c==true)
  {
    show("IC4000");
    while(true)
    {
      ;
    }
  }
}
void IC4001()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(8),pin(9),pin(10));
  d=norgate(pin(12),pin(13),pin(11));
  if (a==true && b==true && c==true && d==true)
  {
    show("IC4001");
    while(true)
    {
      ;
    }
  }
}
void IC4002()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournor(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournor(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4002");
    while(true)
    {
      ;
    }
  }
}
void IC4012()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournand(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournand(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4012");
    while(true)
    {
      ;
    }
  }
}
void IC4013()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(5),pin(3),pin(4),pin(6),pin(1),pin(2));
  b=d_pos_trig_ff_with_pre_clr(pin(9),pin(11),pin(10),pin(8),pin(13),pin(12));
  if (a==true && b==true)
  {
    show("IC4013");
    while(true)
    {
      ;
    }
  }
}
void IC4069()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(9),pin(8));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(13),pin(12));
  if (a==true && b==true && c==true && d==true && e==true && f==true)
  {
    show("IC4069");
    while(true)
    {
      ;
    }
  }
}


void IC4023()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=threeNand(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4023");
    while(true)
    {
      ;
    }
  }
}
void IC4025()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNor(pin(3),pin(4),pin(5),pin(6));
  b=threeNor(pin(11),pin(12),pin(13),pin(10));
  c=threeNor(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4025");
    while(true)
    {
      ;
    }
  }
}
void IC4027()
{
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a,b;
  a=jk_ff_pos_with_pre_clr(pin(10),pin(11),pin(13),pin(9),pin(12),pin(15),pin(14));
  b=jk_ff_pos_with_pre_clr(pin(6),pin(5),pin(3),pin(7),pin(4),pin(1),pin(2));
  if (a==true && b==true)
  {
    show("IC4027");
    while(true)
    {
      ;
    }
  }
}


int pin(int n)
{
  if(digitalRead(48)==HIGH)
  {
    //16 pins
    n=n+21;
  return n;
  }
  else
  {
    //14 pins
    if (n>7)
    {
      return n+23;
    }
    else
    {
      return n+21;
    }
  }
}
boolean notgate(int inp,int outp)
{
  int flag=0;
  pinMode(inp,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  delay(delayms);
  digitalWrite(inp,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==2)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}


boolean andgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeAnd(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delay(delayms);
         if(digitalRead(otp)==((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean nandgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeNand(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean threeNor(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i || (bool)j || (bool)k)){
            count++;
         }
         else{
          return false;
         }
      }
    }
  }
  if(count==8){
    return true;
  }
}
boolean fournand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean andOrInvert(int inp1,int inp2,int inp3,int inp4,int outp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int i,j,k,l,count;
  for (i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for (j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
        digitalWrite(inp3,(bool)k);
        for(l=0;l<2;l++){
          digitalWrite(inp4,(bool)l);
          delayMicroseconds(1);
          if(digitalRead(outp)!=(((bool)i && (bool)j) || ((bool)j && (bool)k))){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean eightNand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  delayMicroseconds(1);
                  if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h)){
                    count++;
                  }
                  else {
                    return false;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==256){
    return true;
  }
  else{
    return false;
  }
}
boolean thirteen_Nand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int inp9,int inp10,int inp11,int inp12,int inp13,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(inp9,OUTPUT);
  pinMode(inp10,OUTPUT);
  pinMode(inp11,OUTPUT);
  pinMode(inp12,OUTPUT);
  pinMode(inp13,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,i,j,k,l,m,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  for(a=0;a<2;a++){
                    digitalWrite(inp9,(bool)i);
                    for (b=0;b<2;b++){
                      digitalWrite(inp10,(bool)j);
                      for (c=0;c<2;c++){
                        digitalWrite(inp11,(bool)k);
                        for(d=0;d<2;d++){
                          digitalWrite(inp12,(bool)l);
                            for(e=0;e<2;e++){
                              digitalWrite(inp13,(bool)m);
                              delayMicroseconds(1);
                              if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h && (bool)i && (bool)j && (bool)k && (bool)l && (bool)m)){
                                count++;
                              }
                              else {
                                return false;  
                              }
                            }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==8192){
    return true;
  }
  else{
    return false;
  }
}

boolean fouror(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean orgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean norgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}

boolean fourand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean fourAndWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)==((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fourNandWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)!=((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fournor(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
void clock(int n)
{
  pinMode(n,OUTPUT);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  digitalWrite(n,HIGH);
  delayMicroseconds(10);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  return;
}
boolean jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean dLatch(int d,int clk,int q,int q_){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i && digitalRead(q_)!=(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean DLatch(int d,int clk,int q){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
{
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  int flag=0;
  int i;
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(d,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
 if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  if (flag==10)
  {
    return true;
  }
  else
  {
    return false;
  }
}

boolean jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)
{
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,flag=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
 digitalWrite(k,HIGH);
 digitalWrite(clk,HIGH);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(clk,LOW);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==13)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean xorgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
}

I have ran the code in arduino, there is no error but there is also nothing in the serial monitor

Do you have the hardware the code was written for and the schematic showing how the various components are interconnected? If not, I don't see the use of having the code.

did you press the button and have the switch in proper direction??
i get allot of "not founds"..
Mega IC Tester..

good luck.. ~q

oh i thought i just had to connect according to the pins sorry.

To @pohjunhan , @JCA34F and all
When inserting such a long code, please put in the Details section:

Details
//#include<LiquidCrystal.h>
//LiquidCrystal lcd(2,3,8,9,10,11);

int delayms=1;
void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(6,OUTPUT);
  analogWrite(6, 100); 
  //lcd.begin(16,2);
  pinMode(4,OUTPUT);
  pinMode(5,INPUT);
}

void loop() 
{
  while(digitalRead(5)==HIGH)
  {
  // put your main code here, to run repeatedly:
  //14 pin ICs
  if (digitalRead(48)==LOW)
  {
    IC7400();//**7403**quad two input nand gate
    IC7401();//quad two input nand gate but different pins
    IC7402();//quad two input nor gate
    IC7404();//**7405**hex inverter
    IC7408();//**7409**quad two input and gate
    IC7410();//**7412**tri three input nand gate
    IC7411();//**7415**tri three input and gate
    IC7420();//**7422**twice four input nand gate
    IC7421();//twice four input and gate
    IC7427();//tri three input nor gate
    IC7430();//eight input nandgate
    IC7432();//quad two input or gate
    IC7436();//quad two input nor gate
    
    
    IC7450();//dual 2-wide 2-input AND-OR-invert gate (one gate expandable)
    IC7473();//dual positive edge triggered J-K flip-flop with clear
    IC7474();//dual D positive edge triggered flip-flop with preset and clear
    
    IC7477();//4 bit bistable Latch 14 pin IC
    
    IC7486();//quad 2-input XOR gate
    
    IC4072();//Dual 4-input OR gate
    IC4000();//Dual 3-input NOR gate + 1 Inverter
    IC4002();//Dual 4-input NOR gate
    IC4001();//Quad 2-input NOR gate
    IC4012();//Dual 4-input NAND gate
    IC4013();//Dual D-type flip-flop
    IC4069();//Hex inverter


    IC4023();//Triple 3-input NAND gate
    IC4025();//Triple 3-input NOR gate
    IC4027();//Dual JK flip-flop
  }
  else
  {
    //16 pin ICs
    IC7442();//active low BCD to Decimal decoder
     
    IC7475();//4 bit bistable latch 16 pin IC
    IC7476();//dual jk flipflop with preset and clear
    IC74133();//13 input nand gate
  }
    show("NOT_found");
    bool a=true;
    while(a==true)
    {
      a=false;
    }
    
    
}
}
//functions----
//andOrInvert()
//andgate(i/p,i/p,o/p)
//threeAnd()
//nandgate(i/p,i/p,o/p)
//threeNand()
//fournand(i/p,i/p,i/p,i/p,o/p)
//eightNand()
//fouror()
//threeNor()
//orgate()
//norgate()
//fourand()
//fourAndWII()
//fourNandWII()
//fournor()
//notgate()
//xorgate()
//clock(int n)
//thirteen_Nand()
//dLatch(d,clock,q,q_)
//DLatch(d,clock,q)
//jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_)
//jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_)
//d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
//jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)

void show(char x[ ])
{
  Serial.println(x);
//lcd.setCursor(0,0);
//lcd.print(x);
  
}
void IC7401()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(2),pin(3),pin(1));
  b=nandgate(pin(5),pin(6),pin(4));
  c=nandgate(pin(11),pin(12),pin(13));
  d=nandgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7401");
    while(true){
      ; 
    }
  }
}
void IC7402(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(2),pin(3),pin(1));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(11),pin(12),pin(13));
  d=norgate(pin(8),pin(9),pin(10));
  if(a==true && b==true && c==true && d==true){
    show("IC7402");
    while(true){
      ; 
    }
  }
}
void IC7408(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=andgate(pin(2),pin(1),pin(3));
  b=andgate(pin(5),pin(4),pin(6));
  c=andgate(pin(13),pin(12),pin(11));
  d=andgate(pin(10),pin(9),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7408 Or IC7409");
    while(true){
      ; 
    }
  }
}
void IC7410(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNand(pin(1),pin(2),pin(13),pin(12));
 b=threeNand(pin(3),pin(4),pin(5),pin(6));
 c=threeNand(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7410 or IC7412");
  while(true){
    ;
  }
 }
}
void IC7411(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeAnd(pin(1),pin(2),pin(13),pin(12));
 b=threeAnd(pin(3),pin(4),pin(5),pin(6));
 c=threeAnd(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7411 or IC7415");
  while(true){
    ;
  }
 }
}
void IC4072()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool x,y;
  x=fouror(pin(2),pin(3),pin(4),pin(5),pin(1));
  y=fouror(pin(9),pin(10),pin(11),pin(12),pin(13));
  
  if (x==true && y==true)
  {
    show("IC4072");
    while (true)
    {
      ;
    }
  }
}
void IC7400()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=nandgate(pin(1),pin(2),pin(3));
  b=nandgate(pin(4),pin(5),pin(6));
  c=nandgate(pin(9),pin(10),pin(8));
  d=nandgate(pin(12),pin(13),pin(11));
  if (a==true&& b==true&& c==true&& d==true)
  {
    show(" IC7400 Or 7403");
    while (true)
    {
      ;
    }
  }
}
void IC7404()
{
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(13),pin(12));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(9),pin(8));
  if(a==true && b==true && c==true && d==true && e==true && f==true){
    show("IC7404 Or 7405 or 4069");
    while(true){
      ;
    }
  }
}
void IC7420()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fournand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fournand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7420 or IC7422");
    while(true)
    {
      ;
    }
  }
}
void IC7421()
{ 
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b;
  a=fourand(pin(1),pin(2),pin(4),pin(5),pin(6));
  b=fourand(pin(13),pin(12),pin(10),pin(9),pin(8));
  if(a==true && b==true){
    show("IC7421");
    while(true)
    {
      ;
    }
  }
}
void IC7427(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
 bool a,b,c;
 a=threeNor(pin(1),pin(2),pin(13),pin(12));
 b=threeNor(pin(3),pin(4),pin(5),pin(6));
 c=threeNor(pin(9),pin(10),pin(11),pin(8));
 if(a==true && b==true && c==true){
  show("IC7427");
  while(true){
    ;
  }
 }
}
void IC7430(){
   pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a;
  a=eightNand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(11),pin(12),pin(8));
  if (a==true){
    show("IC7430");
    while(true){
    ;
    }
  }
}
void IC7432(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=orgate(pin(1),pin(2),pin(3));
  b=orgate(pin(4),pin(5),pin(6));
  c=orgate(pin(10),pin(9),pin(8));
  d=orgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7432");
    while(true){
      ;
    }
  }
}
void IC7436(){
  pinMode(7,OUTPUT);
  pinMode(14,OUTPUT);
  digitalWrite(7,LOW);
  digitalWrite(14,HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(4),pin(5),pin(6));
  c=norgate(pin(10),pin(9),pin(8));
  d=norgate(pin(13),pin(12),pin(11));
  if(a==true && b==true && c==true && d==true){
    show("IC7436");
    while(true){
      ;
    }
  }
}
void IC7442(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),0);
  digitalWrite(pin(16),1);
  bool y_0,y_1,y_2,y_3,y_4,y_5,y_6,y_7,y_8,y_9;
  y_0=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(1),0,0,0,0);
  y_1=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(2),0,0,0,1);
  y_2=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(3),0,0,1,0);
  y_3=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(4),0,0,1,1);
  y_4=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(5),0,1,0,0);
  y_5=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(6),0,1,0,1);
  y_6=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(7),0,1,1,0);
  y_7=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(9),0,1,1,1);
  y_8=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(10),1,0,0,0);
  y_9=fourNandWII(pin(15),pin(14),pin(13),pin(12),pin(11),1,0,0,1);
  if(y_0 == true && y_1 == true && y_2 == true && y_3 == true && y_4 == true && y_5 == true && y_6 == true && y_7 == true && y_8 == true &&y_9 == true){
    show("IC7442");
    while(true){
      ;
    }
  }
}
void IC7450(){
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),0);
  digitalWrite(pin(14),1);
  bool a,b;
  a=andOrInvert(pin(1),pin(13),pin(10),pin(9),pin(8));
  b=andOrInvert(pin(2),pin(3),pin(4),pin(5),pin(6));
  if (a==true && b==true){
    show("IC7450");
    while(true){
      ;
    }
  }
}
void IC7473()
{
  pinMode(pin(4),OUTPUT);
  pinMode(pin(11),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b;
  a=jk_ff_neg_with_invert_clear(pin(14),pin(3),pin(1),pin(2),pin(12),pin(13));
  b=jk_ff_neg_with_invert_clear(pin(7),pin(10),pin(5),pin(6),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7473");
    while(true)
    {
      ;
    }
  }
}
void IC7474()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(2),pin(3),pin(1),pin(4),pin(5),pin(6));
  b=d_pos_trig_ff_with_pre_clr(pin(12),pin(11),pin(13),pin(10),pin(9),pin(8));
  if (a==true && b==true)
  {
    show("IC7474");
    while(true)
    {
      ;
    }
  }
}
void IC7475(){
  pinMode(5,OUTPUT);
  pinMode(12,OUTPUT);
  digitalWrite(5,HIGH);
  digitalWrite(12,LOW);
  bool a,b,c,d;
  a=dLatch(pin(2),pin(13),pin(16),pin(1));
  b=dLatch(pin(3),pin(13),pin(15),pin(14));
  c=dLatch(pin(6),pin(4),pin(10),pin(11));
  d=dLatch(pin(7),pin(4),pin(9),pin(8));
  if (a==true && b==true && c==true && d==true){
    show("IC7475");
    while(true){
      ;
    }
  }
}
void IC7476(){
  pinMode(pin(5),OUTPUT);
  pinMode(pin(13),OUTPUT);
  digitalWrite(pin(5),HIGH);
  digitalWrite(pin(13),LOW);
  bool a,b;
  a=jk_Latch_with_inverted_preset_and_clear(pin(4),pin(16),pin(1),pin(3),pin(2),pin(15),pin(14));
  b=jk_Latch_with_inverted_preset_and_clear(pin(9),pin(12),pin(6),pin(8),pin(7),pin(11),pin(10));
  if(a==true && b==true){
    show("IC7476");
    while(true){
      ;
    }
  }
}
void IC7477(){
  pinMode(pin(11),OUTPUT);
  pinMode(pin(4),OUTPUT);
  digitalWrite(pin(4),HIGH);
  digitalWrite(pin(11),LOW);
  bool a,b,c,d;
  a=DLatch(pin(1),pin(12),pin(14));
  b=DLatch(pin(2),pin(12),pin(13));
  c=DLatch(pin(5),pin(3),pin(9));
  d=DLatch(pin(6),pin(3),pin(8));
  if(a==true && b==true && c==true && d==true){
    show("IC7477");
    while(true){
      ;
    }
  }
}
void IC7486()
{
   pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=xorgate(pin(1),pin(2),pin(3));
  b=xorgate(pin(4),pin(5),pin(6));
  c=xorgate(pin(9),pin(10),pin(8));
  d=xorgate(pin(12),pin(13),pin(11));
  if(a==true && b==true && c==true && d==true)
  {
    show("IC7486");
    while(true)
    {
      ;
    }
  }
}
void IC74133(){
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a;
  a=thirteen_Nand(pin(1),pin(2),pin(3),pin(4),pin(5),pin(6),pin(7),pin(10),pin(11),pin(12),pin(13),pin(14),pin(15),pin(9));
  if (a==true){
    show("IC74133");
    while(true){
      ;
    }
  }
}
void IC4000()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=notgate(pin(8),pin(9));
  if(a==true && b==true && c==true)
  {
    show("IC4000");
    while(true)
    {
      ;
    }
  }
}
void IC4001()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d;
  a=norgate(pin(1),pin(2),pin(3));
  b=norgate(pin(5),pin(6),pin(4));
  c=norgate(pin(8),pin(9),pin(10));
  d=norgate(pin(12),pin(13),pin(11));
  if (a==true && b==true && c==true && d==true)
  {
    show("IC4001");
    while(true)
    {
      ;
    }
  }
}
void IC4002()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournor(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournor(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4002");
    while(true)
    {
      ;
    }
  }
}
void IC4012()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=fournand(pin(2),pin(3),pin(4),pin(5),pin(1));
  b=fournand(pin(9),pin(10),pin(11),pin(12),pin(13));
  if (a==true && b==true)
  {
    show("IC4012");
    while(true)
    {
      ;
    }
  }
}
void IC4013()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b;
  a=d_pos_trig_ff_with_pre_clr(pin(5),pin(3),pin(4),pin(6),pin(1),pin(2));
  b=d_pos_trig_ff_with_pre_clr(pin(9),pin(11),pin(10),pin(8),pin(13),pin(12));
  if (a==true && b==true)
  {
    show("IC4013");
    while(true)
    {
      ;
    }
  }
}
void IC4069()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c,d,e,f;
  a=notgate(pin(1),pin(2));
  b=notgate(pin(3),pin(4));
  c=notgate(pin(5),pin(6));
  d=notgate(pin(9),pin(8));
  e=notgate(pin(11),pin(10));
  f=notgate(pin(13),pin(12));
  if (a==true && b==true && c==true && d==true && e==true && f==true)
  {
    show("IC4069");
    while(true)
    {
      ;
    }
  }
}


void IC4023()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNand(pin(3),pin(4),pin(5),pin(6));
  b=threeNand(pin(11),pin(12),pin(13),pin(10));
  c=threeNand(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4023");
    while(true)
    {
      ;
    }
  }
}
void IC4025()
{
  pinMode(pin(7),OUTPUT);
  pinMode(pin(14),OUTPUT);
  digitalWrite(pin(7),LOW);
  digitalWrite(pin(14),HIGH);
  bool a,b,c;
  a=threeNor(pin(3),pin(4),pin(5),pin(6));
  b=threeNor(pin(11),pin(12),pin(13),pin(10));
  c=threeNor(pin(1),pin(2),pin(8),pin(9));
  if (a==true && b==true && c==true)
  {
    show("IC4025");
    while(true)
    {
      ;
    }
  }
}
void IC4027()
{
  pinMode(pin(8),OUTPUT);
  pinMode(pin(16),OUTPUT);
  digitalWrite(pin(8),LOW);
  digitalWrite(pin(16),HIGH);
  bool a,b;
  a=jk_ff_pos_with_pre_clr(pin(10),pin(11),pin(13),pin(9),pin(12),pin(15),pin(14));
  b=jk_ff_pos_with_pre_clr(pin(6),pin(5),pin(3),pin(7),pin(4),pin(1),pin(2));
  if (a==true && b==true)
  {
    show("IC4027");
    while(true)
    {
      ;
    }
  }
}


int pin(int n)
{
  if(digitalRead(48)==HIGH)
  {
    //16 pins
    n=n+21;
  return n;
  }
  else
  {
    //14 pins
    if (n>7)
    {
      return n+23;
    }
    else
    {
      return n+21;
    }
  }
}
boolean notgate(int inp,int outp)
{
  int flag=0;
  pinMode(inp,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  delay(delayms);
  digitalWrite(inp,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==2)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}


boolean andgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeAnd(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delay(delayms);
         if(digitalRead(otp)==((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean nandgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean threeNand(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i && (bool)j && (bool)k)){
            count++;
         }
         
      }
    }
  }
  if(count==8){
    return true;
  }
  else{
    return false;
  }
}
boolean threeNor(int inp1,int inp2,int inp3,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(otp,INPUT);
  int i,j,k,count=0;
  for(i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for(j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
         digitalWrite(inp3,(bool)k);
         delayMicroseconds(1);
         if(digitalRead(otp)!=((bool)i || (bool)j || (bool)k)){
            count++;
         }
         else{
          return false;
         }
      }
    }
  }
  if(count==8){
    return true;
  }
}
boolean fournand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean andOrInvert(int inp1,int inp2,int inp3,int inp4,int outp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int i,j,k,l,count;
  for (i=0;i<2;i++){
    digitalWrite(inp1,(bool)i);
    for (j=0;j<2;j++){
      digitalWrite(inp2,(bool)j);
      for(k=0;k<2;k++){
        digitalWrite(inp3,(bool)k);
        for(l=0;l<2;l++){
          digitalWrite(inp4,(bool)l);
          delayMicroseconds(1);
          if(digitalRead(outp)!=(((bool)i && (bool)j) || ((bool)j && (bool)k))){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean eightNand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  delayMicroseconds(1);
                  if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h)){
                    count++;
                  }
                  else {
                    return false;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==256){
    return true;
  }
  else{
    return false;
  }
}
boolean thirteen_Nand(int inp1,int inp2,int inp3,int inp4,int inp5,int inp6,int inp7,int inp8,int inp9,int inp10,int inp11,int inp12,int inp13,int otp){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(inp5,OUTPUT);
  pinMode(inp6,OUTPUT);
  pinMode(inp7,OUTPUT);
  pinMode(inp8,OUTPUT);
  pinMode(inp9,OUTPUT);
  pinMode(inp10,OUTPUT);
  pinMode(inp11,OUTPUT);
  pinMode(inp12,OUTPUT);
  pinMode(inp13,OUTPUT);
  pinMode(otp,INPUT);
  int a,b,c,d,e,f,g,h,i,j,k,l,m,count=0;
  for(a=0;a<2;a++){
    digitalWrite(inp1,(bool)a);
    for (b=0;b<2;b++){
      digitalWrite(inp2,(bool)b);
      for (c=0;c<2;c++){
        digitalWrite(inp3,(bool)c);
        for(d=0;d<2;d++){
          digitalWrite(inp4,(bool)d);
          for(e=0;e<2;e++){
            digitalWrite(inp5,(bool)e);
            for(f=0;f<2;f++){
              digitalWrite(inp6,(bool)f);
              for(g=0;g<2;g++){
                digitalWrite(inp7,(bool)g);
                for(h=0;h<2;h++){
                  digitalWrite(inp8,(bool)h);
                  for(a=0;a<2;a++){
                    digitalWrite(inp9,(bool)i);
                    for (b=0;b<2;b++){
                      digitalWrite(inp10,(bool)j);
                      for (c=0;c<2;c++){
                        digitalWrite(inp11,(bool)k);
                        for(d=0;d<2;d++){
                          digitalWrite(inp12,(bool)l);
                            for(e=0;e<2;e++){
                              digitalWrite(inp13,(bool)m);
                              delayMicroseconds(1);
                              if(digitalRead(otp)!=((bool)a && (bool)b && (bool)c && (bool)d && (bool)e && (bool)f && (bool)g && (bool)h && (bool)i && (bool)j && (bool)k && (bool)l && (bool)m)){
                                count++;
                              }
                              else {
                                return false;  
                              }
                            }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  if(count==8192){
    return true;
  }
  else{
    return false;
  }
}

boolean fouror(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean orgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean norgate(int inp1,int inp2,int outp)
{
  int flag=0;
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  delay(delayms);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if(flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}

boolean fourand(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=((bool) i&&(bool) j&&(bool) k&&(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }


  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
  
}
boolean fourAndWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)==((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fourNandWII(int inp1,int inp2,int inp3,int inp4,int outp,bool a,bool b,bool c,bool d){
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  int count=0;
  int i,j,k,l;
  for (i=0;i<2;i++){
    if(a==true){
      digitalWrite(inp1,(bool)i);
    }
    else{
      digitalWrite(inp1,!(bool)i);
    }
    for(j=0;j<2;j++){
      if(b==true){
        digitalWrite(inp2,(bool)j);
      }
      else{
        digitalWrite(inp2,!(bool)j);
      }
      for(k=0;k<2;k++){
        if(c==true){
          digitalWrite(inp3,(bool)k);
        }
        else{
          digitalWrite(inp3,!(bool)k);
        }
        for(l=0;l<2;l++){
          if(d==true){
            digitalWrite(inp4,(bool)l);
          }
          else{
            digitalWrite(inp4,!(bool)l);
          }
          delayMicroseconds(1);
          if(digitalRead(outp)!=((bool)i && (bool)j && (bool)k && (bool)l)){
            count++;
          }
          else{
            return false;
          }
        }
      }
    }
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean fournor(int inp1,int inp2,int inp3,int inp4,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(inp3,OUTPUT);
  pinMode(inp4,OUTPUT);
  pinMode(outp,INPUT);
  
  int flag=0;
  int i,j,k,l;
  bool v;
  for (i=0;i<=1;i++)
  {
    for (j=0;j<=1;j++)
    {
      for(k=0;k<=1;k++)
      {
        for(l=0;l<=1;l++)
        {
          v=!((bool) i||(bool) j||(bool) k||(bool) l);
          digitalWrite(inp1,(bool) i);
          digitalWrite(inp2,(bool) j);
          digitalWrite(inp3,(bool) k);
          digitalWrite(inp4,(bool) l);
          delay(delayms);
          if (digitalRead(outp)==v)
          {
            flag=flag+1;
          }

        }
      }
    }
  }
  

  if (flag==16)
  {
    return true;
  }
  else
  {
    return false;
  }
}
void clock(int n)
{
  pinMode(n,OUTPUT);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  digitalWrite(n,HIGH);
  delayMicroseconds(10);
  digitalWrite(n,LOW);
  delayMicroseconds(10);
  return;
}
boolean jk_ff_pos_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_neg_with_invert_clear(int j,int k,int clk,int clr,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT); 
  int count = 0,a,b;
  digitalWrite(clr,HIGH);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++; 
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  digitalWrite(j,LOW);
  digitalWrite(k,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(clr,LOW);
  delayMicroseconds(10);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
       if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
       }
       else{
        return false;
       }
    }
  }
  if(count==10){
    return true;
  }
  else{
    return false;
  }
}
boolean dLatch(int d,int clk,int q,int q_){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i && digitalRead(q_)!=(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean DLatch(int d,int clk,int q){
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(q,INPUT);
  int i,count=0;
  for(i=0;i<2;i++){
    digitalWrite(d,(bool)i);
    clock(clk);
    if(digitalRead(q)==(bool)i){
      count++;
    }
    else{
      return false;
    }
  }
  if(count==2){
    return true;
  }
  else{
    return false;
  }
}
boolean d_pos_trig_ff_with_pre_clr(int d,int clk,int clr,int pre,int q,int q_)
{
  pinMode(d,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  int flag=0;
  int i;
  pinMode(q,INPUT);
  pinMode(q_,INPUT);
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(d,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
 if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(i=0;i<=1;i++)
  {
    digitalWrite(d,(bool) i);
    if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
    {
      flag=flag+1;
    }
  }
  if (flag==10)
  {
    return true;
  }
  else
  {
    return false;
  }
}

boolean jk_Latch_with_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_Latch_with_inverted_preset_and_clear(int j,int k,int clk,int clr,int pre,int q,int q_){
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,count=0;
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
   for(a=0;a<2;a++){
    digitalWrite(j,(bool)a);
    for(b=0;b<2;b++){
      digitalWrite(k,(bool)b);
      clock(clk);
      if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
        count++;
      }
      else{
        return false;
      }
    }
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,0);
  digitalWrite(k,1);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==LOW && digitalRead(q_)==HIGH){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,1);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  digitalWrite(j,0);
  digitalWrite(k,0);
  clock(clk);
  if(digitalRead(q)==HIGH && digitalRead(q_)==LOW){
    count++;
  }
  else{
    return false;
  }
  if(count==16){
    return true;
  }
  else{
    return false;
  }
}
boolean jk_ff_pos_with_pre_clr(int j,int k,int clk,int pre,int clr,int q,int q_)
{
  pinMode(j,OUTPUT);
  pinMode(k,OUTPUT);
  pinMode(clk,OUTPUT);
  pinMode(clr,OUTPUT);
  pinMode(pre,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  pinMode(q,OUTPUT);
  pinMode(q_,OUTPUT);
  int a,b,flag=0;
  digitalWrite(pre,LOW);
  digitalWrite(clr,LOW);
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,HIGH);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
 digitalWrite(k,HIGH);
 digitalWrite(clk,HIGH);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(clk,LOW);
 delayMicroseconds(10);
 if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
 digitalWrite(j,LOW);
  digitalWrite(k,LOW);
  digitalWrite(clk,HIGH);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(clk,LOW);
  delayMicroseconds(10);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,LOW);
  if (digitalRead(q)==HIGH && digitalRead(q_)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(pre,LOW);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==LOW && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(pre,HIGH);
  digitalWrite(clr,HIGH);
  if (digitalRead(q)==HIGH && digitalRead(q_)==HIGH)
  {
    flag=flag+1;
  }
  if (flag==13)
  {
    return true;
  }
  else
  {
    return false;
  }
}
boolean xorgate(int inp1,int inp2,int outp)
{
  pinMode(inp1,OUTPUT);
  pinMode(inp2,OUTPUT);
  pinMode(outp,INPUT);
  int flag=0;
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,LOW);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,LOW);
  if (digitalRead(outp)==HIGH)
  {
    flag=flag+1;
  }
  digitalWrite(inp1,HIGH);
  digitalWrite(inp2,HIGH);
  if (digitalRead(outp)==LOW)
  {
    flag=flag+1;
  }
  if (flag==4)
  {
    return true;
  }
  else
  {
    return false;
  }
}

You need to have a 16 pin ZIF socket connected to the correct Arduino digital pins in order to connect the IC under test.

I've worked out the pins used from the following snippet of the code:

int pin(int n)
{
  if(digitalRead(48)==HIGH)
  {
    //16 pins
    n=n+21;
  return n;
  }
  else
  {
    //14 pins
    if (n>7)
    {
      return n+23;
    }
    else
    {
      return n+21;
    }
  }
}

You need to connect the 16 pin ZIF socket as follows:
IC Tester ZIF Socket - 16 pin IC

If the IC under test is a 14 pin one, you fit the IC in the socket as follows:
IC Tester ZIF Socket - 14 pin IC

You need to have a switch connected to Arduino pin D48 to select how many pins your IC has.
LOW for 14 pins, HIGH for 16 pins.

 // put your main code here, to run repeatedly:
  //14 pin ICs
  if (digitalRead(48)==LOW)

There may be other things you need that I haven't yet discovered.

3 Likes

You will get "NOT_found" unless you have an IC under test connected in your simulation.

See the information in post #12 for connection details.

Hi sorry i am very new to this, if i am not going to use a switch, instead i just want to test for pin14 ics , how am i suppose to change the code.
And instead of testing for all the possible ics until it says found is it possible that i add a serial.available in there so i can type it in my serial monitor to specify the ICS that i am testing for?

just make pin 48 low all the time, by connecting it to GND.

Assuming the code works, It might be best to leave it as it is, to prevent breaking it.
However it might be possible to remove all the parts that involve 16 pin ICs.

That might be possible.
Would require some rewriting of the code.
Should we see if it works correctly as currently implemented before making changes.

ok so i connected the pin48 to ground but when i run the code, nothing shows up in the serial monitor, i have doubled check the physical connections and everything

Something that I have just realised, is that the Arduino pins that are connected to the ZIF socked are continuously being reconfigured as INPUT or OUTPUT during testing.

This means that there are going to be times when an Arduino pin configured as an output is connected to an output on the IC under test.

The Arduino pin and the pin of the IC under test might want to be in opposite states, causing a "fight" between the outputs concerned.

In order to prevent damage to either the Arduino or the IC under test, I suggest that a resistor of say 1kΩ is connected between the Arduino pins and the ZIF socket.

As well as the connections that I have mentioned, there is also a push button that is required, connected to pin 5.

qubits-us has this shown in his simulation in post #9 - the simulation does nothing until you push this button.

I assume that it is there so that there are no voltages on the pins of the ZIF socket whilst you are fitting the IC under test.

Look at the first line of loop(), it only performs testing whilst this pin is high:

void loop() 
{
  while(digitalRead(5)==HIGH)
  {

ok i took some part of the code just to test 1 ic, but it does not work.
i changed the pin assignment to work for my circuit as well

int delayms = 10; // Delay in milliseconds for gate simulation

boolean nandgate(int inp1, int inp2, int outp)
{
  pinMode(inp1, OUTPUT);
  pinMode(inp2, OUTPUT);
  pinMode(outp, INPUT);
  int flag = 0;

  digitalWrite(inp1, HIGH);
  digitalWrite(inp2, HIGH);
  delay(delayms);
  if (digitalRead(outp) == LOW)
  {
    flag = flag + 1;
  }

  digitalWrite(inp1, HIGH);
  digitalWrite(inp2, LOW);
  delay(delayms);
  if (digitalRead(outp) == HIGH)
  {
    flag = flag + 1;
  }

  digitalWrite(inp1, LOW);
  digitalWrite(inp2, HIGH);
  delay(delayms);
  if (digitalRead(outp) == HIGH)
  {
    flag = flag + 1;
  }

  digitalWrite(inp1, LOW);
  digitalWrite(inp2, LOW);
  delay(delayms);
  if (digitalRead(outp) == HIGH)
  {
    flag = flag + 1;
  }

  if (flag == 4)
  {
    return true;
  }
  else
  {
    return false;
  }
}

void IC7400()
{
  bool a, b, c, d;
  a = nandgate(30, 31, 32);
  b = nandgate(33, 34, 35);
  c = nandgate(37, 38, 36);
  d = nandgate(40, 41, 39);

  if (a == true && b == true && c == true && d == true)
  {
    Serial.println("IC7400 passed");
  }
  else
  {
    Serial.println("IC7400 failed");
  }
}

void setup()
{
  Serial.begin(9600); // Initialize serial communication
  Serial.println("Enter IC number (e.g., 7400) to test:");
}

void loop()
{
  if (Serial.available() > 0)
  {
    String input = Serial.readStringUntil('\n'); // Read user input until newline
    input.trim(); // Remove leading/trailing whitespace

    if (input == "7400")
    {
      IC7400(); // Call the IC7400() function
    }
    else
    {
      Serial.println("Invalid IC number");
    }
  }
}

This value is too high for standard TTL chips (SN74xx). I'd suggest 470 Ohm instead..

1 Like