Lógica y sentido común son usados a diario, ya sea por sistemas electrónicos o personas. en este articulo veremos la lógica and, lógica or, lógica xor, lógica secuencial y cómo podemos ejecutar estas instrucciones en la placa Arduino uno, mismo no siendo programador, es bueno conocer los elementos que influencian la lógica binaria, pues tiene mucho a ver con las decisiones que tomamos en nuestro diario vivir. Casi todo equipo electrónico usa lógica digital para su funcionamiento y operación. de ahí la importancia de conocer este tema.

La electrónica moderna y sus resultados como: celulares, computadores, televisores, equipos industriales, médicos, etc., no serían posibles sin el uso de los circuitos lógicos digitales y lógica aplicada en ellos. La lógica y el sentido común tienen mucho a ver, pues se trata de que las cosas o circuitos funcionen o se llegue a un resultado aceptable.

Las principales instrucciones lógicas son:

OR

AND

XOR

NOT

En la Figura 1 podemos ver la placa de Arduino Uno y en la Figura 2 el software para el desarrollo de proyectos, el cual puede ser bajado de la página web de Arduino. En la Figura 3 mostramos la similitud o igualdad que hay entre la tarjeta de Arduino Uno y la mente humana, pues los 2 permiten hacer operaciones lógicas.

 

Figura 1. Targeta de Arduino Uno
Figura 1. Targeta de Arduino Uno

 

 

Figura 2. IDE de Arduino Uno
Figura 2. IDE de Arduino Uno

 

 

Figura 3. Igualdad entre Arduino Uno y la logica
Figura 3. Igualdad entre Arduino Uno y la logica

 

Las operaciones lógicas que hace el cerebro pueden ser consientes o subconsciente. Cuando consientes, nosotros nos damos cuenta de la operación, acción o decisión que estamos haciendo. Cuando subconsciente, nosotros no nos damos cuenta de ello, pero mismo así lo ejecutamos. La lógica y el sentido común o modo de pensar de cada persona, tienen mucha similitud. Por eso el parecido entre una tarjeta como Arduino y la mente o celebro humano, pues las 2 pueden realizar procesos lógicos. En electrónica se realizan muchas operaciones lógicas, a tal punto que todos los sistemas electrónicos modernos la utilizan. En este artículo estudiaremos estas operaciones o instrucciones.

Las operaciones OR, AND, XOR y NOT, son del tipo bit a bit o bit-wise. Esto quiere decir que estas operaciones lógicas se ejecutan sobre los bits individuales de los operandos.

 

LA INSTRUCCIÓN LOGICA OR (||)

La instrucción lógica OR, sigue el principio de funcionamiento del circuito mostrado en la Figura 4.

 

Figura 4. Circuito electrico para logica OR
Figura 4. Circuito electrico para logica OR

 

 

Podemos notar que cerrando el circuito con cualquiera de los 2 interruptores, la lámpara va a encender. Mismo si los dos interruptores están cerrados, la lámpara encenderá. Eso es la lógica OR. La única manera de que la lámpara no prenda, es que los 2 interruptores estén abiertos. Así, se han creado tablas de verdad para cada instrucción lógica. En la Figura 5 podemos observar la tabla de verdad para la instrucción lógica OR.

 

Figura 5. Tabla de Verdad Logica OR
Figura 5. Tabla de Verdad Logica OR

 

 

Esta tabla simplifica lo dicho anteriormente acerca de la lógica OR. La Figura 6 muestra el diagrama esquemático usado para la lógica OR.

 

Figura 6. Diagrama esquematico para logica OR
Figura 6. Diagrama esquematico para logica OR

 

 

De la vida práctica podemos citar un ejemplo donde usamos la lógica OR. Por ejemplo, cuando queremos ir del trabajo a nuestra casa. Tenemos varias alternativas, como:

Se puede ir caminando.

Se puede ir de bicicleta.

