Está en la página 1de 11
Módulo 2: Placas Arduino DOCENTES Mariela Burghardt Fernando Princich
Módulo 2: Placas Arduino DOCENTES Mariela Burghardt Fernando Princich

Módulo 2:

Placas Arduino

DOCENTES Mariela Burghardt Fernando Princich

Módulo 2: Placas Arduino DOCENTES Mariela Burghardt Fernando Princich

Módulo 2: Programación de placas Arduino

Material Complementario:

CONCEPTOS INICIALES DE PROGRAMACIÓN

OBJETIVOS

Reconocer los diferentes conceptos de programación, tipos de datos, variables, etc., que pueden utilizarse en un proyecto Arduino, y cuyo estudio se profundizará en el siguiente módulo de esta Diplomatura.

INTRODUCCIÓN A LA PROGRAMACIÓN. CONCEPTOS INICIALES.

Variables

¿Qué es una variable?

CONCEPTOS INICIALES. Variables ¿Qué es una variable? Una variable es una representación en lenguaje natural de

Una variable es una representación en lenguaje natural de una posición de memoria de un dispositivo digital.

Un buen ejemplo para comprender esto sería la lista de contactos de un teléfono. Ninguno de nosotros es capaz de recordar de memoria todos los números de teléfono de la gente que conocemos, pero si sus nombres. De modo que cuando se busca en la libreta de contactos, los buscamos por nombre. El nombre sería el equivalente a la variable. Se trata de la dirección de memoria en la que almacenas el número de teléfono.

El compilador de los programas, se encarga de convertir las variables a direcciones de memoria.

Los nombres de variables pueden tener letras, números y el símbolo ’_’. Deben empezar por una letra (pueden empezar por ’_ ’ pero no es recomendable pues es el criterio que usan las rutinas de la biblioteca).

Pueden llevar mayúsculas y minúsculas. El lenguaje C es case sensitive, es decir que distingue entre mayúsculas y minúsculas.

Por convención de buenas prácticas de programación, las variables se escriben en minúscula y las constantes en mayúscula.

Es recomendable usar estas reglas dentro del código para el nombramiento de variables, ya sea en minúscula con palabras separadas con guiones bajos, o palabras compuestas, con la primera palabra que inicia en minúsculas.

Diplomatura en programación y robótica educativa - 2019 Página | 2

Las palabras reservadas if, else, int, double, etc

Módulo 2: Programación de placas Arduino

no pueden usarse como nombres de variables.

Nombres para evitar: no usar los caracteres ‘l’ (letra ele en minúscula), ‘O’ (letra o mayúscula), o ‘I’ (letra i mayúscula) como simples caracteres para nombres de variables, para evitar confusiones a la hora de leer el código.

Declaración de variables.

Una variable tiene un nombre, un valor y un tipo. Con la asignación, se puede cambiar el valor de

la variable.

Todas las variables deben ser declaradas antes de su uso. Las declaraciones deben aparecer al principio de cada función o bloque de sentencias. Al declarar una variable se debe indicar primero el tipo de variable y luego su nombre, opcionalmente se le puede dar un valor, lo que se llama inicializar la variable.

La declaración consta de un tipo de variable y una lista de variables separadas por coma.

int i,j;

float x, pi;

unsigned long longitud, contador;

Las variables pueden inicializarse en la declaración

float pi=3.1416;

unsigned long contador=0;

Puede utilizarse el modificador const para indicar que la variable no puede ser cambiada en tiempo de ejecución.

const float e=2.7182;

La declaración de una variable sólo debe hacerse una vez en un programa, pero el valor de la variable se puede cambiar en cualquier momento usando aritmética y reasignaciones diversas.

Una variable puede ser declarada en una serie de lugares del programa y en función del lugar en donde se lleve a cabo la declaración, esto determinará en qué partes del programa se podrá hacer uso de ella, es lo que se denomina ámbito de la variable o scope.

C y C++ se dice que son lenguajes de tipado estático, es decir, la comprobación de tipificación se

realiza durante la compilación, y no durante la ejecución, por lo tanto no podemos cambiar el tipo de una variable en tiempo de ejecución. Otros lenguajes, generalmente interpretados, son de tipado dinámico y una misma variable puede tomar valores de distinto tipo en distintos

momentos, como PHP o python.

Diplomatura en programación y robótica educativa - 2019 Página | 3

Ámbito de una variable

Módulo 2: Programación de placas Arduino

de una variable Módulo 2: Programación de placas Arduino Una variable global es aquella que puede

Una variable global es aquella que puede ser vista y utilizada por cualquier función y estamento de un programa. Esta variable se declara al comienzo del programa, antes de setup().

Una variable puede ser declarada al inicio del programa antes de la parte de configuración setup(),

a nivel local dentro de las funciones, y, a veces, dentro de un bloque, como para los bucles del

tipo if

for

,

etc.

En función del lugar de declaración de la variable, se determinará el ámbito de aplicación o la capacidad de ciertas partes de un programa para hacer uso de ella.

