Conociendo Arduino Uno – Clase 3

Antes de empezar, echa un vistazo a las dos primeras clases que hemos producido aquí para el Net Workshop. En la primera clase conocíamos las características de Arduino Uno y en la segunda iniciamos el IDE

Variables…. ¿Qué son ellos?

Una variable es una forma de nombrar y almacenar contenido en la memoria del microcontrolador para su uso posterior por parte del sketch.

Como el término sugiere, las variables pueden tener su contenido continuamente cambiado en tiempo de ejecución. La variable debe ser declarada (tipo y nombre) y opcionalmente se le puede asignar un valor, es decir, se le puede asignar opcionalmente un contenido en el momento de su declaración.

Las variables deben ser nombradas para recordar el propósito para el que están destinadas, es decir, si la variable va a contener el número de puerto digital que ascenderá y borrará el led rojo, su nombre debe ser, por ejemplo: led rojo, porque, esto hace que su código sea más legible y, en consecuencia, más fácil de mantener.

Evite usar nombres con un solo carácter y nunca podrá recordar demasiado que debe tratar de usar nombres que recuerden el contenido que esta variable contendrá. Es opcional asignar un contenido a la variable en el momento de su declaración, esto se puede hacer más tarde tanto en tiempo de programación como en tiempo de ejecución. Abajo tenemos una imagen que muestra la declaración de una variable así como la asignación de un contenido a la misma en el momento de su declaración, obsérvela cuidadosamente.

Conociendo Arduino Uno - Clase 3 1

Nota:

  • int – es el tipo de datos que contendrá la variable;
  • pin – es el nombre de la variable;
  • = – es el signo de asignación, tenga en cuenta que aquí no significa igual sino asignación, porque la variable pin no es igual a 5, pero su contenido es 5;
  • 5 – es el valor asignado a la variable pin.

La variable pin no es igual a 5, pero su contenido es 5, es decir, la variable pin contiene 5 y puede ser cambiada en cualquier momento que el programador desee.

Visibilidad o alcance de una variable

Una variable puede ser declarada al principio de un sketch, antes de una función de configuración (), o localmente, cuando está dentro de funciones o de una estructura de repetición.

Si se declara al principio del boceto, su alcance será global. Las variables globales son vistas por todas las funciones. Eche un vistazo más de cerca a la figura de abajo.

Conociendo Arduino Uno - Clase 3 2

Nota: Note que la variable pin tiene un alcance global y puede verse en cualquier parte del sketch.

Si se declara dentro de una función o como parte de una estructura de iteración (repetición), se dice local, es decir, sólo puede verse y utilizarse dentro de la función en la que se declaró. Eche un vistazo más de cerca a la figura de abajo.

Conociendo Arduino Uno - Clase 3 3

Debe tenerse en cuenta que en la figura de arriba la variable pino2 está siendo declarada dentro de la función setup(), por lo que sólo tendrá visibilidad dentro de esta función y en ningún otro lugar del sketch y que lo mismo se aplica a la variable pino3 que sólo tendrá visibilidad dentro de la función loop().

Por lo tanto, es posible tener dos o más variables del mismo nombre en funciones diferentes, ya que se manejan en diferentes ubicaciones en memoria, aunque no es una práctica común. Las variables de alcance local aseguran que sólo la función en la que se declaró la variable puede manipular su contenido.

Datos soportados por el idioma

Es muy importante conocer los datos soportados por el lenguaje, ya que el uso de datos no soportados generará un error en la compilación del sketch.

La siguiente es una breve explicación de los datos soportados más comúnmente utilizados en el lenguaje Arduino.

vacío:

La palabra clave void (empty, null) se utiliza únicamente en la sentencia de función. Indica que no devolverá ningún valor.

Conociendo Arduino Uno - Clase 3 4

Booleano:

En este tipo de datos sólo podemos tener los valores 0 o 1, o incluso las constantes, falsas o verdaderas. Este tipo de datos ocupa un byte de memoria.

Ejemplo: booleano activo = false;

char:

El tipo de datos char almacena caracteres como el carácter «Y», pero, de observarse eso en forma numérica, es decir, el correspondiente numérico del carácter que queremos almacenar. El rango de valores para este tipo de datos (en forma numérica) es de -128 a 127 y el espacio de memoria es de un byte.

En este ejemplo, el carácter de mayúscula Y corresponde al valor 89 de la tabla American Standard Code for Information Interchange (ASCII), un estándar desarrollado en los años 60 para representar textos en ordenadores. La tabla ASCII estándar va de 0 a 127.