Se puede ir de motocicleta.

Se puede ir en bus u ómnibus.

Se puede ir de metro.

Se puede ir de taxi.

Se puede ir un carro.

 

Cualquiera de las alternativas anteriores nos llevara a casa y así lograr el objetivo de llegar a ella. Por cada posibilidad se puede hacer una entrada en una lógica OR. La Figura 7 muestra una lógica OR de 7 entradas.

 

Figura 7. Logica OR para ir del trabajo a casa
Figura 7. Logica OR para ir del trabajo a casa

 

 

Se pueden crear compuertas lógicas OR de la cantidad de entradas que se necesiten. El celebro usa este tipo de lógica prácticamente a diario y aunque no nos demos cuenta o no seamos conscientes de ello, el cerebro la usa. Trate de analizar los actos que hacemos o decisiones que tomamos y podemos observar que siempre usamos este tipo de lógica.

El símbolo usado en lenguaje C/C++ para la lógica OR, es la barra vertical (||). En la tarjeta Arduino Uno, normalmente se trabaja a nivel de byte, es decir 8 bits. La Figura 8 muestra un byte.

 

Figura 8. Un Byte
Figura 8. Un Byte

 

 Observemos que hay 8 bits. Cuando ejecutamos una instrucción OR a nivel byte, todos los 8 bits dan el resultado al mismo tiempo, pero se mantiene la individualidad de cada bit; es decir, el bit 0 de un byte con el bit 0 del otro byte, el bit 1 de un byte con el bit 1 del otro byte, el bit 2 de un byte con el bit 2 del otro byte y así sucesivamente. En la Figura 9 podemos observar el resultado de la lógica OR a nivel de byte.

 

Figura 9. Logica OR en un Byte
Figura 9. Logica OR en un Byte

 

 

El programa de la Figura 9, sería el siguiente:

 

byte operando1 = B01011000;

byte operando2 = B11011011;

byte resultado = 0;

void setup() {

   }

 

void loop() {

   resultado = operando1 || operando2;

}

 

Después de ejecutar el programa resultado aparecerá con el valor binario B11011011. Pruebe con diferentes valores y observe los resultados.

La Figura 10 muestra otro ejemplo de lógica OR, pero en este caso los valores son enteros (unsigned int).

 

Figura 10. Logica OR en un Entero sin signo
Figura 10. Logica OR en un Entero sin signo

 

 

En Arduino Uno los tipos de datos int son formados por 2 bytes. El programa seria el siguiente:

unsigned int operando1 = B0000000001011100;

unsigned int operando2 = B0000000001100101;

unsigned int = 0;

 

void setup() {

}

 

void loop() {

   resultado = operando1 || operando2;

}

 

Después de ejecutar el programa resultado aparecerá con el valor binario B0000000001111101. Pruebe con diferentes valores y observe los resultados.

La lógica OR la podemos usar en una alarma para casa. Podemos conectar puertas y ventanas a las entradas lógicas de la placa de un microcontrolador y testar si alguna de ellas fue activada. Vea la Figura 11.

 

Figura 11. Logica OR para Alarma
Figura 11. Logica OR para Alarma

 

 

LA INSTRUCCIÓN LOGICA AND (&&).

La Figura 12 muestra el circuito eléctrico que representa la instrucción lógica AND. Observemos que solamente cuando los 2 interruptores están cerrados, la lámpara encenderá.

 

Figura 12. Circuito electrico para logica AND
Figura 12. Circuito electrico para logica AND

 

 

Casos contrarios la lámpara no encenderá. Es como si dijéramos: “La lámpara prende, solo si el interruptor A y el interruptor B, están cerrados”. La Figura 13 muestra la tabla de verdad para la lógica AND.

 

Figura 13. Tabla de Verdad Logica AND
Figura 13. Tabla de Verdad Logica AND

 

 

