#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //SDA-A4, SCL A5//
int button1 = 2;
int button2 = 3;
int LED1 = 4; //input LED-1 for button-1
int LED2 = 5; //input LED-2 for button-2
int LEDOUT = 6;
int button3 = 7;
bool A;
bool B;
bool but3;
int x = 0;
void setup() {
lcd.init();
lcd.backlight();
pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
pinMode(button3,INPUT_PULLUP);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LEDOUT,OUTPUT);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("S.Sinha");
lcd.setCursor(0,1);
lcd.print("Logic Gates");
delay(3000);
}
void loop() {
lcd.setCursor(5,0); lcd.print(" A B Q-ot");
A = !digitalRead(button1);
B = !digitalRead(button2);
but3 = !digitalRead(button3);
if (A==1){digitalWrite(LED1,HIGH);lcd.setCursor(6,1); lcd.print("1");}
else {digitalWrite(LED1,LOW);lcd.setCursor(6,1); lcd.print("0");}
if (B==1 && x != 14){digitalWrite(LED2,HIGH);lcd.setCursor(9,1); lcd.print("1");}
else {digitalWrite(LED2,LOW);lcd.setCursor(9,1); lcd.print("0");}
if(but3==1){
x=x+1;
delay(500);
}
if(x==0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("AND");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if (x==1){
if(A&B==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else{ digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}}
else if(x==2){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("OR");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==3){
if((A|B)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}
}
else if(x==4){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("NAND");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==5){
if(!(A&B)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}
}
else if(x==6){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("NOR");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==7){
if(!(A|B)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}
}
else if(x==8){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("XOR");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==9){
if((A^B)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}
}
else if(x==10){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("XNOR");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==11){
if(!(A^B)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");}
}
else if(x==12){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("NOT");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==13){
if((!A)==1){digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");lcd.setCursor(9,1); lcd.print("x");}
else {digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");lcd.setCursor(9,1); lcd.print("x");}
}
else if(x==14){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("YES");
lcd.setCursor(0,1);
lcd.print("Gate");
x=x+1;}
else if(x==15){
if((!A)==1){digitalWrite(LEDOUT,LOW);lcd.setCursor(12,1); lcd.print("0");lcd.setCursor(9,1); lcd.print("x");}
else {digitalWrite(LEDOUT,HIGH);lcd.setCursor(12,1); lcd.print("1");lcd.setCursor(9,1); lcd.print("x");}
}
else{
x=0;
}
}