En http://arduino.cc/en/Reference/ASCIIchart, tiene la tabla ASCII con todos los caracteres que se pueden representar y almacenar en el tipo de datos de caractéristicas. La siguiente figura muestra una tabla con el valor decimal de los caracteres principales. Échale un vistazo más de cerca.

Conociendo Arduino Uno - Clase 3 5

Los valores que no se muestran en la tabla anterior son códigos de control utilizados en diversos equipos, como vídeos, impresoras, comunicaciones, etc.

Para asignar un valor a una variable de tipo char, podemos utilizar su valor numérico presente en la tabla ASCII o el propio carácter, envuelto en comillas simples. Así, carácter = 65 es lo mismo que carácter = ‘A’.

No te preocupes si todo esto te parece confuso ahora mismo, porque cuando empieces a usarlo en la práctica todo se aclarará.

byte:

Este tipo de datos almacena valores numéricos enteros de 0 a 255. Ocupa un byte de memoria.

Ejemplo temperatura del byte = 27;

Int:

Manipula números enteros, sin decimales, en el rango de 32767 a -32768. Este tipo de datos ocupa dos bytes de memoria.

Ejemplo temperatura int = 27;

sin firmar int:

Igual que int, excepto que el calificador utilizado cambia el rango de valores: 0 a 65535, es decir, sólo acepta números positivos.

Ejemplo unsigned int total Lectura = 50000;

largo:

Un tipo de datos que manipula valores enteros en el rango de -2147483648 a 2147483647 y ocupa cuatro bytes de memoria.

Ejemplo  long total Reading;

largo sin firmar:

Lo mismo que largo, excepto que el calificador sin signo cambia el rango de valores: 0 a 4294967295.

Ejemplo  total largo sin firmar Lectura;

float:

El tipo de flotador le permite manipular números de coma flotante (punto decimal). Utilice este tipo de datos cuando no se apliquen los números enteros. Ocupa cuatro bytes de memoria y el rango de valores es de -3.4028235E+38 a 3.4028235E+38.

Ejemplo total floatReading = 3.16;

doble:

El tipo doble, como el flotador, permite manipular números en coma flotante (punto decimal). En el lenguaje Arduino estos tipos son los mismos.

Ejemplo doble totalReading = 234,56;

Matriz

Un array es una colección de valores numéricos o caracteres. Cualquier artículo de esta colección es accedido por un número que indica la posición de ese artículo dentro de la colección, conocido como índice.

La declaración de un array comienza con el tipo de datos, un nombre y opcionalmente el número de elementos que componen esta colección. Es muy importante saber qué array en el lenguaje Arduino comienza en cero, es decir, el primer ítem de la colección tiene el índice cero(0).

Ejemplos: números int[4];

La variable número es una colección de cuatro números enteros cuyo índice comienza en 0 y termina en 3.

Nota: el lenguaje Arduino permite el uso de arrays de múltiples dimensiones, lo que hace su manejo más complejo. La inicialización se produce de forma similar a la anterior y sólo como ejemplo, una matriz de dos dimensiones:

int cuboLEDs[2][2] = { { 0, 1 } , { 1, 1} };

Otra forma de declarar un array, sin indicar el número de elementos:

int numbers[] = {2, 4, 8, 3, 6, 0};

Declarando una serie de caracteres:

caracteres char[] = {‘a’, ‘t’, ‘8’, ‘3’};

Una forma de almacenar una cadena, conocida como cadena:

mensaje[] = «Estoy estudiando variables»;

Más adelante veremos una estructura (para) que hará mucho más fácil navegar a través de los elementos de una matriz. Tenga en cuenta que todo esto se aclarará cuando utilice este tipo de variables en la práctica.

Constantes, ¿pero qué son?

Mientras que las variables pueden tener su contenido cambiado tanto en el momento de la programación como en la ejecución, las constantes una vez declaradas y la asignación de su contenido ejecutado ya no pueden tener su contenido cambiado, esta es la única diferencia entre variable y constante, el resto son exactamente iguales y todo lo que se veía sobre las variables se aplica aquí.

La siguiente figura muestra la declaración de una constante, obsérvela cuidadosamente.

Nota:

  • const – es la palabra clave utilizada para crear una constante;
  • int – es el tipo de datos que debe soportar la constante;
  • pin – es el nombre de la constante;

Conociendo Arduino Uno - Clase 3 6

  • = – es la señal de asignación;
  • 5 – es el valor asignado a la constante de alfiler.

Es muy importante tener en cuenta que la constante debe tener la asignación del contenido ejecutada en el momento de su declaración y que si esto no ocurre devolverá un error y que aún así este contenido ya no puede ser cambiado ni en tiempo de programación ni en tiempo de ejecución.

