/*
* Diseñado por Juan David Gallego García y Juan Esteban Pulgarín Arango
* El programa puede ser descargado y modificado
*
* 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
*
*¨Pines para operaciones lógicas
* A2(c) A3(d) NAND NOR NOT(A2) XOR
* 0 0 1 1 1 0
* 0 1 1 0 1 1
* 1 0 1 0 0 1
* 1 1 0 0 0 0
*/
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
}
}
}