10. Logic Gate Implementation

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

I just coded the logic in the Arduino IDE and use If else statement to implement the different logic like OR, AND, NAND, and NOR. Then in order to switch from one logic to another I used another switch that will trigger the switch from 1 logic to another.

 
 

 

 

 

Code

/*Paste your code here*/

const int LogicSwitch = 7;   
int mode = 0;

void setup() {
  pinMode(LogicSwitch, INPUT_PULLUP); 
  Serial.begin(9600);

  pinMode(12, INPUT_PULLUP);
  pinMode(13, INPUT_PULLUP); 
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

}

void loop() {
  int reading = digitalRead(LogicSwitch);
  delay(350);
 
 if (reading != 1){
  mode += 1;
  delay(1000);
  Serial.print("switching mode:");
  Serial.print(mode);
 }

if (mode > 4){
  mode = 0;
}

 int IN1 = digitalRead(12);
 int IN2 = digitalRead(13);

  
  switch (mode) {
    case 1:
      
      Serial.println("OR LOGIC");
      if (IN1 == 0 || IN2 == 0){
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
      } else {
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
      }
      break;

    case 2:
      
      Serial.println("AND LOGIC");
      if (IN1 == 0 && IN2 == 0){
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
      } else {
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
      }
      break;

    case 3:
      
      Serial.println("NOR LOGIC");
      if (IN1 == 1 && IN2 == 1){
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
      } else {
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
      }
      break;

    case 4:
      
      Serial.println("NAND LOGIC");
      if (IN1 == 0 && IN2 == 0){
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
      } else {
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
      }
      break;
  }

  delay(200); 
}

 

 

 

Output

Video

Add a video of the output (know more)

https://wokwi.com/projects/442525262015655937

 

 

Was this helpful?
Upvote
Downvote