La sentencia if-else, es talvez una de las instrucciones más usadas en proyectos electrónicos usando el lenguaje Python. también, la lógica bit a bit (bitwise) es muy usada, especialmente sobre las entradas y salidas digitales de la tarjeta Raspberry PI4B. de ahí, la importancia de conocer cómo utilizarlas en el lenguaje Python. En este capítulo estudiaremos la sentencia if-else y la lógica bit a bit.
Como visto en el capitulo anterior, con la lenguaje Python podemos controlar las entradas/salidas digitales de la tarjeta Raspberry Pi4B. Tambien, podemos controlar los perifericos de comunicación como: puerto serial, puerto I2C y puerto SPI. Es necesario conocer las sentencia “if-else” y la logica bit a bit (bitwise) de la lenguaje Python, para hacer lecturas de las entradas digitales y control sobre salidas digitales y perifericos. Observa la siguiente figura, donde desde Python controlamos la CPU y desde la CPU, controlamos las entradas/salidas de la tarjeta Raspberry Pi4B.
Normalmente las instrucciones que hay dentro de la memoria de instrucciones de un microcontrolador, son ejecutadas en forma secuencial, es decir, se ejecuta una después de otra y así sucesivamente. Mas en la mayoría de los circuitos que usan microcontroladores, es necesario romper esta secuencia, para poder hacer inteligentes los proyectos. Las sentencias: “if”, “else” y “elif”, nos permiten romper la secuencia de ejecución de instrucciones como veremos en este capítulo.
La lógica de programación es muy similar al comportamiento humano ante la vida. Por ejemplo, si está lloviendo, es muy probable que la mayoría de las personas, lleven un paraguas, caso vayan a salir de casa. O si una persona tiene sed, buscar agua para beber. En los microcontroladores es muy similar la lógica, como veremos en este capítulo. Para el desarrollo de los ejemplos y prácticas de este capítulo, he usado el editor: “Visual Studio Code”, como se muestra en la siguiente figura:
Existen muchos editores y ambientes de desarrollo para Python. Puede usar cualquiera de ellos, pues los ejemplos mostrados en este capitulo son compatibles con estos ambientes.
La siguiente es una lista de las instrucciones usadas para testar una condición:
If
elif
else
La siguiente figura muestra las partes del procesador Raspberry Pi4B, afectadas por estas instrucciones:
LA SENTENCIA: if.
La sentencia o instrucción “if”, puede ser entendida como: “si sucede algo, haga esto”. Por ejemplo, veamos el siguiente programa en Python:
Esta instrucción condicional, está diciendo: si la temperatura es mayor a 17 grados centígrados, ejecute el bloque de código:
El anterior programa dará en la consola de salida, el siguiente resultado:
Con este ejemplo, podemos ver las infinitas posibilidades de testar los valores de variables numéricas. La siguiente imagen muestra un diagrama de flujo para la sentencia: “if”.
LA SENTENCIA: if….else
Esta instrucción permite ejecutar un “bloque de código”, caso la “condición” se cumpla y otro “bloque de código” caso la “condición”, no se cumpla. Por ejemplo, el siguiente programa imprime en la consola: “hot environment”, si la temperatura es mayor a 17 grados centrigrados. Si, la temperatura es: menor o igual a 17, se imprime en la consola: “cold environment”. Esta sentencia puede ser entendida como: “Si se cumple la condición, haga esto, caso contrario, entonces, haga otra cosa”.
El anterior programa dará en la consola de salida, el siguiente resultado: hot environment
En el siguiente programa, podemos notar, que la sentencia: “if temperatura > 17”, no se cumple, porque, la variable: “temperature”, no es mayor a 17.
El anterior programa dará en la consola de salida, el siguiente resultado:
La siguiente imagen muestra un diagrama de flujo para la sentencia: “if-else”.
LA SENTENCIA: if….elif….else
Esta instrucción permite ejecutar un “bloque de código”, caso la “condición” se cumpla y descartar los otros “bloques de código”, caso la “condición”, no se cumpla. Por ejemplo, el siguiente programa imprime en la consola: “normal environment”, si la temperatura es mayor o igual a 12 y menor a 20 grados centígrados:
El anterior programa dará en la consola de salida, el siguiente resultado:
Observa el siguiente programa:
El anterior programa dará en la consola de salida, el siguiente resultado:
Así, puedes probar diferentes valores para la variable: “temperature” y observar los resultados.
OPERADORES LÓGICOS BIT A BIT (BITWISE)
Los tipos de operadores lógicos bit a bit en Python son: Lógica “OR”, Lógica “AND” y Lógica “XOR”. Lógica y sentido común son usados a diario, ya sea por sistemas electrónicos o personas. En este capítulo veremos la lógica: “and”, “or” y “xor”. Casi todo equipo electrónico usa lógica digital para su funcionamiento y operación, de ahí la importancia de conocer este tema. 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, tiene mucha similitud.
Por eso el parecido entre una tarjeta como Raspberry Pi4B 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 que veremos OR, AND y XOR, 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 siguiente imagen muestra que partes del procesador son afectadas cuando se ejecutan estas instrucciones:
LA LÓGICA BIT A BIT: “OR”
La instrucción lógica OR, sigue el principio de funcionamiento del circuito mostrado en la siguiente figura.
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 siguiente figura podemos observar la tabla de verdad para la instrucción lógica OR.
Esta tabla simplifica lo dicho anteriormente acerca de la lógica OR. La siguiente figura muestra el diagrama esquemático usado para la lógica OR.
El símbolo usado en lenguaje Python, para la lógica OR, es la barra vertical (|). El siguiente programa define 2 variables (“s” y “t”) y después ejecuta una instrucción: OR sobre estas variables, dejando el resultado en la variable: “r”, después imprime el resultado en formato hexadecimal:
El anterior programa dará en la consola de salida, el siguiente resultado:
0xff
LA LÓGICA BIT A BIT: “AND”
La siguiente figura 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á.
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 siguiente figura muestra la tabla de verdad para la lógica AND.
La siguiente figura muestra el símbolo de lógica:
El siguiente programa define 2 variables (“s” y “t”) y después ejecuta una instrucción: “AND” sobre estas variables, dejando el resultado en la variable: “r”, después imprime el resultado en formato hexadecimal:
El anterior programa dará en la consola de salida, el siguiente resultado:
0xf
El siguiente programa es igual al visto anteriormente, pero usa la función: “bin()” para imprimir en la consola los valores de la variable en forma hexadecimal:
El anterior programa dará en la consola de salida, el siguiente resultado:
Como visto anteriormente en otro capítulo, este tipo de operaciones también las podemos hacer en lenguaje ensamblador. El siguiente es un programa que ejecuta la instrucción: “AND” en ensamblador:
LA LÓGICA BIT A BIT: “XOR”
La lógica “XOR” es también conocida como OR ESCLUSIVA, es decir que solamente cuando una de las entradas este a “uno” (1), la salida también estará a “uno” (1). Vea la tabla de verdad en la siguiente figura.
Si las 2 entradas están a nivel alto (1), la salida estará a nivel bajo (0). También, si las 2 entradas están a nivel bajo (0), la salida estará a nivel bajo (0). El diagrama esquemático para la lógica XOR se puede observar en la siguiente figura:
El símbolo usado para representar la instrucción XOR en el lenguaje Python, es el símbolo de intercalación (^). En la siguiente figura podemos ver un ejemplo de XOR a nivel de byte.
Veamos el siguiente programa en Python:
El anterior programa dará en la consola de salida, el siguiente resultado:
Conclusión
Como podemos notar, hacer uso de la sentencia “if-else”, es muy sencillo en el lenguaje Python. También, el uso de la lógica bit a bit (bitwise) es de fácil comprensión. La lógica es un lenguaje universal y sigue principios simples de entender. En los microcontroladores y sistemas digitales, es muy usada la lógica digital. Puede probar y verificar los resultados en la salida de la consola del editor Python que este usando. El uso del función: “bin()”, es muy útil para imprimir datos en forma binaria y el uso de la función: “hex()” para imprimir datos en forma hexadecimal.