Una variable local es aquella que se define dentro de una función o como parte de un bucle. Sólo es visible y sólo puede utilizarse dentro de la función en la que se declaró. Por lo tanto, es posible tener dos o más variables del mismo nombre en diferentes partes del mismo programa que pueden contener valores diferentes, pero no es una práctica aconsejable porque complica la lectura de código.

En el reference de Arduino hay una muy buena explicación del ámbito de las variables:

El modificador de variable static, es utilizado para crear variables que solo son visibles dentro de

una función, sin embargo, al contrario que las variables locales que se crean y destruyen cada vez que se llama a la función, las variables estáticas mantienen sus valores entre las llamadas a las funciones.

Las variables estáticas solo se crean e inicializan la primera vez que la función es llamada. Ver ejemplo en: http://arduino.cc/en/Reference/Static

Constantes

En programación, una constante es un valor que no puede ser alterado/modificado durante la ejecución de un programa, únicamente puede ser leído. Una constante corresponde a una

Diplomatura en programación y robótica educativa - 2019 Página | 4

Módulo 2: Programación de placas Arduino

longitud fija de un área reservada en la memoria principal del ordenador, donde el programa almacena valores fijos. Por ejemplo, el valor de PI = 3.1416.

El modificador const, modifica el comportamiento de una variable haciéndola “read-only”, esto significa que puede usarse como cualquier otra variable, pero su valor no puede ser cambiado.

Más información en: http://arduino.cc/en/Reference/Const

El entorno de programación de Aduino también tiene predefinidas unas constantes o expresiones, que facilitan la lectura del código: http://arduino.cc/en/Reference/Constants

En C++ las constantes también pueden ser definidas a nivel de módulo antes de compilar, de forma que no ocupan memoria y su nombre es sustituido por el valor definido en el proceso de compilación. Estas constantes por norma se escriben con letras en mayúscula y guiones bajos separando palabras. Por ejemplo, MAX_OVERFLOW y TOTAL. Se usa la palabra clave #define para definirlas.

Tipos de Datos

En programación, un tipo de dato informático o simplemente tipo es un atributo de los datos que indica al ordenador (y/o al programador) sobre la clase de datos que se va a trabajar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar.

Los tipos de datos comunes son: números enteros, números con signo (negativos), números de coma flotante (decimales), cadenas alfanuméricas, estados (booleano), etc.

Tipos de datos usados en Arduino:

estados (booleano), etc. Tipos de datos usados en Arduino: Diplomatura en programación y robótica educativa -

Diplomatura en programación y robótica educativa - 2019 Página | 5

byte

Módulo 2: Programación de placas Arduino

Byte almacena un valor numérico de 8 bits sin decimales. Tienen un rango entre 0 y 255. Sin signo.

int (entero)

Enteros son un tipo de datos primarios que almacenan valores numéricos de 16 bits sin decimales comprendidos en el rango 32.767 a -32.768.

Las constantes enteras son números utilizados en el sketch, estos números son tratados como enteros, pero podemos cambiar su comportamiento.

Las constantes enteras son tratadas como base 10 (Decimal), pero con una notación especial podemos cambiar su representación en otras bases.

Binario B00001110

Octal 0173

Hexadecimal 0x7C3

Para forzar a formato unsigned: 78U ó 78u

Para forzar a formato long: 1000L ó 1000l

Para forzar a formato unsigned long: 2521UL ó 2521ul

Más información en: http://arduino.cc/en/Reference/IntegerConstants

long (entero largo)

El formato de variable numérica de tipo extendido “long” se refiere a números enteros (tipo 32 bits = 4 bytes) sin decimales que se encuentran dentro del rango -2147483648 a 2147483647.

Ver más información en:

float (decimales)

El formato de dato del tipo “coma flotante” o “float” se aplica a los números con decimales. Los números de coma flotante tienen una mayor resolución que los de 32 bits que ocupa con un rango comprendido 3.4028235E+38 a -3.4028235E+38.

Diplomatura en programación y robótica educativa - 2019 Página | 6

Módulo 2: Programación de placas Arduino

Los números de punto flotante no son exactos, y pueden producir resultados extraños en las comparaciones. Los cálculos matemáticos de coma flotante son también mucho más lentos que los del tipo de números enteros, por lo que debe evitarse su uso si es posible. En Arduino el tipo de dato double es igual que el float.

Ver:

Las constantes de coma flotante se usan para facilitar la lectura del código, pero aunque no se use, el compilador no va a dar error y se ejecutará normalmente.

10.0 se evalúa como 10

2.34E5 ó 67e-12 (expresado en notación científica)

Para entenderlo mejor: la representación de coma flotante (en inglés floating point, ‘punto flotante’) es una forma de notación científica usada en las CPU, GPU, FPU, etc, con la cual se pueden representar números racionales extremadamente grandes y pequeños de una manera muy eficiente y compacta, y con la que se pueden realizar operaciones aritméticas. El estándar para la representación en coma flotante es el IEEE 754. http://es.wikipedia.org/wiki/Coma_flotante

