You are on page 1of 10

Tutorial para programar Arduino (II)

En este tutorial aprende para que sirve cada comando del programa que lee una entrada analgica de Arduino y podrs comprender el funcionamiento para realizar tus circuitos digitales.

void setup() { // Comienza la configuracin del programa Serial.begin(9600); // Abrimos comunicacin serie a 9600 baudios. } void loop() { // Creamos un bucle infinito apartir de aqui. int sensorValue = analogRead(A0);// Declaramos la variable numerica sensorValue y todo lo que entre por la entrada analgica A0, se introducir en la variable. Serial.println(sensorValue); //Imprimir por puerto serie el valor de la variable. delay(1); // Crear un retardo de 1 segundo. }

Tutorial sobre estructuras de programacin en C

Este tutorial trata sobre la programacin en lenguaje C, utilizado en las placas Arduino.

Todo programa en el lenguaje de programacin C, se divide en varios bloques principales y dependientes el uno del otro. El primer gran bloque de programacin es el lugar donde vamos a declarar los recursos utilizados en el programa principal. En este bloque declararemos todas las variables que vamos a utilizar, estableceremos el nombre que le asignamos a cada pata del microprocesador, etc. Una variable es un recurso o un espacio en la memoria volatil del microprocesador la cual utilizaremos para introducir valores digitales o analgicos y poder trabajar con ellos; los podremos incrementar, decrementar, comparar, sumar a otros valores, enviar, etc.

El segundo gran bloque de programacin es el programa principal; se puede encontrar en un programa apartir de la sentencia void setup(). Apartir de aqu, podemos distinguir otras 2 partes, una parte que solo se ejecutara una sola vez al iniciar el programa y otra parte en la que se generar un bucle infinito. La parte que solo se ejecuta una vez suele ser utilizada para iniciar comunicaciones serie, i2c, isp, etc. declarar que patas del microprocesador son entradas o salidas y tambin puede ser utilizada para asignar valores predefinidos a variables. El bucle infinito el cual se encuentra apartir de void loop() abarca el programa que se ejecturar en el microprocesador. Como podemos ver en la imagen siguiente de un programa de ejemplo de Arduino se encuentran todos los bloques mencionados.

Tambin podemos observar que cada grupo de bloques se encuentra comprendido entre 2 corchetes que los delimita, que cada sentencia acaba con punto y coma y que se pueden agregar comentarios al programa sin que afecte a este aadiendo 2 barras laterales. Uso de las variables en programacin arduino Este tutorial sencillo pero necesario trata sobre el uso de las variables en la programacin de Arduino. Antes de leer este tutorial sera conveniente que leas el anterior sobre estructuras de la programacin de Arduino o visites la seccin de tutoriales de la web. Una variable es el espacio asignado a un dato dentro de la memoria voltil del microcontrolador de Arduino, estos datos sern eliminados automticamente cuando le desaparezca la alimentacin al microcontrolador. A cada una se le asigna un espacio como si se tratara de una estanteria, cada variable siempre ser almacenada en su sitio.

Hay varios tipos de variables pero solo voy a explicar las que quiz ms useis en Arduino y mencionar algn tipo ms. La primera variable sera char, esta variable almacenar 1 solo carcter en formato ASCII, esto quiere decir que si le pides que almacene un nmero, el programa le asignar automticamente el valor en ASCII de ese numero.

Tan solo puede almacenar 1 caracter si se quisiera almacenar varios caracteres se podra usar strings (cadena de caracteres). Otra variable muy usada sera int, esta variable almacenar datos numricos hasta 2 bytes. De igual manera que ocurre con la variable char si pretendes introducir un caracter ASCII a una variable int automticamente se almacenar su correspondiente valor numrico. La ltima variable que explicar ser boolean, esta almacena datos opuestos como verdadero o falso, 1 o O, encendido o apagado, etc. Hay ms tipos de variables como pueden ser unsigned char, unsigned int, byte,word, long, float, double, etc. Cada una de las variables es diferente pero con las explicadas se puede trabajar perfectamente en un programa sencillo. En prximos tutoriales explicar como declarar variables y como usarlas. Estructuras condicionales para programar Arduino Con este tutorial entraremos en la programacin bsica del lenguaje C, usado en Arduino. Si llegas a este tutorial sin ver los anteriores te recomiendo que te pases por el listado de tutoriales de programacin de Arduino. Las estructuras condicionales son las sentencias utilizadas para decir al programa que haga una cosa u otra. Un ejemplo para entenderlo mejor: Si tengo hambre como pan Sino tengo hambre no hago nada En este ejemplo, diriamos que tener o no tener hambre es lo que nos va a permitir ejecutar una accin u otra. Otro ejemplo, quiz mas sencillo: Mientras est pulsado el botn A, se encienda el led A, sino se pulsa no se enciende nada y cuando se suelte se apague. En este ejemplo, depender del botn A que se ejecute una accin o no. Otro ejemplo de una estructura condicional podra ser:

Cuando tenga hambre, comienzo con 10 manzanas y mientras tenga hambre se van restando automticamente mientras me las como.

Estas estructuras condicionales son while, if, for, switch, do while y cada una se aplicar segn el programa que queramos realizar. Para el primer ejemplo se podra usar la sentencia if, para el segundo ejemplo se podra usar la sentencia while y para el tercer ejemplo la sentencia for. En prximos tutoriales explicar una a una su programacin. Uso de estructura condicional While En este tutorial aprenders el uso de la estructura condicional while, usada para programar Arduino. Sera conveniente que leas antes los tutoriales anteriores a este sobre configuracin de arduino para poder entender este mejor, los podrs encontrar aqu. La estructura while es utilizada para ejecutar una accin en funcin de una o unas variables. Por ejemplo, mientras este pulsado un pulsador, un led permanecer encendido, en el momento que se suelte el pulsador el led se apagar. Es decir, una vez que se deje de cumplir la condicin impuesta, el programa saldr del bucle que genera el while. Un ejemplo de programa para entenderlo mejor con el ejemplo anterior: While(pulsador == 1) { digitalWrite ( led, HIGH); }

Hay que tener en cuenta que esto ir dentro del programa principal mencionado en el articulo de las estructuras de un programa. Dentro del bucle que se encuentra entre los 2 corchetes puedes incluir todas las sentencias que quieras, si por ejemplo quisieras que el led parpadeara cuando se pulsa el pulsador tan solo habra que encender el led, indicarle el tiempo que permanecer encendido, apagarlo e indicarle el tiempo que permanecer apagado. Sera as: While(pulsador == 1) { digitalWrite ( led, HIGH); delay(1000); digitalWrite ( led, LOW); delay(1000); }

As permitiras realizar el parpadeo del led, si te das cuenta, e introducido una sentencia llamada delay; esta sirve para producir un retardo en el programa del tiempo indicado entre parntesis expresado en milisegundos, por lo tanto, el led se encendera y apagara cada 1 segundo. Existe un programa de ejemplo dentro del software de arduino y que podis ver en este otro ejemplo. Tutorial para programar Arduino (I) Comienzo con un tutorial un poco superficial de como programar estas placas y poco a poco ir desarrollando tutoriales un poco mas complejos para los ms expertos. Partiendo de la base de que todos habis ledo el articulo anterior de como instalar los drivers de la placa y acceder a la pantalla principal de arduino, voy a desglosar los cdigos de ejemplo que se incluyen para entender su funcionamiento. Ejemplo de Blink void setup() { pinMode(13, OUTPUT);

} void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } Explicacin void setup: Declaramos el comienzo del programa pinMode(13, OUTPUT); eclaramos el pin 13 de la placa como salida digital

