Lección 2 – Arduino – Introducción al lenguaje de programación de Arduino

Como has visto en las anteriores lecciones a este Arduino cuenta con su propio lenguaje de programación. Es preferible que cuando quieras programar en Arduino cuentes con un poco de experiencia en el área de programación ya que esto hará más ágil el aprendizaje de estas lecciones. Si no tienes mucha experiencia programando te recomendamos que no te desesperes, tal vez entiendas rápido que es lo que estamos haciendo. De otra manera si te gustaría aprender más acerca de programación te recomendamos paginas como Codeacademy http://www.codecademy.com/es/learn. Por lo pronto sigamos adelante y aprendamos más de acerca de la programación de Arduino. Vamos a dividir en secciones este post a manera que sea más fácil su comprensión.

 

Software de desarrollo

En la imagen hemos señalado con letras algunos de los botones que vamos a describir.

Captura_de_pantalla_01_06_13_18_21

a.-Verificar: Ayuda a que el entorno de desarrollo nos revise nuestro código, posiblemente hayamos programado o escrito algo de manera incorrecta pero con este botón se podrá revisar para saber si todo está bien.

b.-Cargar: Una vez que verifiquemos que nuestro código está bien escrito necesitaremos cargar el código a la tarjeta. Con este botón cargaremos nuestro proyecto en la tarjeta para poder correrlo. Este botón será el que más utilizaremos en todas las lecciones y proyectos con Arduino.

c.-Nuevo: Es para crear un nuevo proyecto, en nuestro caso no lo usaremos mucho.

d.- Abrir: Abre proyectos existentes o “demos” que están guardadas.

e.-Guardar: Guarda el proyecto que tenemos abierto en la ventana.

Nota: Posiblemente estes usando otros sistemas operativos como windows o Linux, pero no te preocupes, los botones tienen prácticamente las mismas funciones.

Estructura Básica de un programa

La estructura de nuestro programas de Arduino son demasiado simples y se conforman de dos partes o funciones las cuales son:

  • setup() : En esta parte se se hace la preparación del programa, por ejemplo asignación de los pines de Entrada/Salida.
  • loop() : Es la ejecución de nuestro programa, esta parte es la que siempre se está ejecutando. En pocas palabras es nuestro programa principal.