La Figura 14 muestra el símbolo de lógica AND y la Figura 15 muestra algunos ejemplos de esta lógica.

 

Figura 14. Diagrama esquematico para logica AND
Figura 14. Diagrama esquematico para logica AND

 

 

 

Figura 15. Ejemplo de logica AND
Figura 15. Ejemplo de logica AND

 

 

En la vida diaria, también usamos mucho esta lógica AND. Por ejemplo, cuando vamos a sacar dinero de un cajero automático, es necesario tener el cartón o tarjeta que permita hacer el débito de la cuenta y también tener la clave. Si falta alguno de estos dos ítems, no podemos sacar el dinero.

Otro ejemplo, donde es necesario tener varios ítems para llegar a nuestro objetivo puede ser cuando queremos preparar por ejemplo una torta o ponqué. Se necesita tener todos los ingredientes, un recipiente donde colocar ellos y un horno. La Figura 16 muestra este ejemplo.

 

Figura 16. Ejemplo para logica AND
Figura 16. Ejemplo para logica AND

 

En electrónica esta lógica es muy usada. Por ejemplo en la alarma de una casa, cuando queremos deshabilitar la alarma. Vea la Figura 17.

 

 

Figura 17. Logica AND para Alarma
Figura 17. Logica AND para Alarma

 

 

Mismo que se disparen los sensores, la alarma no sonora porque uno de los pines de entrada de la lógica AND está a nivel bajo (0 voltios)

El símbolo usado en lenguaje C/C++ para la lógica AND, es el símbolo &. Veamos el siguiente programa:

 

byte operando1 = B01011000;

byte operando2 = B11011011;

byte resultado = 0;



void setup() {

}



void loop() {

   resultado = operando1 & operando2;

}

 

 Despues de ejecutar el programa, la variable resultado estará con el valor B01011000. Observe la Figura 18.

 

Figura 18. Logica AND en un Byte.
Figura 18. Logica AND en un Byte.

 

 

El siguiente programa usa enteros sin signo para ejecutar la instrucción AND:

 

unsigned int operando1 = B0000000001011100;

unsigned int operando2 = B0000000001100101;

unsigned int = 0;



void setup() {

}



void loop() {

   resultado = operando1 & operando2;

}

 

Después de ejecutar el programa resultado aparecerá con el valor binario B0000000001000100 . Observe la Figura 19. Pruebe con diferentes valores y observe los resultados.

 

Figura 19. Logica AND en un Entero sin signo
Figura 19. Logica AND en un Entero sin signo

 

 

LA INSTRUCCIÓN LOGICA XOR (^).

La lógica XOR es también conocida como OR ESCLUSIVA, es decir que solamente cuando una de las entradas está a nivel alto (5 Voltios), la salida también estará a nivel alto. Vea la tabla de verdad en la Figura 20.

 

Figura 20. Tabla de Verdad XOR
Figura 20. Tabla de Verdad XOR

 

 

Si las 2 entradas están a nivel alto, la salida estará a nivel bajo. También, si las 2 entradas están a nivel bajo, la salida estará a nivel bajo. El diagrama esquemático para la lógica XOR se puede observar en la Figura 21.

 

Figura 21. Diagrama esquematico para logica XOR
Figura 21. Diagrama esquematico para logica XOR

 

 

El símbolo usado para representar la instrucción XOR es el símbolo de intercalación (^).

Un ejemplo de XOR se puede dar cuando una persona quiere casarse o formar familia, pero se tienen 2 enamoradas. Siendo así, se puede casar, si escoge una de las enamoradas, pero no se puede casar, con las 2 enamoradas. Así, en muchas cosas o actitudes humanas es posible ver el uso de lógica XOR.

En la Figura 22 podemos ver un ejemplo de XOR a nivel de byte.

 

Figura 22. Logica XOR en un Byte
Figura 22. Logica XOR en un Byte

 

 

Veamos el siguiente programa:

 

byte operando1 = B01011000;

