14
Programando con variables en bitbloq ¿Qué es una variable y para qué sirve? Una variable es como una “caja” donde guardaremos un dato, un valor que podremos ver y recuperar más adelante durante el resto del programa. Además, en cualquier momento se puede cambiar ese valor guardado. Declarando variables: Al declarar una variable lo que hacemos es crear esa “caja” y guardar por primera vez un dato en ella. En bitbloq el dato que guardemos puede ser de tipo número o de tipo texto. Al declarar la variable defines de que tipo es, por ejemplo: si lo primero que guardaste es un número, esa variable va a ser siempre para guardar números (¡no mezcles tipos!) Puedes renombrar como quieras una variable. Esta cualidad te servirá para identificar en todo momento tu “caja”. Aquí algunos ejemplos de declaración de variables: También podemos guardar el valor que nos devuelve directamente un sensor. Este caso lo verás habitualmente en las siguientes lecciones: Usando variables: En bitbloq tienes bloques para “mirar la caja” (mira el valor que hay guardado en ese momento en la variable) y bloques para guardar un nuevo valor en ella (borrando el anterior).

Sessió 2

Embed Size (px)

Citation preview

Programando con variables en bitbloq

¿Qué es una variable y para qué sirve?

Una variable es como una “caja” donde guardaremos un dato, un valor que podremos ver y recuperar más adelante durante el

resto del programa. Además, en cualquier momento se puede cambiar ese valor guardado.

Declarando variables:

Al declarar una variable lo que hacemos es crear esa “caja” y guardar por primera vez un dato en ella. En bitbloq el dato que

guardemos puede ser de tipo número o de tipo texto. Al declarar la variable defines de que tipo es, por ejemplo: si lo primero

que guardaste es un número, esa variable va a ser siempre para guardar números (¡no mezcles tipos!)

Puedes renombrar como quieras una variable. Esta cualidad te servirá para identificar en todo momento tu “caja”. Aquí algunos

ejemplos de declaración de variables:

También podemos guardar el valor que nos devuelve directamente un sensor. Este caso lo verás habitualmente en las

siguientes lecciones:

Usando variables:

En bitbloq tienes bloques para “mirar la caja” (mira el valor que hay guardado en ese momento en la variable) y bloques para

guardar un nuevo valor en ella (borrando el anterior).

Diferencia entre variable GLOBAL y variable LOCAL:

Como bien explicamos en las primeras lecciones (ver lección programación LEDs), la placa controladora ejecuta el programa

que le carguemos siguiendo los bloques en orden (de arriba a abajo) y repitiéndolo infinitamente en forma de bucle.

Por este motivo, es importante saber en qué momento del programa usamos y declaramos las variables. En bitbloq se pueden

programar variables LOCALES y GLOBALES.

Variables GLOBALES: se crean al inicio nada más encender la placa, antes incluso de empezar el bucle del

programa.

Variables LOCALES: se crean justo en el instante de declarar la variable, ya dentro del bucle.

Este es un ejemplo de código erróneo, ya que se intenta usar y comparar la variable local cuando todavía no se había

declarado. Recuerda que el código se va a ejecutar de arriba a abajo.

Esta sería la forma correcta de usarla: primero la declaramos y más adelante la usamos.

Comunicación Serie USB con bitbloq En este post os vamos a enseñar cómo realizar una comunicación por puerto serie USB entre vuestro ordenador y la placa

controladora. Lo diré de otra forma más sencilla: transferir información y órdenes a tu placa por el cable USB.

Una comunicación consta siempre de dos partes, un emisor y un receptor. Por tanto, vamos a necesitar dos cosas:

1. Programa dentro de la placa controladora que envíe/reciba datos. (Lo haremos con bitbloq)

2. Programa dentro del ordenador que envíe/reciba datos. (Usaremos el Monitor Serial de la IDE de Arduino)

Abre bitbloq y descarga el IDE de Arduino. Conecta tu placa Arduino al ordenador con el cable USB y… ¡Comenzamos!

“”Aquí robonauta llamando a Base Eco, ¿me recibe?””

ESCRIBIR POR PUERTO SERIE

El ejemplo siguiente envía desde la placa controladora la palabra ‘NEGRO‘ cuando un sensor IR detecta ese color. Conecta

dicho sensor al pin digital 3:

Parte 1: EMISOR – Programación en bitbloq Para programar un envío de un dato desde la placa en bitbloq, tan sólo será necesario el bloque llamado “Imprimir por puerto

serie”

Es así sencillo entonces crear un programa en el que se compara cada segundo (1000 ms) el valor del sensor y si éste vale 0

envia la palabra. Carga este programa en tu placa:

Parte 2: RECEPTOR – Usando el Monitor Serial de Arduino IDE Como hemos dicho, utilizaremos el Monitor Serial del IDE de Arduino. Con la placa conectada, abre el programa Arduino y

cierra bitbloq.

Ahora selecciona la placa controladora en Herramientas/Tarjeta.

Selecciona el puerto donde está conectada la placa en Herramientas/Puerto Serial:

Ya podemos abrir el Monitor Serial en Herramientas/Monitor Serial o pulsando aquí:

