ENTRADA SALIDA
A B NAN NO XO NOT NOT
(A2) (A3) D R R (A) (B)
0 0 1 1 0 1 1
0 1 1 0 1 1 0
1 0 1 0 1 0 1
1 1 0 0 0 0 0
A B COMPUER
(A0) (A1) TA
0 0 NAND
0 1 NOR
1 0 NOT
1 1 XOR
Montaje
Código
/*
*
* LOGICA COMBINACIONAL PARA NAND NOR NOT y XOR
* Pines para seleccionar tipo de compuerta
* A0(a) A1(b)
* 0 0 NAND
* 0 1 NOR
* 1 0 NOT
* 1 1 XOR
*
void setup() {
/*Salida para la combinación lógica*/
pinMode(2,OUTPUT); //Salida del led
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
digitalWrite(2,HIGH); //Se configura led como apagado
}
void loop() {
bool a = !digitalRead(A0);
bool b = !digitalRead(A1);
bool c = !digitalRead(A2);
bool d = !digitalRead(A3);
if(!a&&!b){//Compuerta NAND
if(!(c&&d)){
digitalWrite(2,LOW);//Al menos una de las entradas c y d están en LOW, Prende led
}else{
digitalWrite(2,HIGH);//En caso de que las dos estén en HIGH, apaga el LED
}
}else if(!a&&b){//Compuerta NOR
if(!(c||d)){
digitalWrite(2,LOW);//Entradas c y d están en LOW Prende led
}else{
digitalWrite(2,HIGH);//En caso de que al menos de las dos estén en HIGH apaga el
LED
}
}else if(a&&!b){//Compuerta NOT
if(!c){
digitalWrite(2,LOW);//Entrada c está en LOW Prende led
}else{
digitalWrite(2,HIGH);//Entrada c está en HIGH Apaga led
}
}else{//Compuerta XOR
if(c^d){
digitalWrite(2,LOW); //Cuando c y d son diferentes enciende led
}else{
digitalWrite(2,HIGH); //Cuando c y d son iguales apaga led
}
}
}