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.
/*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);
}
Add a video of the output (know more)
https://wokwi.com/projects/442525262015655937