martes, 11 de noviembre de 2014

Empezando con Arduino

Éste es el primero de una serie de posts que irán descubriendo poco a poco el uso de microcontroladores para realizar diferentes tareas. Éstas irán creciendo en dificultad y/o complejidad progresivamente, con la idea de ir consolidando el conocimiento  de manera gradual, y sobre todo práctica.
¿Es necesario tener  conocimientos previos de electrónica? Sí, o al menos recomendable. Aunque trataré de explicar en algunos montajes ciertas propiedades sobre los componentes nuevos que vayan apareciendo, no profundizaré en ello, con lo que puede que queden algunas lagunas. En cualquier caso se admiten preguntas para aclarar cualquier duda.
¿Y de programación? Estamos en el mismo caso que antes, tener ciertas nociones de programación orientada a objetos no vendría mal. El lenguaje del microcontrolador que usaré para los ejemplos, el Arduino, es muy similar al Lenguaje C de programación. Intentaré ser todo lo descriptivo posible con el código, e id añadiendo la dificultad paulatinamente.
¿Necesitaré algo más a parte del Arduino? Sí, pero es barato. Yo te recomendaría que aparte de hacer con un surtido de leds, microinterruptores, pulsadores, motores, etc. comprases una placa de pruebas “protoboard o breadboard” en inglés. Este componente de facilitará enormemente el montaje de los prototipos. Puedes contemplar la idea de hacerte con un kit.
¿Y el hexacóptero-nuclear-radio controlado-GSM-GPS-APSC-ABS con junta de trócola galvanizada en qué capítulo vendrá? Lo siento, de momento no pretendo llegar a los superusers. Todo se andará, pero hay cientos de foros y webs con proyectos muy avanzados, casi todas en inglés, para ese menester. La idea de este sitio es aprender desde un nivel básico hasta…. El tiempo lo dirá. ¡Comencemos!

¿Qué es Arduino?
Es un pequeño microcontrolador “open source” que integra varias entradas y salidas para intercomunicarse con el exterior. Aquí podremos conectar interruptores, leds, motores, etc. Dispone también de un puerto USB, que puede servir de alimentación, y que hace las funciones de comunicación con el ordenador.
El lenguaje que utiliza es el Processing Language (www.processing.org), y el software que utiliza es el IDE (integrated development environment), que deberemos instalar en nuestro ordenador, desde su web (www.arduino.cc). Este software se distribuye para Windows, OSX y Linux.
El Arduino lo podemos conseguir de muchos sitios. Aunque el nombre de Arduino está reservado para los creadores, podemos encontrar clones compatibles con otras denominaciones normalmente acabadas en “duino”.
¿Merece la pena comprar un kit? Sí y no. Por precio posiblemente no, pero a cambio suelen venir con una serie de componentes, resistencias, leds, transistores, etc. que ayudan a completar muchos ejemplos. Lo dicho, si tienes alguna tienda de electrónica en tu barrio, prueba primero allí. (Luego nos quejaremos cuando busquemos un potenciómetro, esa tienda haya cerrado y esperemos un mes a que venga de China).
Una vez hechas las presentaciones, y si ya has pasado por caja, tendrás una placa con un aspecto parecido a este:



Como puedes observar, a parte del microcontrolador, tenemos el puerto USB; una entrada externa de alimentación, varios componentes que facilitan la comunicación con el PC, y las entradas y salidas.
Si ya has instalado el programa , (recuerda si no lo puedes descargar desde aquí), es momento de lanzar el programa, y conectar la placa por USB.
Como primera experiencia y para comprobar el correcto funcionamiento del arduino, cargaremos uno de los programas de ejemplo de lo que dispone el programa. Ejecutaremos el ejemplo Blink.
Archivo > Ejemplos > 01.Basics > Blink
Este programa hace parpadear el led que se encuentra en la propia placa base. Este led está conectado al puerto 13.
Demos un vistazo al código del programa. Para ello usaré una traducción del texto en inglés:

Int led = 13;                                       Definimos una constante integer con un nombre fácilmente identificable. Aprovechamos para darle un valor, en este caso el nº 13, que es el puerto donde está conectado el led de prueba.

void setup() {                                   Comenzamos la declaración de los puertos de entrada/salida,
pinMode(led, OUTPUT);            en este caso, con esta sentencia declaramos el pin led (puerto
}                                                             13), como salida (OUTPUT)

void loop() {                                      Comienza la rutina en bucle del programa. En este caso se
  digitalWrite(led, HIGH);             repetería indefinidamente. Con digitalWrite ponemos el pin
  delay(1000);                                    definido como led, a “1”, o nivel alto. Esto hará que el led se
  digitalWrite(led, LOW);              encienda. Aplicamos un retardo de 1 segundo y lo apagamos.
  delay(1000);                                    Es decir, escribimos en el pin led un “0”, o nivel bajo, y
}                                                             volvemos a aplicar un retardo de 1 segundo.


En este punto, y después de transferir el programa al Arduino, el led de la placa, debería comenzar a parpadear a intervalos de 1 segundo.
Podemos empezar a jugar un poco, y modificar el valor del delay para obtener velocidades de parpadeo diferentes, y no necesariamente simétricas. Es decir, podemos definir valores diferentes para el apagado y el encendido. No debemos olvidar transferir el programa después de cada modificación, para observar el resultado.

En este video, explico como configurar el puerto serie en el programa Arduino, como cargar y transferir el sketch. Cómo modificar los valores para cambiar el tiempo de retardo, etc



Resumiendo
·         Todo lo que pongamos en el programa o sketch, comprendido entre los signos :
/* texto
Explicativo*/
Será obviado por el compilador. De todas maneras esto facilita que el programa sea inteligible por los demás y por nosotros mismos.
Lo mismo sucede con lo que aparece en cada línea después de dos barras //.
·         Podemos definir constantes y variables antes de ejecutar el programa. Los nombres que les pongamos ayudarán a comprender el programa. Existen muchos tipos de variables, que ya iremos definiendo.
·         Digitalwrite (nº de pin, Estado) , pone a 0 ó 1 el pin seleccionado
o   Nº de pin, puede ser un número , constante o variable definida previamente, que no puede ser mayor que el número de puertos de nuestro Arduino, y que se debe corresponder con una salida real (sea un led, relé, altavoz, etc)
o   Estado, que puede tener dos valores, HIGH para encendido o 1, y LOW para apagado o 0.
·         Delay (tiempo),que puede ser número, constante o variable, aplica un retardo en el flujo del programa. El Arduino no pasará a la siguiente instrucción, hasta que cuente hasta ese número. Con la base de tiempos del Arduino UNO, 1000 equivale a 1 segundo.


No hay comentarios:

Publicar un comentario