Simulatore di porte logiche

Lo scopo è di creare un simulatore di porte logiche.
Per cambiare la porta logica si gira il potenziometro,
i due pulsanti servono come stati delle entrate della porta selezionata,
i LED segnalano gli stati delle entrate e il risultato della porta.

Componenti richiesti

Circuito

Ecco il circuito sulla breadboard

Ecco una foto del circuito

Codici

AND

if(sensorValue<=146){
      Serial.println("AND");
      if(buttonState1==true&&buttonState2==true){
            digitalWrite(6, HIGH);
        }
        else{
            digitalWrite(6, LOW);
          }
    }

NAND

else if(sensorValue>146&&sensorValue<=292){
  Serial.println("NAND");
  if(buttonState1==false||buttonState2==false){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
      }
}

OR

else if(sensorValue>292&&sensorValue<=438){
  Serial.println("OR");
  if(buttonState1==true||buttonState2==true){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
      }
}

NOR

else if(sensorValue>438&&sensorValue<=584){
  Serial.println("NOR");
  if(buttonState1==false&&buttonState2==false){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
      }
}

XOR

else if(sensorValue>584&&sensorValue<=730){
  Serial.println("XOR");
  if((buttonState1==true&&buttonState2==false)||(buttonState2==true&&buttonState1==false)){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
      }
}

XNOR

else if(sensorValue>730&&sensorValue<=876){
  Serial.println("XNOR");
  if((buttonState1==false&&buttonState2==false)||(buttonState2==true&&buttonState1==true)){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
      }
}

NOT

else{
  Serial.println("NOT");
    analogWrite(5, 0);
    if(buttonState1==false){
        digitalWrite(6, HIGH);
    }
    else{
        digitalWrite(6, LOW);
    }
  }

Download del codice   Visualizza il codice