2.- DIGITAL: PUERTAS LÓGICAS

PUERTAS LÓGICAS 







 PUERTA AND
Vamos a simular dos entradas lógicas (“1” ó “0”) con dos pulsadores, (pueden ser conmutadores). En este ejemplo usaremos la función AND de manera que, según el estado de las 2 entradas, obtendremos una señal de salida (“1” ó “0”) conforme a la tabla de verdad de la operación.

Utiizando una protoboarda monta las entradas en los pines digitales 1 y 2. Y el led de salida en el pin13 que se encenderá o apagará según  la lógica de una puerta AND respecto a las dos variables de entrada (dos pulsadores).





CÓDIGO:

/*
  Boole
  Función AND con 2 variables
 */

int var1 = 7;   //Pin de entrada del pulsador 1
int var2 = 2;   //Pin de entrada del pulsador 2
int led = 5;    //Pin de salida para el led(rojo)
int estado1 = 0;    //Para almacenar el estado de la variable1
int estado2 = 0;    //Para almacenar el estado de la variable2
int resultado = 0;  //Para almacenar el resultado     

void setup() {
  pinMode(var1, INPUT);     //Iniciliza el pin de entrada 1 como salida
  pinMode(var2, INPUT);     //Iniciliza el pin de entrada 2 como salida 
  pinMode(led, OUTPUT);     //Iniciliza el pin del led como salida
}

void loop(){
  estado1 = digitalRead(var1);  //Lee el estado del botón y lo almacena
  estado2 = digitalRead(var2);  //Lee el estado del botón y lo almacena
  resultado = (estado1 && estado2); //Función AND con los dos estados
  digitalWrite(led, resultado);    //Escribimos el resultado en el led
}



EJEMPLO DE "UN MONTACARGAS"


Tenemos un elevador neumático que se puede controlar desde 2 habitaciones contiguas del taller. Para que el elevador funcione debe estar accionado cualquiera de los 2 pulsadores existentes, pero por seguridad no funcionará si dos operarios la accionan simultáneamente.


Identificar las variables de entrada y función de salida:

Entradas:
  • A: un pulsador
  • B: un pulsador
Salida o valor de la función:
  • Motor que acciona el compresor del elevador


TABLA DE VERDAD:

Función Canónica: M(FC1) = NOT(A) * B + A * NOT(B)

Puertas Lógicas:
  •  2 puertas NOT
  • 2 puertas AND
  • 1 puerta OR

CÓDIGO:

 /*
  Implementación de Función lógica
 */

int var1 = 1;   //Pin de entrada del pulsador 1
int var2 = 2;   //Pin de entrada del pulsador 1
int led = 5;    //Pin de salida para el led(rojo)

int A = 0;    //Para almacenar el estado de la variable1
int B = 0;    //Para almacenar el estado de la variable2
int resultado = 0;  //Para almacenar el resultado    

void setup() {
  pinMode(var1, INPUT);     //Init pin de entrada 1 como salida
  pinMode(var2, INPUT);     //Init pin de entrada 2 como salida
  pinMode(led, OUTPUT);     //Iniciliza el pin del led como salida
}

void loop(){
  A = digitalRead(var1);  //Lee el estado 1 y lo almacena
  B = digitalRead(var2);  //Lee el estado 2 y lo almacena
  //Función Lógica ------  R=(â*b)+(a*^b)
  resultado = (!A && B) || (A && !B);
  digitalWrite(led, resultado);    //Escribimos el resultado en el led
}