All submissions

Logic Gate Implementation

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

 

 

Submit Your Solution

Note: Once submitted, your solution goes public, helping others learn from your approach!