Se abrirá esta ventana donde debemos comprobar que esté marcada una velocidad de 9600 baudios.

Si el sensor IR de nuestro ejemplo comienza a detectar varias veces, en el monitor irá apareciendo la palabra ‘NEGRO’ sin

cesar:

Si queremos ver el resultado un poco más ordenado, podemos utilizar el bloque bitbloq “Imprimir por puerto serie con salto de

linea“:

De esta forma conseguiremos una respuesta más separada así:

Programando los bloques de control-

El bloque Si… ejecutar

Hoy vamos a aprender a cómo usar los bloques de bitbloq de la pestaña Control en concreto el bloque Si… ejecutar

Hoy necesitarás:

1. LED

2. Sensor de luz

3. Pulsador

4. Una placa controladora Arduino

5. Un cable USB

El bloque si…ejecutar

Aprendiendo lo que es una sentencia condicional

Un momento, no tan rapido. ¿Una sentencia condicional? ¿Qué es eso?

Una sentencia condicional es una condición, algo que tiene que cumplirse para que se ejecute una parte del programa.

Es muy sencillo, por ejemplo: Si has sido bueno, los reyes magos te traeran regalos. Si no recoges tu habitación, tu madre te

castigará. Si presiono el botón, el LED se encenderá.

Es un bloque fundamental que nos permitirá decirle a nuestro programa cuando debe suceder una cosa y cuando otra.

¿Cómo funciona? Veamoslo en el siguiente ejemplo:

Ejemplo con el bloque si… ejecutar

Utilizando el bloque Si…ejecutar, hacer que se encienda el LED cuando se pulse el pulsador

En primer lugar, conecta tu LED y tu Pulsador a tu placa siguiendo el siguiente esquema:

Queremos que, al presionar nuestro pulsador, el LED se encienda.

Es decir:

Si el pulsador está presionado… el LED se enciende

Por tanto, tenemos que usar el bloque Si… ejecutar, el programa quedará del siguiente modo:

Recuerda que dependiendo del típo de pulsador que tengas, al estar presionado puede tener un valor de 1 o 0. Si posees uno

de nuestros kits de robótica, al presionar el botón su valor valdrá 0.

Como puedes observar, al presionar el botón, el LED se enciende, y permanece encendido indefinidamente… y es qué nuestra

placa es muy tonta y… ¡solo hace lo que le decimos! tenemos que decirle que ocurre cuando el pulsador no esté pulsado!

¿Cómo podemos hacer ésto? Fijate en el siguiente programa:

Como puedes ver,el bloque Si …entonces puede tener más opciones como de lo contrario que se ejecutará cuando no se

cumpla la condición, es decir, cuando nuestro pulsador no este presionado. Para añadir la opción de lo contrario pulsa sobre la

estrella del bloque y agrégala:

Además existe una opción más dentro de éste bloque, la opción: en cambio, si. Está opción te permite añadir más condiciones

despues de la primera. Un ejemplo: Si queremos comer tarta, pero no hay tarta, en cambio sí hay helado ¿También nos vale,

verdad? ¡Queremos comer helado!! ¡Aunque preferimos la tarta! ¡Eso es muy importante! Solo comeremos helado si NO hay

tarta

Vamos a abandonar a nuestro querido pulsador y a hacer un ejercicio con el sensor de luz y la opción en cambio, si:

Ejemplo 2

Hacer que un LED parpadee cuando el sensor de luz detecte poca cantidad de luz, y se encienda cuando

este a oscuras

Voy a confesarte una cosa, tengo miedo a la oscuridad. Por las noches no voy al baño por muchas ganas que tenga hasta la

mañana siguiente, no me gusta nada no tener luz y andar por ese pasillo, a saber que monstruos acechan por ahí, quiza la

profe de mates …

Por eso he decidido ponerme manos a la obra e inventarme una alarma de noche. ¡Para no quedarme nunca a oscuras! Estuve

hablando con un reputado luminógrafo y, tras muchas discusiones, llegamos a la conclusión de que mi revolucionaria máquina,

que cambiaría la infancia de la humanidad, tendría que ser de la siguiente forma:

-Si la cantidad de luz es menor que 100-> ¡Ay que está muy negro todo!->ENCIENDE EL LED

-En cambio, si la cantidad de luz es menor que 200, bueno, da un poco de miedo…->¡EL LED PARPADEA!

-De lo contrario, si brilla el sol no te preocupes… ¡Si yo soy muy valiente! ->APAGA EL LED

¡Ríete tú del iphone! ¡Manos a la obra! Lo primero será realizar nuestras conexiones en la placa:

Recuerda que el sensor de luz es un componente analógico.

Por lo que tendrá que ir conectado a los pines analógicos de tu placa.

Ahora que lo tienes todo conectado ¿Por qué no intentas programarlo por tí mismo? Verás como pronto llegas a la solución.

Si todo fue bien deberías haber hecho algo parecido a ésto:

Pronto veremos con más detalle las operaciones lógicas, pero en el caso de que quieras dentro del bloque Si…ejecutar que se