Signo (s) 1: negativo , 0: positivo (bit 31)

Mantisa (M) La mantisa incluye 23 bits (bit 0 22). Representa la parte derecha de número decimal.

Exponente (e) El exponente incluye 8 bits (bit 23 30).

Exponente (e) El exponente incluye 8 bits (bit 23 30). Diplomatura en programación y robótica educativa

Diplomatura en programación y robótica educativa - 2019 Página | 7

Módulo 2: Programación de placas Arduino

Módulo 2: Programación de placas Arduino boolean Un booleano solo tiene dos valores true y false.

boolean

Un booleano solo tiene dos valores true y false. Cada booleano ocupa un byte de memoria. Ver:

char (carácter)

Un char representa un carácter que ocupa 1 byte de memoria. Los caracteres simples se representan con comillas simples ‘a’ y para múltiples caracteres o strings se representan con comillas dobles “Hola!”.

Recordar que los caracteres se almacenan como números usando la codificación ASCII, lo que significa que es posible hacer operaciones aritméticas con los caracteres.

Ver lo siguientes enlaces del Arduino reference:

Conversiones de tipos (Casting)

En ocasiones es necesario forzar el cambio de tipo de dato (casting). Podemos usar las siguientes funciones:

Diplomatura en programación y robótica educativa - 2019 Página | 8

Operadores

Módulo 2: Programación de placas Arduino

Un operador es un elemento de programa que se aplica a uno o varios operandos en una expresión o instrucción. Un operador, es un símbolo que indica al compilador que se lleve a cabo ciertas manipulaciones matemáticas o lógicas.

Los operadores son símbolos que representan una operación como las básicas de suma, resta, multiplicación y división, (+, -, *, /) existen las booleanas (true y false) para las operaciones de comparación como AND, O, NOT, o las de comparación ==, !=, =, que son muy utilizados en las instrucciones de tipo if.

Aritméticos

Los operadores aritméticos que se incluyen en el entorno de programación son suma, resta, multiplicación, división, módulo y asignación. Estos devuelven la suma, diferencia, producto, cociente o resto (respectivamente) de dos operandos.

La operación se efectúa teniendo en cuenta el tipo de datos que hemos definido para los

operandos (int, double, float, etc

9 / 4 devuelve de resultado 2 en lugar de 2,25 ya que el 9 y 4 se valores de tipo entero “int” (enteros) y no se reconocen los decimales con este tipo de datos.

por lo que, por ejemplo, si definimos 9 y 4 como enteros “int”,

),

Esto también significa que la operación puede sufrir un desbordamiento si el resultado es más grande que lo que puede ser almacenada en el tipo de datos. Recordemos el alcance de los tipos de datos numéricos explicado anteriormente.

Si los operandos son de diferente tipo, para el cálculo del resultado se utilizará el tipo más grande de los operandos en juego. Por ejemplo, si uno de los números (operandos) es del tipo float y otra de tipo integer, para el cálculo se utilizará el método de float es decir el método de coma flotante y el resultado será un float

Elegir el tamaño de las variables de tal manera que sea lo suficientemente grande como para que los resultados sean lo precisos que deseamos. Para las operaciones que requieran decimales utilizar variables tipo float, pero hay que ser conscientes de que las operaciones con este tipo de variables son más lentas a la hora de realizarse el cómputo.

Arrays

Un array es un conjunto de valores a los que se accede con un número índice. Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y el número del índice. El primer valor de la matriz es el que está indicado con el índice 0, es decir el primer valor del conjunto es el de la posición 0. Un array tiene que ser declarado y opcionalmente asignados valores a cada posición antes de ser utilizado.

Diplomatura en programación y robótica educativa - 2019 Página | 9

int miArray[] = {valor0, valor1, valor2…}

Módulo 2: Programación de placas Arduino

Del mismo modo es posible declarar una matriz indicando el tipo de datos y el tamaño y posteriormente, asignar valores a una posición especifica:

int miArray[5];

miArray[3] = 10;

Para leer de un array basta con escribir el nombre y la posición a leer:

x = miArray[3];

Las matrices se utilizan a menudo para estamentos de tipo bucle, en los que la variable de incremento del contador del bucle se utiliza como índice o puntero del array.

Utilizando un bucle tipo for, el contador comienza en cero 0 y escribe el valor que figura en la posición de índice 0 en la serie que realizada sigue escribiendo en las siguientes posiciones. Con un bucle for podremos recorrer un array ya sea para leerlo o para escribir en él.

int i;

for (i = 0; i < 5; i = i + 1) {

Serial.println(myPins[i]);

}

Los arrays sólo pueden contener elementos del mismo tipo de datos.

No se puede crear un array sin definir su tamaño, sino da un error de compilación.

Diplomatura en programación y robótica educativa - 2019 Página | 10

Links de referencia:

Módulo 2: Programación de placas Arduino

- Curso Básico de Arduino: Variables y operadores. https://www.arduinoparatodos.com/curso-basico-arduino-variables-operadores/

Diplomatura en programación y robótica educativa - 2019 Página | 11