Constantes preestablecidas

El lenguaje Arduino tiene algunas constantes predefinidas. Estos se utilizan para hacer el sketch más legítimo. Echa un vistazo más de cerca a la imagen de abajo, que muestra algunas de las constantes predefinidas más comúnmente utilizadas.

Conociendo Arduino Uno - Clase 3 7

Las constantes HIGH, LOW, IMPUT y OUTPUT

Cuando un puerto digital está configurado como INPUT (entrada) y maneja digitalRead(), el microcontrolador informará a HIGH si hay un voltaje de 3 voltios o más en este pin, y por supuesto, si es menor de 3 voltios informará a LOW. Cuando este mismo puerto está configurado como OUTPUT (salida) y ajustado a HIGH con digitalWrite() proporcionará 5 voltios a cualquier dispositivo conectado a él y si está ajustado a LOW proporcionará 0 voltios.

Nota: las constantes true y false se escriben en minúsculas, a diferencia de HIGH, INPUT, LOW y OUTPUT.

Echa un vistazo más de cerca a la imagen de abajo y nota que en cada línea de código hay un comentario que indica el rendimiento de esta línea.

Conociendo Arduino Uno - Clase 3 8

En la práctica

Pues bien, ha llegado el momento de que cambies el sketch realizado en la última clase utilizando los conocimientos vistos en esta clase, es decir, haciendo uso de variables y constantes pero obteniendo el mismo resultado, es decir, parpadeando el LED de tu placa, el que está conectado a tu puerto digital 13.

Abra su IDE e introduzca el código que comienza en la línea 2 y termina en la línea 12 que se muestra en la siguiente figura.

Comprensión del código

Línea 2:

Conociendo Arduino Uno - Clase 3 9

Se está declarando la variable tipo byte, con un nombre de led y se le asigna el valor 13 que no existía en el código realizado en la lección anterior.

Conociendo Arduino Uno - Clase 3 10

La elección de este tipo de datos es sólo porque es el que menos memoria consume y porque soporta valores de hasta 255 es más que suficiente para los puertos disponibles en las tarjetas Arduino que conozco.

Línea 5:

Usando la función pinMode() se está configurando el puerto digital 13 como salida, pero esta vez usando la variable creada en la línea 2 y luego usando la constante por defecto OUTPUT configurando este puerto como salida.

Conociendo Arduino Uno - Clase 3 11

Línea 8:

Usando la función digitalWrite() se está escribiendo en el puerto 13 el nivel de salida alto, es decir, proporcionará 5 voltios, pero usando la variable creada en la línea 2 y la constante HIGH predefinida.

Conociendo Arduino Uno - Clase 3 12

Línea 10:

Usando la función digitalWrite() se está escribiendo en el puerto 13 el nivel de salida bajo, es decir, proporcionará 0 voltios, pero también usando la variable creada en la línea 2 y la constante LOW por defecto.

Conociendo Arduino Uno - Clase 3 13

Tenga en cuenta que las otras líneas de código son exactamente las mismas que las utilizadas en el bosquejo de la lección anterior, por lo que no hay necesidad de hacer más comentarios. También tenga en cuenta que este sketch hará lo mismo que el sketch escrito transferido al tablero en la última lección.

Cargando un croquis

Ha llegado el momento de transferir (cargar) el sketch a la placa Arduino. Para ello, haga clic en el botón Cargar como se muestra en la siguiente figura.

Conociendo Arduino Uno - Clase 3 13

Los dos LEDs, RX y TX, deben parpadear para indicar comunicación. Eche un vistazo más de cerca a la figura de abajo.

Al final de la carga se muestra una advertencia en la parte inferior del IDE como se muestra en la siguiente figura.

Conociendo Arduino Uno - Clase 3 15

Conociendo Arduino Uno - Clase 3 16

Y para terminar, observa que el LED del Arduino Uno empieza a parpadear cada 1 segundo.

Conociendo Arduino Uno - Clase 3 17

  • Conociendo Arduino Uno – Clase 2 – Introducción
  • Conociendo Arduino Uno

Así, llegamos al final de esta tercera clase y nos preparamos para estudiar el voltaje y la corriente, así como la resistencia y el LED de los componentes, como se le llama comúnmente. Hasta entonces y buenos estudios.
Conociendo Arduino Uno - Clase 3 18 Conociendo Arduino Uno - Clase 3 18

Curso de Arduino: Esencial

01h31min en 10 clases de vídeo

Watch

This is another 75 courses.

ACCESO LIMITADO

Contenido relacionado

Deja un comentario