cumpla más de una condición, como por ejemplo, que el pulsador esté presionado y la luz sea menor que 30 puedes hacerlo

de la siguiente forma: 00:00:56

¿Qué te parece? Puede que tengas dudas de cuando usar el bloque. ¡No te preocupes! ¡La práctica hace al maestro!

Programando los bloques lógicos

Si es igual y/o distinto de no verdadero…

Hoy vamos a aprender como funcionan los bloques de la pestaña Lógica.

Hay cuatro bloques con distintas opciones cada uno. ¡Veamos en que consisten!

Para realizar los ejemplos de hoy, necesitarás:

1 LED

1 Potenciómetro

1 Zumbador

1 Pulsador

1 Sensor de luz

Una placa controladora Arduino

Un cable USB

El bloque de comparación

Te suena ¿verdad?. Hemos usado este bloque a menudo junto con el el bloque de control Si…ejecutar .

Este bloque devuelve verdadero o falso según las dos entradas sean:

= iguales.

≠ distintas.

< la primera menor que la segunda.

≤ la primera menor o igual que la segunda.

> la primera mayor que la segunda.

≥ la primera mayor o igual que la segunda.

De esta forma, junto al bloque Si…ejecutar podemos establecer condiciones para que nuestro programa haga unas cosas u

otras según las condiciones que elijamos. Veamos un ejemplo:

Ejemplo con el bloque de comparación

Hacer que se encienda un LED cuando el valor del potenciómetro sea menor que 500

En caso de que el valor del potenciómetro sea menor que 500, es decir, un valor comprendido entre 0 y 499, el LED se

encenderá. En caso contrario, de 500 a 1023 valores (recuerda que el potenciómetro varía sus valores entre 0 y 1023), el LED

se apagará.

El bloque Y/O

Este bloque sirve para comprobar varias condiciones al mismo tiempo:

Opción Y: Deben cumplirse ambas condiciones para que el valor sea verdadero y la acción se ejecute.

Opción O: Al menos una de las dos condiciones debe cumplirse para que el valor sea verdadero y la acción se

ejecute.

Vamos a ver un ejemplo para que experimentes la diferencia entre la opción Y y la opción O:

Ejemplo con el bloque Y/O

Hacer que suene el zumbador cuando se cumplan las siguientes condiciones:

la variable luz es menor o igual que 300 y

el pulsador, entonces el zumbador sonará.

En este caso el zumbador sonará solo en el caso de que se cumplan las dos condiciones, es decir:

Si cualquiera de las dos no se cumple, la condición no será verdadera y el zumbador no sonará.

Hagamos una cosa, modifica el programa anterior, y en vez de la opción Y usa una opción O ¿Qué ocurre ahora?

Ahora tu zumbador sonará más a menudo, ya que le estamos diciendo al programa lo siguiente: Si la variable luz es menor o

igual que 300 o presionamos el pulsador, que el zumbador suene. Es decir, nos vale con que una de las dos condiciones se

cumpla. ¿Ves la diferencia?

El bloque verdadero/falso

Este bloque nos devuelve el valor verdadero o falso, para entenderlo lo mejor es que hagamos un ejemplo:

Ejemplo con el bloque verdadero/falso

Hacer un programa que haga que, cuando la luz sea mayor o igual que 300, se encienda el LED y que, de lo contrario, se

apague.

Recuerdas este programa ¿verdad?. Hoy vamos a hacerlo un poco diferente:

La variable mucha_luz leerá el valor del sensor de luz y si éste es mayor o igual que 300, la variable tendrá un valor

de verdadero, en caso contrario, será falso.

De esta forma podemos comparar el valor de la variable directamente usando el bloque verdadero, si es verdadero significará

que habrá mucha luz y el LED se encenderá.

El bloque No

Este bloque nos permite negar una variable o estado, por ejemplo, si al verdadero le ponemos un bloque No:

Decir no verdadero es lo mismo que decir que algo es falso.

Veamos un pequeño ejemplo:

Ejemplo con el bloque No

Hacer un programa que haga sonar el zumbador si el pulsador está pulsado utilizando el bloque No.

Este programa es una versión modificada de otro que realizamos hace tiempo:

La variable boton_sin_pulsar será verdadero siempre que el pulsador no esté presionada.

Si queremos que el zumbador suene, nuestra condición es: Si no variable boton_sin_pulsar. Es decir, si la negación de

botón sin pulsar es verdadero, o lo que es lo mismo, si el pulsador está presionado, entonces el zumbador sonará.

Como recordaras hay formas mucho más sencillas para realizar este programa, este es solo un ejemplo para que entiendas el

funcionamiento del bloque No. En ocasiones negar el valor de una variable te será de gran utilidad.

La lógica es fundamental para que tu programa vaya bien, si te acostumbras a razonar de forma lógica, las cosas empezarán a

funcionar como por arte de magia. La diferencia será que tu serás el mago y sabrás exactamente donde está y cómo funciona

el truco.

Aún así, siempre que empieces un proyecto, recuerda:

“Hay algo más importante que la lógica: es la imaginación”

Alfred Hitchcock