Este artículo es parte de una serie sobre el funcionamiento y la programación de la tarjeta Micro-bit. Consulte los enlaces al final de este artículo para ver otros de la misma serie en el sitio.
La tarjeta micro:bit puede ser dividida en 4 partes principales:
Salidas.
Procesos.
Datos.
Entradas.
Observe el diagrama de bloques en la figura 1 donde son mostradas estas partes:
En este texto estudiaremos los “Procesos”, como es resaltado en la figura 2:
Los procesos de una tarjeta como micro:bit son de varios tipos. En este capítulo nos centraremos sobre los procesos “lógicos”. La lógica en una tarjeta como micro:bit o en cualquier microcontrolador, es muy similar a la lógica que usa el cerebro humano para la toma de decisiones o llegar a conclusiones. Como por ejemplo: analizar o verificar, si algo es “verdadero” o “falso”. También, usamos lógica en magnitudes físicas, como temperatura, humedad, etc. Veamos un ejemplo práctico: supongamos que se está manejando un automóvil y encontramos un semáforo en rojo, por lógica o sentido común, se debe parar el auto, pues el semáforo nos indica eso. Si el caso fuera que el semáforo se encuentra en verde, entonces se puede avanzar el automóvil. Entonces, dependiendo de una verdad, hacemos determinadas acciones. Un ejemplo de lógica con magnitudes puede ser cuando salimos a caminar y la temperatura es muy baja, entonces normalmente, por lógica, nos protegemos con alguna chaqueta o abrigo para evitar el frío. Así, hay infinitos ejemplos donde usamos la lógica o el sentido común para tomar decisiones o realizar determinadas acciones. Veremos que lo mismo podemos hacer con la tarjeta micro:bit o cualquier otro microcontrolador.
Para ir a la parte lógica de la tarjeta micro:bit, seleccione la función “LÓGICA”, como mostrado en la figura 3:
Aparecerá una ventana como la mostrada en la figura 4:
TIPO DE DATO BOOLEANO.
Observa en la ventana emergente, que la lógica se clasifica en: “condicionales”, “comparación” y “booleano”. Condicionales son bloques de programación que permiten evaluar comparaciones y lógica booleana. La lógica en la tarjeta micro:bit, está basada en valores booleanos, los cuales tienen uno de 2 posibles valores: “verdadero” (true) o “falso” (false). Las operadores booleanos (AND, OR y NOT), toman entradas booleanas y dan como resultado otro valor booleano. Los operadores de comparación (=, !=, <, <=, >, >=), sobre otros tipos de datos como números y textos (strings), también devuelven o dan como resultado un valor boolean.
CONDICIONAL SI (IF).
Note en la ventana emergente, la parte de condicionales, observe que hay 2 bloques de código. La primera es la lógica: “SÍ”, que normalmente se escribe en inglés como “IF”. Probablemente se han escuchado frases como:
“Si” limpias y ordenas el cuarto, “entonces” puedes ir a jugar.
“Si” apruebas y pasas tu año escolar, “entonces” puedes ir de vacaciones.
“Si” termino este trabajo, “entonces” recibiré un dinero.
Todas estas expresiones son condicionales, pues es necesario que se cumpla una situación o condición, para que pueda suceder una acción o actividad. En la tarjeta micro:bit podemos hacer algo similar con el siguiente bloque de código:
Observa que el bloque se llama “SI”. Este bloque ejecuta código dependiendo sobre si una condición es verdadera o falsa. En la figura anterior, el bloque: “si”, ejecuta el código si la condición es verdadera. La figura 5 muestra un bloque: “si”, que ejecuta código, si la condición es falsa:
Vamos a hacer una práctica para ver cómo funciona. Vea la figura 6. Cree un nuevo proyecto y en los bloques: “al iniciar” y “para siempre”:
Agrega el siguiente programa:
Al ejecutar este programa, inicialmente aparecerá el siguiente valor en la tarjeta micro:bit: (figura 7)
Porque al iniciar le hemos indicado a la tarjeta que muestre el número cero (0). Si presionamos el botón A, la condición es verdadera, entonces aparecerá el mensaje de texto: “Hola”. Observe que así lo dice la instrucción:
Si presionas el botón B, observaras que no sucede nada pues en el programa no existe una instrucción que así lo indique.
En el diagrama de la figura 8 podemos ver una representación en bloques del programa que acabamos de hacer. Este tipo de diagramas es conocido como “diagrama de flujo”, el cual muestra o indica qué acciones se tomarán en caso que se cumpla la condición.
CONDICIÓN OPUESTA (ELSE).
Hay otro bloque de código que permite hacer una acción en caso que la condición sea opuesta. Observe la figura 9:
El bloque de código dice: “SI” algo es verdadero, “entonces” ejecute esta acción, “SI NO” (ELSE) ejecuta esta otra acción. Desarrollemos una aplicación práctica para entender cómo funciona este bloque. Supongamos que voy a utilizar el botón A, para que cuando no esté presionado, muestre el número 2 y cuando esté presionado, muestre el número 8. Cree un nuevo proyecto y en el bloque de código: para siempre, inserte el siguiente programa:
Ejecuta el programa y experimenta lo que sucede. Observe que cuando no se presiona el botón A, se observa el siguiente número:
Pero cuando el botón A es presionado se observa el número 8 como se muestra a seguir:
Así, podemos hacer infinidad de cosas. En este ejemplo hemos mostrado números diferentes, más podríamos encender o apagar motores, luces, sonidos, etc. Va a depender de la idea y del proyecto.
Para tener una idea, de lo que hace el procesador en la tarjeta, podemos ver el siguiente diagrama de flujo: (figura 10)
Los diagramas de flujo tienen mucha flexibilidad a la hora de ser hechos o diseñados. Por ejemplo, el diagrama de flujo de la figura 11, es idéntico al anterior en cuanto a los flujos y las acciones que son tomadas. Así, puedes encontrar diferentes maneras de dibujar el diagrama. Pero lo que verdaderamente importa es que se siga el flujo, es decir las líneas con flecha, para entender lo que se está haciendo.
CONDICIÓN OPUESTA, MÁS VERIFIQUE ALGO NUEVAMENTE (ELSE IF)
Existe la posibilidad, de en la condición opuesta, verificar alguna condición más. Este tipo de análisis es muy común cuando se está haciendo algún proyecto. Para que esto pueda ser hecho, haga clic en el símbolo (+), para agregar secciones “si no, si” del bloque: “si”. Este tipo de bloque, lo que hace es verificar si el primer valor es verdadero, entonces ejecuta el primer bloque de declaraciones, caso contrario, verifica si el segundo bloque es verdadero, ejecuta el segundo bloque, caso contrario, verifica si el tercer bloque es verdadero, ejecuta el tercer bloque, si no ejecuta un último bloque por defecto. Se puede hacer el bloque de la cantidad de bloques: “si no, si” que se desee. La figura 12 muestra este clase de bloques:
La siguiente es la representación del diagrama de flujo para este tipo de bloque. Observe que una vez que alguna condición sea verdadera, se sale del bloque.
COMPARACIÓN.
Con la tarjeta micro:bit es posible comparar variables con un determinado valor o comparar variables con variables. Estas expresiones pueden ser evaluadas o verificadas con el bloque: SI (IF), para determinar si son verdaderas o falsas. Las expresiones de comparación se encuentran localizadas en la función LÓGICA como muestra la figura 14:
Hay 6 expresiones de comparación:
= Igual.
!= Diferente.
< Menor que.
<= Menor o igual que.
> Mayor que.
>= Mayor o igual que.
Observe la figura 15 donde se pueden seleccionar las opciones de lógica de comparación:
Estas opciones las encuentra dando click en la flecha del bloque, como muestra la figura 16:
Veamos un programa práctico para entender mejor el funcionamiento de los operadores de comparación. Supongamos que tenemos una cerradura electrónica y el usuario digita una clave numérica (key), la cual se almacena en una variable llamada: “keyUsuario”. Después, comparamos esta clave, con la clave de la cerradura. Si las dos claves son iguales, se abrirá la puerta. Si son diferentes, se cerrara la puerta. El siguiente programa permite hacer esto:
BOOLEANOS.
Existen 3 tipos de operadores booleanos: Lógica “OR”, Lógica “AND” y Lógica “NOT”. La figura 17 muestra estos bloques:
En electrónica se usan los siguientes símbolos para representar la lógica en los microcontroladores: (figura 18)
Como este tipo de variable es importante comprenderlo bien para poder usarlos, vamos a dedicar un capítulo aparte para su mejor estudio.