Como ya habíamos dicho antes las dobles diagonales (“//”) significan comentario, y todo lo que escribamos después de estas será ignorado por nuestro programa y no se ejecutará.

void setup() { 

} 
void loop() {

}

Variables

Una variable es un tipo de dato, que como su nombre lo dice su valor o contenido varia dependiendo la operación que hagamos con ella. Existen diferentes tipos de variables como: int, float, char, etc. Por el momento no explicaremos todas pero conforme vayamos necesitando en la lecciones las explicaremos, por lo pronto describiremos las más comunes:

  • Byte: Almacena valores numéricos de 8 bits, lo que significa que solo podemos almacenar valores de 0 a 255.
  • Int: Almacena valores enteros de 16 bits, su rango va desde -32,768 a 32,767.
  • long: Almacena valores de 32 bits, su rango va desde -2,147,483,648 a 2,147,483,647.
  • float: Almacena valores de tipo flotantes de 32 bits, significa que podemos hacer uso de decimales. Su rango: -3.4028235E+38 a 3.4028235E+38.
  • char: Es un tipo de dato que ocupa un byte de memoria y almacena un valor de carácter. Los carácteres literales se escriben con comillas simples: ‘A’ (para varios carácteres -strings- utiliza dobles comillas “ABC”).

Para poder usar una variable dentro de nuestro programa primero tenemos que declararla, ¿qué significa esto?, significa que le decimos al programa que nos reserve un espacio en memoria para nuestro dato variable.

Las variables pueden ser globales o locales. Las variables globales son usadas en todo el ciclo de vida del programa, las variables locales solamente se usan en pequeños pedazos de código y después ya no se utilizan.

Por lo general las variables globales se declaran antes del setup():

int var;                //Es una variable global

void setup() {

// No se requiere modificar en el setup()

}

Las variables pueden tomar valores desde un principio, por ejemplo:

 int var = 0;

Esto significa que nuestra variable de tipo int (entero) llamada “var” tomara el valor de 0 para empezar a correr el programa, conforme avance nuestro programa avanza “var” puede tomar otros valores.

Operaciones Aritméticas

En este lenguaje de programación existen operadores aritméticos tales como suma(‘+’), resta(‘-’), multiplicación (‘*’), división (‘/’), residuo(‘%’) y asignación(‘=’). Estos operadores actúan sobre las variables y constantes por ejemplo:

int x, y; //Aquí declaramos dos variables las cuales son ‘x’ y ‘y’

//Le damos valores a nuestras variables

x = 0;

y = 5;

//Hacemos una operación con nuestras variables

//Aquí sumamos el valor de y (que es 5), se lo sumamos a 5 y lo guardamos en x

//Por lo tanto x va a valer 10 después de la ejecución de este pequeño código

x = y + 5;

Operaciones Lógicas

Así como existen operaciones aritméticas existen también operadores lógicos como:

  • And (&&)
  • Or (||)
  • Not(!)

Estos operadores se pueden usar dentro de operaciones condicionales o en una sentencia if. Más adelante hablaremos más de esto. Ahora solo lo explicaremos:

&& (AND)

Verdadero sólo si ambos operadores son Verdadero, por ejemplo:

if (x == 5  && y == 10) {

// …

}

esa sentencia ‘if’ solo se ejecutará si ‘x’ vale 5 y si ‘y’ vale 10.

|| (OR): 

Verdadero si alguno de los dos (o los dos) operadores son Verdadero, por ejemplo:

if (x == 5  || y == 10) {

// …

}

esa sentencia ‘if’ solo se ejecutará si ‘x’ vale 5 y/o si ‘y’ vale 10.

! (NOT)

Verdadero si el operador es Falso, por ejempo:

if (!x) {

// …

}

Es Verdadero si el valor de x es Falso .

Tal vez en estos momentos no entiendas mucho de lo que estamos hablando pero no te preocupes, conforme vayamos avanzando y aprendiendo más todo tendrá sentido.

Estructuras de control o decisión

Existen diferentes estructuras para la toma de decisiones en un programa, algunas sentencias nos sirven para hacer algo “si” pasa algo o “mientras” pasa algo. Vamos a la explicación y tal vez con los ejemplos nos entendamos mejor.

Estructura “if”, condicional

if, el cual puede ser usado en conjunto con uno o más operadores de comparación, comprueba si cierta condición se cumple, por ejemplo, si un input posee un valor mayor a cierto número. El formato para una comprobación if es el siguiente:

if (algunaVariable > 50)

{

// hacer algo aquí.

}

Este programa comprueba si la variable algunaVariable es mayor a 50. Si lo es, el programa toma una acción particular. Dicho de otra forma, si la declaración escrita dentro de los paréntesis es verdadera (true), el código dentro de las llaves se ejecutará. Sino, el programa ignora dicho código.

Estatuto if…else

if/else permite mayor control sobre el flujo del código que la declaración if básica, por permitir agrupar múltiples comprobaciones. Por ejemplo, un input análogo podría ser comprobado, y tomarse una acción si el valor del inputes menor a 500, y, otra acción se ser igual o mayor a 500. El código se vería así:

if (pinCincoInput < 500)

{

// acción A

}

else

{

// acción B

}

else puede proceder a una comprobación if, de esta forma, se pueden realizar múltiples comprobaciones en una misma estructura de condiciones.

Estatuto for

La declaración for es usada para repetir un bloque encerrado entre llaves. Un incremento de un contador es usado, normalmente, para aumentar y terminar con el bucle. La estructura for es muy útil para la mayoría de las operaciones repetitivas, y habitualmente se usa para operaciones con vectores, para operar sobre conjuntos de datos/pines

El ciclo for tiene tres partes o argumentos en su inicialización:

for (inicialización; condición; incremento) {

//función(es);

}

La inicialización , o inicialización, se produce sólo la primera vez. Cada vez que se va a repetir el bucle, se revisa la condición, o condición: si es cierta, el bloque de funciones (y el incremento del contador) se ejecutan, y la condición vuelve a ser comprobada de nuevo. Si la condición es falsa, el ciclo termina.

Ciclo while()

Los ciclos while se ejecutan continuamente, hasta que la expresión de dentro del paréntesis, (), pasa a ser falsa. Algo debe modificar la variable comprobada, el ciclo while nunca terminará. Lo que modifique la variable puede estar en el código, como una variable que se incrementa, o ser una condición externa, como el valor que da un sensor.

while(expresion){

// sentencia(s)

}

Ciclo do…while

El ciclo “‘do’” trabaja de la misma manera que el ciclo “‘while’”, con la excepcion de que la condición se comprueba al final del bucle, por lo que este bucle se ejecuta “siempre” al menos una vez.

do

{

// bloque de instrucciones

} while (condición);

Esto fue una pequeña introducción a la programación de Arduino, solo tocamos pequeños temas que estaremos usando el lecciones posteriores. Será normal que si ya has programado antes todo lo anterior te parezca muy familiar, eso es bueno y servirá como un repaso. Si nunca has programado y esto te parece totalmente nuevo no te preocupes, poco a poco conforme avancemos en las lecciones empezaras a entender.

Si quieres empezar a conocer más por tu cuenta te invitamos a que le des un vistazo a la pagina de referencia de Arduino donde viene un poco más explicado y con algunos ejemplos.

http://arduino.cc/es/Reference/HomePage

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s