byte operando2 = B11011011;

byte resultado = 0;



void setup() {

}



void loop() {

   resultado = operando1 ^ operando2;

}

 

Después de ejecutar el programa, la variable resultado estará con el valorB10000011 .

El siguiente programa usa enteros sin signo para ejecutar la instrucción XOR:

 

unsigned int operando1 = B0000 0000 0101 1100;

unsigned int operando2 = B0000 0000 0110 0101;

unsigned int = 0;



void setup() {

}



void loop() {

   resultado = operando1 ^ operando2;

}

 

Después de ejecutar el programa resultado aparecerá con el valor binario B0000000000111001 . Observe la Figura 23. Pruebe con diferentes valores y observe los resultados.

 

Figura 23. Logica XOR en un Entero sin signo
Figura 23. Logica XOR en un Entero sin signo

 

 

LA INSTRUCCIÓN LOGICA NOT (~).

La instrucción lógico NOT invierte los bits de un byte, es decir si el bit tiene un nivel bajo (0 voltios) es pasado para nivel alto (1 voltio) y si el bit tiene un nivel alto, el bit es cambiado para nivel bajo. La Figura 24 muestra el diagrama esquemático para la lógica NOT.

 

Figura 24. Diagrama esquematico para logica NOT
Figura 24. Diagrama esquematico para logica NOT

 

 

La Figura 25 muestra la tabla de verdad para la lógica NOT. Esta operación es de tipo unitaria, es decir que se aplica sobre una variable.

 

Figura 25. Tabla de Verdad Logica NOT
Figura 25. Tabla de Verdad Logica NOT

 

 

El símbolo usado en lenguaje C/C++ para la lógica NOT, es el símbolo ~.Veamos el siguiente programa:

 

byte operando1 = B01011000;

byte resultado = 0;



void setup() {

}



void loop() {

   resultado = ~operando1;

}

 

 Después de ejecutar el programa, la variable resultado estará con el valor B10100111. Observe la Figura 26.

 

Figura 26. Logica NOT en un Byte
Figura 26. Logica NOT en un Byte

 

 

El siguiente programa usa enteros sin signo para ejecutar la instrucción NOT:

 

unsigned int operando1 = B00000000 01011100;

unsigned int = 0;



void setup() {

}



void loop() {

   resultado = ~operando1;

}

 

Después de ejecutar el programa resultado aparecerá con el valor binario B1111111110100011. Observe la Figura 27. Pruebe con diferentes valores y observe los resultados.

 

Figura 27. Logica NOT en un Entero sin signo
Figura 27. Logica NOT en un Entero sin signo

 

 

LOGICA COMBINACIONAL.

La lógica combinacional nace cuando combinamos las lógicas vistas anteriormente, es decir las salidas son el resultado de las lógicas expuestas en un circuito. La palabra combinacional ya dice que se trata de combinar, mezclar o juntar varias de las lógicas OR, AND, XOR, NOT, para llegar algún resultado.

En el siguiente ejemplo se combina lógica AND y OR.

 

Figura 28. Circuito de logica combinacional
Figura 28. Circuito de logica combinacional

 

 

Observe la Figura 28 y veamos el siguiente programa:

 

byte operando1 = B0101 1000;

byte operando2 = B1101 1011;

byte operando3 = B0011 0011;

byte resultado = 0;



void setup() {

}



void loop() {

   resultado = operando1 & operando2;

   resultado = resultado || operando3;

}

 

 Después de ejecutar el programa, la variable resultado estará con el valor B01111011 .

El siguiente programa usa enteros sin signo para ejecutar la instrucción de lógica combinacional:

 

unsigned int operando1 = B0000 0000 0101 1100;

unsigned int operando2 = B0000 0000 0110 0101;

unsigned int operando3 = B1111 0000 1100 1100;



unsigned int = 0;



void setup() {

}