void loop: Declaramos un bucle infinito, el programa entre los corchetes de esta funcin se repetira de forma infinita. digitalWrite(13, HIGH); :Envia un 1 logico al pin 13, es decir, el pin 13 estar activado. delay(1000); :Crea un retardo de 1000 milisegundos en el programa, es decir, el programa se para durante 1 segundo. digitalWrite(13, LOW); Envia un 0 lgico al pin 13, es decir, el pin 13 se desactivara. En resumen, se puede deducir que este programa en primer lugar declara un pin como salida y despus lo activa y lo desactiva con 1 segundo de retardo entre accin y accin. Conectando un diodo LED a la pata 13 podremos observar como este se enciende y se apaga cada 1 segundo.

Uso de estructura condicional If En este tutorial aprenders el uso de la estructura condicional if, usada para programar Arduino. Sera conveniente que leas antes los tutoriales anteriores a este sobre configuracin de arduino para poder entender este mejor, los podrs encontrar aqu. La estructura if es utilizada para ejecutar una accin en funcin de una o unas variables al igual que ocurre con la estructura condicional while. A diferencia de la sentencia while, esta sentencia una vez que la ejecutes entrar en el bucle hasta que se acaben todas las secuencias que tiene que realizar aunque la condicin programada por la que ha entrado ya no exista. Por ejemplo, si indicas mediante un if, que cuando se presione un pulsador empieza a parpadear un LED, aun que se suelte el pulsador el led seguir parpadeando las veces que se lo indiques. Otro ejemplo que quiz aclare mas. Indicas la condicin de que cada vez que tengas hambre comers primer plato, segundo plato, fruta y postre. Cuando se ejecute el programa y tenga hambre, comer lo anterior mencionado, pero si la condicin en este caso que es el hambre desaparece, comer de todas formas primer plato, segundo plato, fruta y postre; repito, aun que finalice la condicin tener hambre en el primer plato comera todo. Un ejemplo parecido al de while pero con if sera asi: If(pulsador == 1); { digitalWrite ( led1, HIGH); delay(1000); digitalWrite ( led2, HIGH); delay(1000); digitalWrite ( led3, HIGH); delay(1000); }

Este programa encendera tres leds, uno detrs de otro cada 1 segundo y aunque el pulsador se soltara durante el encendido del led1 se encenderan los 3 de todas formas. Hay que tener en cuenta que esto ir dentro del programa principal mencionado en el articulo de las estructuras de un programa. Uso de la estructura condicional for En este tutorial aprenders el uso de la estructura condicional for, usada para programar Arduino. Sera conveniente que leas antes los tutoriales anteriores a este sobre configuracin de arduino para poder entender este mejor, los podrs encontrar aqu. Esta estructura condicional de igual manera que las anteriores explicadas en otras entradas (while e If) es utilizada para introducir vuestro programa en bucle que entrar y saldr en funcin de las condiciones que le otorguis. En este caso, se introducirn en el interior de la condicin del for, 3 valores diferentes: En primer lugar, se introducir el valor de inicio de la variable, se pondr dicha variable o dicho valor en la cantidad indicada. En segundo lugar, se introducir la condicin que finalizar la ejecucin de la variable. En ter lugar, se introducir una accin que se ejecutar cada vez que se ejecute el bucle. Ejemplo: int led; for(led=0;led=5; led++) { digitalWrite(9, HIGH) delay(1000); digitalWrite(9, LOW) } En este caso, estamos indicando que la variable LED comienza en cero y pondr a 1 la salida 9, esperar 1 segundo y la pondr a cero de nuevo. Cada vez que se ejecute el bucle, la variable LED aumentar en 1 hasta llegar a 5 y se dejar de ejecutar el bucle.

Por lo tanto, este programa pone en estado alto y bajo o enciende y apaga algo 5 veces.