void loop() {

   resultado = operando1 & operando2;

   resultado = resultado || operando3;

}

 

 

Después de ejecutar el programa resultado aparecerá con el valor binario B1111000011001100 . Pruebe con diferentes valores y observe los resultados.

Vamos a hacer otro ejemplo de lógica combinacional. En este ejemplo se combinan lógica OR, AND y NOT.

Figura 29. Circuito de logica combinacional
Figura 29. Circuito de logica combinacional

 

 Observe la Figura 29 y veamos el siguiente programa:

byte operando1 = B0101 1000;

byte operando2 = B1101 1011;

byte operando3 = B0011 0011;

byte operando4 = B1111 0000;

byte resultado = 0;



void setup() {

}



void loop() {

   resultado = operando1 || operando2;

   resultado = resultado && operando3;

   resultado = resultado || operando4;

   resultado = ~resultado;

}

 

 

Después de ejecutar el programa, la variable resultado estará con el valor B00001100.

El siguiente programa usa enteros sin signo para ejecutar la instrucción de lógica combinacional:

 

unsigned int operando1 = B0000 0000 1011 1000;

unsigned int operando2 = B0000 0000 0110 0101;

unsigned int operando3 = B1111 0000 1100 1100;

unsigned int operando4 = B1010 1010 1010 1010;



unsigned int = 0;



void setup() {

}


void loop() {

   resultado = operando1 || operando2;

   resultado = resultado && operando3;

   resultado = resultado || operando4;

   resultado = ~resultado;

}

 

 Después de ejecutar el programa resultado aparecerá con el valor binario B0101010100010001. Pruebe con diferentes valores y observe los resultados.

 

OPERACIONES BOOLEANAS.

Las operaciones booleanas se pueden usar para verificar si 2 o más expresiones son verdaderas o falsas y normalmente se usan en instrucciones condicionales como if while . Debemos tener cuidado de no confundir las instrucciones a nivel de byte o enteros (int), con la operaciones booleanas. Las instrucciones booleanas usan dos caracteres así:

AND &&

OR ||

 

OPERACIÓN BOOLEANA AND (&&).

La operación booleana AND es verdadera (true), solamente si sus 2 expresiones son verdaderas. Normalmente, la operación booleana AND es usada dentro de una instrucción condicional if(). Veamos el siguiente ejemplo:

 

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) // verifica si ambas entradas son altas.

   {

      // Instrucciones.

   }

 

En el anterior código se están verificando si la entrada digital 2 y la entrada digital 3, están a nivel lógico alto. Si las 2 entradas están altas, entonces se ejecutaran las instrucciones que hay entre los corchetes ({ }). Caso contrario, el programa saltara y las instrucciones no se ejecutaran.

 

OPERACIÓN BOOLEANA OR (||).

La operación booleana OR seráverdadera, si cualquiera de las 2 expresiones son verdaderas. Veamos el siguiente ejemplo:

 

If (x > 0 || y > 0) // si, cualquiera, x o y es más grande que cero (0).

  {

    // instrucciones.

 }

 

En la anterior línea de código, estamos testando si cualquier variable de x o y, es mayor que cero (0). Si cualquiera de las variables x o y, es mayor que cero, entonces se ejecutaran caso contrario, estas instrucciones no se ejecutan.

 

CONCLUCION

Como podemos concluir, la lógica es muy simple pues sigue el sentido común. La lógica OR dice que se llega al objetivo por cualquiera de sus entradas y la lógica AND dice que se llega al objetivo, si se cumplen todos los requisitos. La lógica XOR dice que solamente una entrada puede estar activada para que se cumpla o llegue al objetivo. La práctica es madre del conocimiento, por eso puede testar y observar los resultados. También se puede usar esta lógica para testar o evaluar expresiones aritméticas, a través de la operación booleana OR (||) y la operación booleana ADD (&&).

 

 

 

Buscador de Datasheets



N° de Componente